Bug #14987 use of async i/o could lower latency and increase throughput per thread
Submitted: 16 Nov 2005 14:17 Modified: 13 May 2010 16:03
Reporter: Nils Goroll Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: InnoDB storage engine Severity:S4 (Feature request)
Version:4.1 OS:Solaris (Solaris)
Assigned to: CPU Architecture:Any
Triage: Triaged: D5 (Feature request)

[16 Nov 2005 14:17] Nils Goroll
Description:
Just a general suggestion:

On large scale MySQL Systems (big buffer cache, high performance-
storage) the throughput/latency of a single thread is limited if issuing
syncronuous I/O.

By using async I/O, it should be possible to boost per thread I/O throughput
and lower per thread I/O latency, in particular when using direct I/O
(see also bug#14986)

Please note that for MySQL as a massively multithreaded application,
there is already a high degree of parallel I/O for the server as a whole,
so you might conclude that was not worth the effort to implement Async
I/O.

IMHO, the question is whether you would also want to maximise performance
on large (very high I/O performance) systems with just a small number of parallel
threads. If you would want to do this, I would suggest to take a look at the
aio library on Solaris, which is being used by other products like the oracle db.

How to repeat:
n/a

Suggested fix:
re-write I/o routines for InnoDB to use one or the other async i/o library,
i would suggest to use aio

    aioread(3aio)
    aiowrite(3aio)
    aiocancel(3aio)
    aiowait(3aio)
[16 Nov 2005 14:47] Sinisa Milivojevic
Async aio is already used on Windows.

Problem with Unices is in diversity of API calls.

But, in spite of that, this is a valid feature request.