Question

Je joue avec ce code sur 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 );

Cela devrait utiliser la mémoire pointée par tampon pour l'opération IO. Pourtant, je vois le nombre de pages sales aller comme si j'écrivais en cache. Pourquoi?

Sur la machine de construction, il n'y a pas de soutien O_DIRECT en open (). Mais depuis que je ne suis pas en utilisant write (), devrait-il être encore un problème?

Je suis sûr qu'il ya un soutien IO direct sur la cible.

Était-ce utile?

La solution

compris cela. Direct / IO en mémoire tampon est une chose, la synchronisation / async est une autre. Pour avoir écrit async éviter cache un besoin encore donner O_DIRECT à l'appel ouvert (), même si write () n'est pas utilisé.

Il y aura probablement des erreurs du compilateur dans un premier temps -. Homme lecture 2 ouvert soigneusement

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top