Pregunta

Estoy jugando con este código en 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 );

Esto debería utilizar la memoria apuntada por el tampón para la operación de IO. Aún así, no veo el número de páginas sucias subir como si estuviera escribiendo a la memoria caché. ¿Por qué?

En la máquina de construcción, no hay apoyo O_DIRECT en abierto (). Pero ya que no estoy usando escritura (), en caso de que aún siendo un problema?

Estoy bastante seguro de que hay un apoyo directo IO en el objetivo.

¿Fue útil?

Solución

cuenta de esto. Directo / IO buffer es una cosa, síncrono / asíncrono es otra. Tener asíncrono escribe evitar el caché todavía se tiene que dar O_DIRECT a la llamada open (), incluso si no se utiliza de escritura ().

Es probable que haya errores de compilación en un primer momento. - Hombre de lectura abierta 2 con cuidado

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top