innodb_adaptive_flushing_method=estimate and innodb_io_capacity
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Percona Server moved to https://jira.percona.com/projects/PS |
Fix Released
|
Medium
|
Hrvoje Matijakovic | ||
5.5 |
Fix Released
|
Medium
|
Hrvoje Matijakovic |
Bug Description
The documentation states that the 'innodb_
In some cases this provides enough dirty buffer flushing to prevent the 'estimate' method from ever kicking in (i.e., because the Checkpoint age never reaches 50% of the max checkpoint age). Or, if adaptive flushing is in play, it prevents the algorithm from smoothly adjusting write IO.
For example, this is output from my 'myq_gadgets' tool that shows adaptive flushing in action:
Innodb Flushing Checkpoint Pages
time meth %dirt flush ckpt trgt max wops wsize
13:28:12 estim 2.33% 4.0 332M 27.6% 26.7% 2.0 32.0K
13:28:13 estim 2.33% 4.0 332M 27.6% 26.7% 2.0 32.0K
13:28:14 estim 2.34% 10.0 332M 27.6% 26.7% 5.0 80.0K
13:28:15 estim 2.32% 1.8k 330M 27.4% 26.6% 892.0 13.9M
13:28:16 estim 2.32% 4.0 331M 27.4% 26.6% 2.0 32.0K
13:28:17 estim 2.32% 10.0 331M 27.5% 26.6% 5.0 80.0K
13:28:18 estim 2.33% 10.0 331M 27.5% 26.6% 5.0 80.0K
13:28:19 estim 2.33% 10.0 331M 27.5% 26.6% 5.0 80.0K
13:28:20 estim 2.33% 20.0 331M 27.5% 26.6% 10.0 160K
13:28:21 estim 2.33% 8.0 331M 27.5% 26.7% 4.0 64.0K
13:28:22 estim 2.33% 2.0 332M 27.5% 26.7% 1.0 16.0K
13:28:23 estim 2.33% 10.0 332M 27.5% 26.7% 5.0 80.0K
13:28:24 estim 2.33% 8.0 332M 27.6% 26.7% 4.0 64.0K
13:28:25 estim 2.32% 894.0 331M 27.4% 26.6% 447.0 6.98M
13:28:27 estim 2.32% 6.0 331M 27.5% 26.6% 3.0 48.0K
This output shows the flushing method ('estimate'), the amount of the buffer pool that is dirty (%dirt), the rate of innodb_
Notice places where the amount of data jumps significantly, at 13:28:14 and again at 13:28:25. This pattern suggests to me a 10 second loop.
I *believe* it would be ideal if 'estimate' truly ignore the innodb_io_capacity as the doc indicates, however I would agree that it will likely change write characteristics on a lot of production servers.
Related branches
- Alexey Kopytov (community): Approve
-
Diff: 176 lines (+75/-17)6 files modifieddoc/source/index.rst (+1/-0)
doc/source/performance/binary_group_commit.rst (+45/-0)
doc/source/performance/innodb_fast_checksum.rst (+1/-1)
doc/source/performance/innodb_numa_support.rst (+6/-6)
doc/source/reliability/innodb_corrupt_table_action.rst (+11/-9)
doc/source/scalability/innodb_io_55.rst (+11/-1)
Changed in percona-server: | |
status: | New → Triaged |
importance: | Undecided → Medium |
Changed in percona-server: | |
status: | Fix Committed → Fix Released |
Assigning this as a documentation bug to Hrvoje.
If code changes / new options to control behavior etc. are desired, I believe they best discussed separately from this one.