我在 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 支持。