ディスクI/O操作方法の種類--Async/Sync/AIO

ディスクI/Oの操作方法はAsync/Sync/AIOの3種類ある。

Async
mount optionはasyncがデフォルト。
ページキャッシュが使われているため、write()コールが完了してもすぐにはdiskに書き出されない。
ページキャッシュからの書き出し失敗をアプリケーションは検知できない。

Sync
write()コールはページキャッシュが書き出すまで完了しない。
スレッド停止期間が長くなる。
エラーでプロセスが落ちた場合でも、write()コールが完了しているものについては、絶対にディスクにデータを反映したいときに使用する。

AIO
aio_write()コールで実行する。
aio_write()はasyncとsyncのいいとこどり。
asyncと同様に非同期で書き込むが、ページキャッシュが書き出し完了またはエラー時にsignalで通知されるため、アプリケーションが検知できる。
データベースの世界ではaio_writeの話がよく出る。

-Linux