[MDEV-23756] Implement event-driven innodb_adaptive_flushing=OFF that ignores innodb_io_capacity Created: 2020-09-18 Updated: 2023-10-30 |
|
| Status: | Open |
| Project: | MariaDB Server |
| Component/s: | Storage Engine - InnoDB |
| Fix Version/s: | 11.5 |
| Type: | Task | Priority: | Major |
| Reporter: | Marko Mäkelä | Assignee: | Vladislav Vaintroub |
| Resolution: | Unresolved | Votes: | 0 |
| Labels: | performance | ||
| Issue Links: |
|
||||||||||||||||||||
| Description |
|
InnoDB enables an ‘adaptive’ flushing mode by default, which attempts to ensure a steady flow of page flushing and avoid write bursts on log checkpoint. There is a non-default option innodb_adaptive_flushing=OFF that is still based on waking up the page cleaner thread at least once per second. I think that we should offer a purely event-driven flushing option that would ignore innodb_io_capacity altogether and perform best effort for the buffer pool to remain between innodb_max_dirty_pages_pct_lwm and innodb_max_dirty_pages_pct. I implemented a crude prototype of this. |
| Comments |
| Comment by Marko Mäkelä [ 2020-09-18 ] |
|
In the purely event-driven innodb_adaptive_flushing=OFF mode, it might even make sense to skip the buf_flush_wait_flushed() altogether, and simply perform a ‘best effort’ checkpoint based on MIN(oldest_modification). |
| Comment by Marko Mäkelä [ 2020-10-02 ] |
|
Perhaps the periodic log checkpoints should be moved from srv_master_callback() to the page cleaner thread (affecting both modes of flushing), possibly as part of fixing |