Linux 2.6.16.46 で次のコードを試しています。
io.aio_fildes = open(name, O_CREAT | O_TRUNC | O_WRONLY | O_SYNC, 00300);
io.aio_buf = buffer;
io.aio_nbytes = size;
io.aio_sigevent = sigev;
io.aio_lio_opcode = LIO_WRITE;
aio_write( &io );
これは、バッファが指すメモリを IO 操作に使用する必要があります。それでも、あたかもキャッシュに書き込んでいるかのように、ダーティ ページの数が増えていることがわかります。何故ですか?
ビルド マシンでは、open() で O_DIRECT がサポートされていません。しかし、私は write() を使用していないので、それでも問題になるのでしょうか?
ターゲットに直接 IO がサポートされていることは確かです。