• Marko Mäkelä's avatar
    MDEV-24278 InnoDB page cleaner keeps waking up on idle server · 7b1252c0
    Marko Mäkelä authored
    The purpose of the InnoDB page cleaner subsystem is to write out
    modified pages from the buffer pool to data files. When the
    innodb_max_dirty_pages_pct_lwm is not exceeded or
    innodb_adaptive_flushing=ON decides not to write out anything,
    the page cleaner should keep sleeping indefinitely until the state
    of the system changes: a dirty page is added to the buffer pool such
    that the page cleaner would no longer be idle.
    
    buf_flush_page_cleaner(): Explicitly note when the page cleaner is idle.
    When that happens, use mysql_cond_wait() instead of mysql_cond_timedwait().
    
    buf_flush_insert_into_flush_list(): Wake up the page cleaner if needed.
    
    innodb_max_dirty_pages_pct_update(),
    innodb_max_dirty_pages_pct_lwm_update():
    Wake up the page cleaner just in case.
    
    Note: buf_flush_ahead(), buf_flush_wait_flushed() and shutdown are
    already waking up the page cleaner thread.
    7b1252c0
ha_innodb.cc 617 KB