[MDEV-11039] Add new scheduling algorithm for reducing tail latencies Created: 2016-10-12 Updated: 2023-02-28 Resolved: 2016-10-27 |
|
| Status: | Closed |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB, Storage Engine - XtraDB |
| Fix Version/s: | 10.1.19, 10.2.3, 10.3.0 |
| Type: | Task | Priority: | Critical |
| Reporter: | Sergey Vojtovich | Assignee: | Jan Lindström (Inactive) |
| Resolution: | Fixed | Votes: | 1 |
| Labels: | contribution, foundation | ||
| Issue Links: |
|
||||||||||||||||||||||||||||
| Description |
|
This branch introduces a new scheduling algorithm (Variance-Aware-Transaction-Scheduling, VATS) for the record lock manager of InnoDB and XtraDB. Instead of using First-Come-First-Served (FCFS), the newly introduced algorithm uses an Eldest-Transaction-First (ETF) heuristic, which prefers older transactions over new ones. A configuration parameter (innodb_lock_schedule_algorithm) is introduced for users to choose between VATS and FCFS (the default one). We've extensively tested this algorithm in many workloads. The algorithm is very simple, and the changes are very local, but it significantly improves performance (in terms of average latency and throughput) and predictability (in terms of reduction of tail and quantile latencies) For more details, please refer to this paper http://arxiv.org/abs/1602.01871 |
| Comments |
| Comment by Jan Lindström (Inactive) [ 2016-10-27 ] |
|
commit ea0ae42d8324f6210b95a38bcf76014ce062d1f3 Merge pull request #250 from sensssz/10.1-vats A few fixes for VATS in 10.1 commit 74961760a4837d2deb33336329c28cf9ad9b4e9e A few fixes for VATS in 10.1 commit 021212b525e39d332cddd0b9f1656e2fa8044905 Merge pull request #245 from sensssz/10.1-vats |
| Comment by Arseniy [ 2018-02-01 ] |
|
This configuration parameter prevents mariadb to be built without innodb. |
| Comment by Daniel Black [ 2018-02-01 ] |
|
saur0n I can't follow your comment. You can build mariadb without innodb and in that case innodb_lock_schedule_algorithm wont' exist along with all the other innodb variables. If I'm misunderstanding your assertion can you provide clarification. |
| Comment by Arseniy [ 2018-02-02 ] |
|
When I configure mariadb to be built without innodb, but with wsrep, I get some build errors because innodb-related symbols are not found. |
| Comment by Daniel Black [ 2018-02-02 ] |
|
Ok. Looks like a oversight of this configuration in https://github.com/MariaDB/server/commit/da3a3a68df34c7fef387ce890d3925166edeef2c#diff-bbb9322fe6d0355bb459fe6df3a5126c |
| Comment by Daniel Black [ 2018-02-02 ] |
|
recommend creating a new issue if this doesn't get noticed. We generally don't reopen issues after release is made. As per the commit you issue was caused by attempting to fix |
| Comment by Marko Mäkelä [ 2018-07-05 ] |
|
This contribution was merged to MariaDB 10.1, and it was enabled by default in 10.2, by changing the default value of the new parameter to innodb_lock_schedule_algorithm=vats. In 10.1, the default is innodb_lock_schedule_algorithm=fcfs, using the old algorithm. The algorithm seems to be incompatible with how the lock replication and transaction certification in Galera cluster works. The fix of |
| Comment by Marko Mäkelä [ 2020-10-05 ] |
|
Due to the regression |