Studying and improving POSIX asynchronous IO implemented in GLIBC
MetadataShow full item record
Asynchronous IO (AIO) is considered a good way to hide the IO latency since we can move to other computation when waiting for the IO operations return. Currently, POSIX has its AIO API, which provides read, write and fsync operations (aio_read, aio_write and aio_fsync). In this document, we explore the design of POSIX AIO and its imple- mentation in GLIBC. We found that under the current abstraction, POSIX AIO may have confusing behavior, and have only about 10% of the through- put compared to blocking IO, in the worst case. Then we analyzed the ar- chitecture and the code of its implementation and found the bottleneck of its performance, and fixed the problem by removing priority from the API and reimplementing a part of the GLIBC POSIX AIO. The new implementation can have more than 100% of performance improvement in the best case of the microbenchmark, and more than 10% of improvement in the majority cases of the real application benchmarks.