Log tracking should not acquire log mutex for log reading
Bug #1171699 reported by
Laurynas Biveinis
This bug affects 1 person
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Percona Server moved to https://jira.percona.com/projects/PS |
Fix Released
|
Medium
|
Laurynas Biveinis | ||
5.1 |
Fix Released
|
Medium
|
Laurynas Biveinis | ||
5.5 |
Fix Released
|
Medium
|
Laurynas Biveinis | ||
5.6 |
Fix Released
|
Medium
|
Laurynas Biveinis |
Bug Description
The log tracker thread reads the log in log block size chunks by doing
mutex_
log_group_
group, block_start_lsn, block_end_lsn);
mutex_
This code allows reusing log_group_
Related branches
lp:~laurynas-biveinis/percona-server/bmp-fixes-5.5
- Stewart Smith (community): Approve
-
Diff: 1312 lines (+537/-143) (has conflicts)19 files modifiedPercona-Server/mysql-test/suite/innodb/r/percona_changed_page_bmp.result (+7/-0)
Percona-Server/mysql-test/suite/innodb/r/percona_changed_pages.result (+58/-33)
Percona-Server/mysql-test/suite/innodb/r/percona_changed_pages_empty.result (+1/-0)
Percona-Server/mysql-test/suite/innodb/t/percona_changed_page_bmp.test (+33/-0)
Percona-Server/mysql-test/suite/innodb/t/percona_changed_page_bmp_flush.test (+2/-2)
Percona-Server/mysql-test/suite/innodb/t/percona_changed_pages.test (+99/-28)
Percona-Server/mysql-test/suite/innodb/t/percona_changed_pages_empty.test (+4/-2)
Percona-Server/mysql-test/suite/sys_vars/r/all_vars.result (+0/-2)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_max_changed_pages_basic.result (+78/-0)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_max_changed_pages_basic.test (+60/-0)
Percona-Server/storage/innobase/handler/i_s.cc (+8/-6)
Percona-Server/storage/innobase/include/log0log.h (+3/-1)
Percona-Server/storage/innobase/include/log0online.h (+2/-0)
Percona-Server/storage/innobase/include/os0file.h (+4/-2)
Percona-Server/storage/innobase/log/log0log.c (+13/-3)
Percona-Server/storage/innobase/log/log0online.c (+161/-53)
Percona-Server/storage/innobase/log/log0recv.c (+4/-3)
Percona-Server/storage/innobase/os/os0file.c (+0/-2)
Percona-Server/storage/innobase/srv/srv0start.c (+0/-6)
lp:~laurynas-biveinis/percona-server/bmp-fixes-5.6
- Stewart Smith (community): Approve
-
Diff: 1321 lines (+545/-145)18 files modifiedPercona-Server/mysql-test/suite/innodb/r/percona_changed_page_bmp.result (+8/-1)
Percona-Server/mysql-test/suite/innodb/r/percona_changed_pages.result (+59/-33)
Percona-Server/mysql-test/suite/innodb/r/percona_changed_pages_empty.result (+1/-0)
Percona-Server/mysql-test/suite/innodb/t/percona_changed_page_bmp.test (+34/-4)
Percona-Server/mysql-test/suite/innodb/t/percona_changed_page_bmp_flush.test (+2/-2)
Percona-Server/mysql-test/suite/innodb/t/percona_changed_pages.test (+100/-28)
Percona-Server/mysql-test/suite/innodb/t/percona_changed_pages_empty.test (+4/-2)
Percona-Server/mysql-test/suite/sys_vars/r/all_vars.result (+0/-2)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_max_changed_pages_basic.result (+78/-0)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_max_changed_pages_basic.test (+60/-0)
Percona-Server/storage/innobase/handler/i_s.cc (+8/-6)
Percona-Server/storage/innobase/include/log0log.h (+3/-1)
Percona-Server/storage/innobase/include/log0online.h (+2/-0)
Percona-Server/storage/innobase/include/os0file.h (+4/-2)
Percona-Server/storage/innobase/log/log0log.cc (+13/-3)
Percona-Server/storage/innobase/log/log0online.cc (+165/-56)
Percona-Server/storage/innobase/log/log0recv.cc (+4/-3)
Percona-Server/storage/innobase/os/os0file.cc (+0/-2)
lp:~laurynas-biveinis/percona-server/bmp-fixes-5.1
- Stewart Smith (community): Approve
-
Diff: 1153 lines (+400/-142) (has conflicts)16 files modifiedPercona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_page_bmp.result (+7/-0)
Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages.result (+58/-33)
Percona-Server/mysql-test/suite/innodb_plugin/r/percona_changed_pages_empty.result (+1/-0)
Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_page_bmp.test (+33/-0)
Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_page_bmp_flush.test (+2/-2)
Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages.test (+99/-28)
Percona-Server/mysql-test/suite/innodb_plugin/t/percona_changed_pages_empty.test (+4/-2)
Percona-Server/storage/innodb_plugin/handler/i_s.cc (+8/-6)
Percona-Server/storage/innodb_plugin/include/log0log.h (+3/-1)
Percona-Server/storage/innodb_plugin/include/log0online.h (+2/-0)
Percona-Server/storage/innodb_plugin/include/os0file.h (+4/-2)
Percona-Server/storage/innodb_plugin/log/log0log.c (+13/-3)
Percona-Server/storage/innodb_plugin/log/log0online.c (+162/-54)
Percona-Server/storage/innodb_plugin/log/log0recv.c (+4/-3)
Percona-Server/storage/innodb_plugin/os/os0file.c (+0/-2)
Percona-Server/storage/innodb_plugin/srv/srv0start.c (+0/-6)
A preliminary fix that does not hold the mutex during the log read fixes a performance regression of some 30% on a Sysbench write-only workload and makes its performance ~match the case of log tracking disabled.
This fix still acquires the mutex for the log_group_ calc_lsn_ offset( ) call, which does not seem necessary neither, but removing that seems to be 1) more involved; 2) not that urgent now.