aio_write()を使用しますが、それでもキャッシュを介してデータが表示されますか?

StackOverflow https://stackoverflow.com/questions/3532952

質問

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を慎重に開いてください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top