InnoDB uses the asynchronous I/O subsystem
      (native AIO) on Linux to perform read-ahead and write requests for
      data file pages. This behavior is controlled by the
      innodb_use_native_aio
      configuration option, which applies to Linux systems only and is
      enabled by default. On other Unix-like systems,
      InnoDB uses synchronous I/O only. Historically,
      InnoDB only used asynchronous I/O on Windows
      systems. Using the asynchronous I/O subsystem on Linux requires
      the libaio library.
    
      With synchronous I/O, query threads queue I/O requests, and
      InnoDB background threads retrieve the queued
      requests one at a time, issuing a synchronous I/O call for each.
      When an I/O request is completed and the I/O call returns, the
      InnoDB background thread that is handling the
      request calls an I/O completion routine and returns to process the
      next request. The number of requests that can be processed in
      parallel is n, where
      n is the number of
      InnoDB background threads. The number of
      InnoDB background threads is controlled by
      innodb_read_io_threads and
      innodb_write_io_threads. See
      Section 17.8.5, “Configuring the Number of Background InnoDB I/O Threads”.
    
      With native AIO, query threads dispatch I/O requests directly to
      the operating system, thereby removing the limit imposed by the
      number of background threads. InnoDB background
      threads wait for I/O events to signal completed requests. When a
      request is completed, a background thread calls an I/O completion
      routine and resumes waiting for I/O events.
    
      The advantage of native AIO is scalability for heavily I/O-bound
      systems that typically show many pending reads and writes in
      SHOW ENGINE INNODB STATUS output. The increase
      in parallel processing when using native AIO means that the type
      of I/O scheduler or properties of the disk array controller have a
      greater influence on I/O performance.
    
A potential disadvantage of native AIO for heavily I/O-bound systems is lack of control over the number of I/O write requests dispatched to the operating system at once. Too many I/O write requests dispatched to the operating system for parallel processing could, in some cases, result in I/O read starvation, depending on the amount of I/O activity and system capabilities.
      If a problem with the asynchronous I/O subsystem in the OS
      prevents InnoDB from starting, you can start
      the server with
      innodb_use_native_aio=0. This
      option may also be disabled automatically during startup if
      InnoDB detects a potential problem such as a
      combination of tmpdir location,
      tmpfs file system, and Linux kernel that does
      not support asynchronous I/O on tmpfs.