InnoDB flushes pages in very simple logic – it goes to the tail of LRUsed list (which has pages for whole buffer pool), and walks it from tail to head, until it finds enough pages to flush. If flushing is aggressive, dirty pages will be only at the head of the list, not at the tail, but InnoDB will still be traversing it fully, tail to head.
Look at that, Jay Janssen notices:
I rarely say the buffer pool beyond a few percent dirty.
Devananda writes:
by enabling adaptive flushing, InnoDB purged modified data much more aggressively, resulting in very little unflushed changes
See, while it traverses the whole buffer pool it holds global buffer pool lock. When some thread that holds kernel mutex tries to acquire …
[Read more]