[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:
Blocks
is blocked by MDEV-23399 10.5 performance regression with IO-b... Closed
is blocked by MDEV-23855 InnoDB log checkpointing causes regre... Closed
PartOf
is part of MDEV-16526 Overhaul the InnoDB page flushing Closed

 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 MDEV-23855.

Generated at Thu Feb 08 09:24:48 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.