ディスク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の話がよく出る。
Copyright © 2017 システム開発メモ All Rights Reserved.