Aquí la salida de free -m
:
total used free shared buffers cached
Mem: 7188 6894 294 0 249 5945
-/+ buffers/cache: 698 6489
Swap: 0 0 0
Puedo ver que casi 6GB
(5945 MB) de memoria 7GB
se usa para almacenar en caché los archivos. Sé cómo vaciar los escondites. Mi pregunta es: ¿es posible ver qué archivos (o inodos) se almacenan en caché?
linux
memory-usage
ssapkota
fuente
fuente
buffers
ecached
:sysctl -w vm.drop_caches=3
. Es posible que desee leer más sobre él, antes de usar. A veces solo es necesario. Está disponible, esta debería ser otra razón :)Respuestas:
Bueno, no es una manera fácil de echar un vistazo a la página de caché del núcleo si le sucede que tiene fTools - "fincore" le da cierta información resumida sobre las páginas que los archivos son el contenido de la caché.
Deberá proporcionar una lista de nombres de archivos para verificar su presencia en la memoria caché de la página. Esto se debe a que la información almacenada en las tablas de caché de la página del núcleo solo contendrá referencias de bloques de datos y no nombres de archivos.
fincore
resolvería los bloques de datos de un archivo dado a través de datos de inodo y buscaría las entradas respectivas en las tablas de caché de la página.No existe un mecanismo de búsqueda eficiente para hacer lo contrario: obtener un nombre de archivo que pertenezca a un bloque de datos requeriría leer todos los inodos y bloques indirectos en el sistema de archivos. Si necesita saber acerca de los bloques de todos los archivos almacenados en la memoria caché de la página, deberá proporcionar una lista de todos los archivos en su (s) sistema (s) de archivos
fincore
. Pero es probable que eso estropee la medición ya que una gran cantidad de datos se leería atravesando los directorios y obteniendo todos los inodos y bloques indirectos, colocándolos en la caché de la página y desalojando los mismos datos de la caché de la página que estaba tratando de examinar.fuente
fincore
resolvería los bloques de datos de un archivo dado a través de datos de inodo y buscaría las entradas respectivas en las tablas de caché de la página. No existe un mecanismo de búsqueda eficiente que haga lo contrario: obtener un nombre de archivo que pertenezca a un bloque de datos requeriría leer todos los inodos y bloques indirectos del sistema de archivos. Por lo tanto, algorítmicamente será mejor que proporcione una lista de todos los archivos en su sistema de archivosfincore
si realmente necesita este nivel de información.Puede usar la utilidad vmtouch para ver si un archivo o directorio con nombre está en caché. También puede usar la herramienta para forzar elementos en caché o bloquearlos en caché.
Ahora puedo "tocarlo" en el caché.
Ahora para ver cuánto se almacena en caché ...
fuente
Escribo un script de shell muy simple para mostrar los archivos en caché usando linux-fincore. Dado que la memoria caché es una parte de la memoria, mi código es encontrar los 10 principales usos de RSZ del proceso, y el uso de lsof para descubrir los archivos que el proceso abrió, finalmente uso linux-fincore para averiguar si estos archivos están en caché o no.
Por favor corrígeme si estoy pensando mal.
fuente
lsof
también informa los archivos asignados al espacio de direcciones de proceso (y no necesariamente en caché). También es probable que una gran parte de los archivos se almacene en caché parcial / escasamente ...También puede usar pcstat (Estadísticas de caché de página) https://github.com/tobert/pcstat
Espero que ayude a alguien.
fuente
Escribí el siguiente script que imprime todos los archivos y su estado de caché usando el comando pcstat. Es un script autónomo para sistemas linux x86_64. Descarga pcstat si es necesario.
El primer argumento es la ubicación del sistema de archivos para analizar y el segundo argumento es el número de resultados (N superior por número de páginas en caché).
fuente