io_uring の書き込みはプロセス死後も生き続ける:waitpid() が I/O バリアにならない理由

Is There I/O After Death? What Happens to Io_uring When a Process Dies

io_uring の書き込みはプロセス死後も生き続ける:waitpid() が I/O バリアにならない理由

Linux では、プロセスが SIGKILL で殺され waitpid() で回収された後も、通常の io_uring で送信された書き込みがカーネル内で生き残り、後からストレージに到達することがある。この記事では、dm-delay や NVMe キューの負荷を用いた実験でこの現象を実証し、SQPOLL やネイティブ AIO ではプロセスの終了処理が待ち時間として現れることを示す。さらに、flock() を使ったロックがバリアとして機能する理由を、カーネルのコードと struct file の参照から解説する。

プロセスの寿命と I/O の寿命は同じではない。通常の io_uring では、waitpid() はタスクが消えたことを教えてくれるが、その書き込みがまだ生きていることは教えてくれない。

この日のほかの記事

2026-09-06