Details
-
Bug
-
Status: Closed (View Workflow)
-
Major
-
Resolution: Fixed
-
10.5, 10.6, 10.11, 11.1(EOL), 11.2, 11.0(EOL), 11.3(EOL)
Description
A customer who uses remarkably large innodb_buffer_pool_size noted that there are some performance stalls when the buffer pool is running out of free pages.
In a scenario where background flushing is not enabled (innodb_max_dirty_pages_pct_lwm is not being exceeded in the buffer pool, or it is 0 and innodb_max_dirty_pages_pct is not being exceeded), the buf_flush_page_cleaner() thread could sit idle while pages in the buffer pool are slowly running out.
It could make sense to wake up the buf_flush_page_cleaner() thread in buf_LRU_get_free_block() when buf_pool.page_cleaner_idle() holds and there are fewer than innodb_lru_scan_depth blocks available.
If there are fewer than innodb_lru_scan_depth/2 blocks available in the buffer pool and the page cleaner is not idle but being invoked once per second, it would make sense to wake up the page cleaner from its sleep immediately. LRU eviction flushing should ignore the innodb_io_capacity throttling, because running out of buffer pool will risk blocking all operations in the database.
Attachments
Issue Links
- causes
-
MDEV-33317 [Warning] InnoDB: Could not free any blocks in the buffer pool!
- Closed
-
MDEV-33508 Performance regression due to frequent scan of full buf_pool.flush_list
- Closed
- is blocked by
-
MDEV-26055 Adaptive flushing is still not getting invoked in 10.5.11
- Closed
-
MDEV-26827 Make page flushing even faster
- Closed
- relates to
-
MDEV-33613 InnoDB may still hang when temporarily running out of buffer pool
- Closed
-
MDEV-34265 Possible hang during IO burst with innodb_flush_sync enabled
- Closed