uso aio_write (), ma ancora vedere i dati passare attraverso la cache?
-
30-09-2019 - |
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.
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