"buf_flush_LRU is lazy" | buf_flush_common() calls buf_dblwr_flush_buffered_writes() even when no pages flushed
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
MySQL Server |
Unknown
|
Unknown
|
|||
Percona Server moved to https://jira.percona.com/projects/PS |
Fix Released
|
Wishlist
|
Laurynas Biveinis | ||
5.1 |
Invalid
|
Undecided
|
Unassigned | ||
5.5 |
Invalid
|
Undecided
|
Unassigned | ||
5.6 |
Fix Released
|
Wishlist
|
Laurynas Biveinis |
Bug Description
This is a copy of http://
"1) buf_flush_common always calls buf_dblwr_
which later the bug was kept open about, and
[27 Sep 10:15] Laurynas Biveinis
Re. Mark's problem 1), merely skipping buf_dblwr_
if (buf_LRU_
count += buf_free_
}
if (max > count) {
count += buf_flush_
}
Notice a mixup of evicted and flushed pages. In the case we will satisfy this LRU flush batch purely by unzip_LRU eviction and no flushing, we will still get page_count > 0 in buf_flush_common().
We are exploring a fix here and elsewhere of replacing single value counters with two-field structs for flushed and evicted pages.
Related branches
- Sergei Glushchenko (community): Approve (g2)
- Vadim Tkachenko: Approve (algo)
-
Diff: 1222 lines (+795/-116)16 files modifiedPercona-Server/mysql-test/suite/sys_vars/r/innodb_cleaner_eviction_factor_basic.result (+31/-0)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_cleaner_flush_chunk_size_basic.result (+31/-0)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_cleaner_free_list_lwm_basic.result (+35/-0)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_cleaner_lru_chunk_size_basic.result (+31/-0)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_cleaner_max_flush_time_basic.result (+25/-0)
Percona-Server/mysql-test/suite/sys_vars/r/innodb_cleaner_max_lru_time_basic.result (+25/-0)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_cleaner_eviction_factor_basic.test (+35/-0)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_cleaner_flush_chunk_size_basic.test (+33/-0)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_cleaner_free_list_lwm_basic.test (+35/-0)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_cleaner_lru_chunk_size_basic.test (+33/-0)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_cleaner_max_flush_time_basic.test (+31/-0)
Percona-Server/mysql-test/suite/sys_vars/t/innodb_cleaner_max_lru_time_basic.test (+31/-0)
Percona-Server/storage/innobase/buf/buf0flu.cc (+323/-116)
Percona-Server/storage/innobase/handler/ha_innodb.cc (+42/-0)
Percona-Server/storage/innobase/include/srv0srv.h (+29/-0)
Percona-Server/storage/innobase/srv/srv0srv.cc (+25/-0)
tags: | added: innodb |
See also http:// bugs.mysql. com/bug. php?id= 71411