Domanda

sto giocando con questo codice su 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 );

Questo dovrebbe utilizzare la memoria puntata dal buffer per l'operazione IO. Eppure, vedo il numero di pagine sporche salire come se stavo scrivendo alla cache. Perché?

sul sistema di compilazione, non c'è alcun supporto O_DIRECT in open (). Ma dal momento che io non sto usando write (), che dovrebbe essere ancora un problema?

Sono abbastanza sicuro che ci sia un supporto diretto IO sul bersaglio.

È stato utile?

Soluzione

capito questo. Diretta / tamponata IO è una cosa, la sincronizzazione / asincrona è un altro. Per avere asincrono scrive evitare di cache di uno deve ancora dare O_DIRECT alla chiamata open (), anche se write () non viene utilizzato.

Ci sarà probabilmente errori di compilazione in un primo momento -. L'uomo ha letto 2 aperto con attenzione

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top