¿Cómo borrar totalmente el caché del sistema de archivos en Linux?

9

En una prueba de rendimiento, quiero evitar la influencia de la memoria caché del sistema Linux (incluida la caché de página / caché de inodo, etc.).

He intentado el indicador O_DIRECT, pero resultó que la E / S directa todavía "disfruta" del efecto de algo de caché.

¿Hay alguna manera exhaustiva de cerrar el efecto de la memoria caché del sistema?


fuente
2
¿Cuál es el punto de una prueba de rendimiento tan "irreal"? Estás intentando probar algo que ningún sistema operativo moderno nunca permitiría que ocurriera.
Desafortunadamente, no es irreal en absoluto, sigue siendo cómo funciona el kernel aio hoy. Desearía que Mr.T se diera cuenta de que las E / S asíncronas y el caché no son términos mutuamente excluyentes. Es algo que los chicos de Microsoft ya se dieron cuenta hace 15 años (aunque es cierto que el rendimiento anterior a Vista puede ser decepcionante, especialmente bajo concurrencia). Algún indio escribió un parche hace años también, pero fue rechazado.

Respuestas:

14

(en realidad cae así ...) corre syncprimero, luego

caché de página gratuito:

echo 1 > /proc/sys/vm/drop_caches

dentries e inodes libres:

echo 2 > /proc/sys/vm/drop_caches

caché de página libre, dentries e inodes:

echo 3 > /proc/sys/vm/drop_caches

Entonces puede comenzar con un caché limpio, pero, por supuesto, el almacenamiento en caché seguirá funcionando.

Karoly Horvath
fuente
He escuchado sobre este método en alguna parte. pero no hay tales archivos en mi ubuntu 10.04. Así que no pude ejecutar los comandos anteriores.
@tom_cat: necesita un kernel más reciente que 2.6.16, y Ubuntu 10.04 vino con 2.6.32 si no me equivoco, por lo que esto debería funcionar. Acabo de comprobar mi instalación de 11.04 para ver si vale la pena, que tiene esta entrada de proceso (desafortunadamente ya no hay 10.04 aquí)
@ Damon: Sí, tienes razón. muchas gracias. Descubrí que había iniciado sesión en una máquina remota del núcleo anterior.
0

no, no puedes omitir el caché. Pero, sin embargo, puede forzar una sincronización del sistema de archivos (lo que significa, borrar el caché y escribir los datos en el disco) con la llamada adicional al sistema fsync (3).

Saludos, CK


fuente