free
extrae sus datos de /proc/meminfo
slkwr133701:/usr/src/linux # free
total used free shared buffers cached
Mem: 2053456 434572 1618884 0 77888 201820
slkwr133701:/usr/src/linux # cat /proc/meminfo
MemTotal: 2053456 kB
MemFree: 1618736 kB
Buffers: 77928 kB
....
Esto se refiere a la memoria utilizada para el almacenamiento de E/S de bloque temporal. El núcleo tiene que asignar y liberar unidades del mismo tamaño constantemente, como transferencias de E/S de bloque, paquetes de red y búfer de socket
Puede ver mejor las asignaciones de cachés y búfer ejecutando slabtop
En respuesta a su pregunta de uso:el sistema generalmente asignará más bloques de los que necesita, pero a medida que aumente la "presión de la memoria", estos bloques adicionales se liberarán.
Los "búferes" son recuperables bajo presión de memoria. Por lo tanto, es similar al caché de la página (columna "caché"); no es un gran motivo de preocupación. El valor de los "búferes" puede ser pequeño o grande, depende de lo que esté haciendo su sistema :-). Podemos encontrar varios tipos de caché contados aquí.
El caché de búfer es literalmente el caché de página para el dispositivo de bloque. Linux solo los informa por separado.[*] Podría notar el uso de "búferes" mientras los programas leen/escriben el nodo del dispositivo de bloque, p. dd status=progress if=/dev/sda of=/dev/null
. Aparentemente, las personas también lo notan cuando ejecutan un programa de reproducción de DVD.
Como prueba, consulte:el 30% de la RAM son "búferes". ¿Qué es?
Si no ha estado accediendo al nodo del dispositivo de bloque, sus "búferes" son probablemente todos los metadatos del sistema de archivos . Los sistemas de archivos usan el caché de búfer internamente como una conveniencia. Se aseguran de que nunca duplique el archivo datos - contenido del archivo - que se almacena en la memoria caché de la página principal. Exactamente para lo que el sistema de archivos usa la memoria caché del búfer, en todo caso, varía según el sistema de archivos.
En una máquina con una pequeña cantidad de RAM física, noté que los "búferes" pueden verse altos cuando tengo sistemas de archivos ext3/ext4. Esto se debió a que las escrituras en el diario pasan por el caché del búfer. (Ver enlace arriba). Los sistemas de archivos ext3/4 también almacenan el contenido del directorio en el caché del búfer.
En segundo lugar, los "búferes" mostrados por el free
El comando también incluye SReclaimable, lo que significa losas recuperables. (Demostrado aquí:La forma correcta de monitorear la memoria de Linux, nuevamente).
La memoria Slab no parte de la caché de página/búfer. Sin embargo, es conveniente contarlos juntos. Ambos son recuperables, y el uso principal (¿único?) de los bloques recuperables es para el almacenamiento en caché del sistema de archivos. Por ejemplo, los metadatos de archivos (inodos) y las búsquedas de rutas (entry) se almacenan en caché en losas recuperables. "La memoria slab recuperable [puede] ocupar una gran fracción de la memoria del sistema en la mayoría de los sistemas inactivos con muchos archivos".
Puedes ver el Buffers
sin procesar y SReclaimable
valores en cat /proc/meminfo
. También puede ejecutar slabtop
para ver la lista de losas. AFICO, slabtop
no da estadísticas sobre losas como recuperables o no. Pero por lo general puedes adivinar, y si hay alguna losa sospechosa, supongo que puedes buscarla por su nombre.
[*] A los efectos de esta respuesta, "caché de búfer" es el caché contado por Buffers
en /proc/meminfo
. Sin embargo, otras fuentes pueden referirse a toda la caché de la página como una caché de búfer unificada. Si desea la explicación histórica, consulte el primer enlace.
También los desarrolladores de Linux pueden haber usado "caché de búfer" para significar cosas diferentes, cuando estaban discutiendo sobre las implementaciones del sistema de archivos.