Bug #80326 Add new scheduling algorithm for reducing tail latencies (contribution)
Submitted: 10 Feb 2016 0:14 Modified: 10 Feb 2016 7:03
Reporter: OCA Admin (OCA) Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S3 (Non-critical)
Version: OS:Any
Assigned to: CPU Architecture:Any
Tags: Contribution

[10 Feb 2016 0:14] OCA Admin
Description:
This bug tracks a contribution by Jiamin Huang (Github user: sensssz) as described in http://github.com/mysql/mysql-server/pull/51

How to repeat:
See description

Suggested fix:
See contribution code attached
[10 Feb 2016 0:14] OCA Admin
Contribution submitted via Github - Add new scheduling algorithm for reducing tail latencies  
(*) Contribution by Jiamin Huang (Github sensssz, mysql-server/pull/51#issuecomment-181912862): I confirm the code being submitted is offered under the terms of the OCA, and that I am authorized to contribute it.

Contribution: git_patch_58567568.txt (text/plain), 17.00 KiB.

[10 Feb 2016 7:03] MySQL Verification Team
Hello!

Thank you for the report and contribution.

Thanks,
Umesh
[12 Feb 2016 22:17] Jiamin Huang
Hi, I submitted this patch. It introduces a new scheduling algorithm (Variance-Aware-Transaction-Scheduling, VATS) for the record lock manager of InnoDB. Instead of using First-Come-First-Served (FCFS), the newly introduced algorithm chooses between FCFS and Eldest-Transaction-First (ETF), 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). Another parameter (innodb_vats_wait_lock_pct) is introduced to specify the threshold of the percentage of wait locks of choosing ETF over FCFS. 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

Is there anything else I need to do to get it into MySQL?

Thanks!