Frage

Ich spiele mit diesem Code auf 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 );

Dies sollte den Speicher durch Puffer für den IO-Betrieb darauf verwenden. Trotzdem sehe ich die Anzahl der schmutzigen Seiten nach oben, als ob ich zu Cache schrieb. Warum das?

Auf der Maschine zu bauen, gibt es keine O_DIRECT Unterstützung in open (). Aber da ich nicht schreiben () verwendet, sollten diese nach wie vor ein Problem sein?

Ich bin mir ziemlich sicher, dass es direkte IO-Unterstützung auf dem Ziel.

War es hilfreich?

Lösung

dachte diese aus. Direkt / gepufferte IO ist eine Sache, Sync / Async eine andere. Haben async schreibt man vermeiden Cache muss noch O_DIRECT auf die open () Aufruf geben, auch wenn write () nicht verwendet wird.

Es wird wahrscheinlich Compiler seinen Fehler auf dem ersten -. Lese man 2 vorsichtig öffnen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top