aio_write()を使用しますが、それでもキャッシュを介してデータが表示されますか?
-
30-09-2019 - |
質問
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サポートがあると確信しています。
解決
これを理解しました。直接/緩衝IOは1つのことであり、同期/非同期は別のことです。 asyncを書き込むためには、write()が使用されていなくても、o_directをopen()callにo_directに与える必要があります。
最初はコンパイラエラーが発生する可能性があります-Man2を慎重に開いてください。
所属していません StackOverflow