InnoDB performs certain tasks in the background, including
      flushing of dirty pages (those pages that have been changed but
      are not yet written to the database files) from the buffer cache,
      a task performed by the “master thread”. Currently,
      the master thread aggressively flushes buffer pool pages if the
      percentage of dirty pages in the buffer pool exceeds
      innodb_max_dirty_pages_pct.
    
This behavior can cause temporary reductions in throughput when excessive buffer pool flushing takes place, limiting the I/O capacity available for ordinary read and write activity. Beginning with release 1.0.4, InnoDB uses a new algorithm to estimate the required rate of flushing based on the speed of redo log generation and the current rate of flushing. The intent of this change is to smooth overall performance, eliminating steep dips in throughput, by ensuring that buffer flush activity keeps up with the need to keep the buffer pool “clean”.
      InnoDB uses its log files in a circular fashion. Before reusing a
      portion of a log file, InnoDB flushes to disk all dirty buffer
      pool pages whose redo entries are contained in that portion of the
      log file, a process known as a “sharp checkpoint”. If
      a workload is write intensive, it generates a lot of redo
      information, all written to the log file. If all available space
      in the log files is used up, a sharp checkpoint occurs, causing a
      temporary reduction in throughput. This situation can happen even
      though innodb_max_dirty_pages_pct
      is not reached.
    
Beginning with release 1.0.4, InnoDB uses a heuristic-based algorithm to avoid such a scenario, by measuring the number of dirty pages in the buffer cache and the rate at which redo is being generated. Based on these numbers, the master thread decides how many dirty pages to flush from the buffer cache each second. This self-adapting algorithm is able to deal with sudden changes in the workload.
The primary aim of this feature is to smooth out I/O activity, avoiding sudden dips in throughput when flushing activity becomes high. Internal benchmarking has also shown that this algorithm not only maintains throughput over time, but can also improve overall throughput significantly.
      Because adaptive flushing is a new feature that can significantly
      affect the I/O pattern of a workload, a new configuration
      parameter lets you turn off this feature. The default value of the
      new boolean parameter
      innodb_adaptive_flushing is
      TRUE, enabling the new algorithm. You can set
      the value of this parameter in the MySQL option file
      (my.cnf or my.ini) or change
      it dynamically with the SET GLOBAL command,
      which requires the SUPER privilege.
    
      For more information about InnoDB I/O performance, see
      Section 7.5.7, “Optimizing InnoDB Disk I/O”.