¿Qué se "almacena en caché" en el comando superior?

46

Cuando corro top, obtengo:

top - 09:10:52 up 18:37,  1 user,  load average: 1.56, 1.33, 1.15
Tasks:  39 total,   1 running,  38 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.1%us,  0.6%sy,  1.0%ni, 92.5%id,  5.8%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4194304k total,  3045460k used,  1148844k free,        0k buffers
Swap:        0k total,        0k used,        0k free,  2256128k cached

Ver la parte: 2256128k en caché? ¿Qué significa eso exactamente?

Estoy comparando dos VPS de dos proveedores, este siempre tiene una gran cantidad allí (70% de la memoria utilizada) y el otro proveedor de VPS siempre muestra 0.

KKK
fuente

Respuestas:

15

Ese número antes de la memoria caché es la cantidad de memoria física que utilizan los búferes de caché para sus sistemas de archivos.

En realidad no está relacionado con SWAP, a pesar de estar en la línea "Swap:".

Para verificar mi respuesta con un pequeño experimento, intente lo siguiente:

Ejecute top y observe el valor de 'en caché'. Ahora corre

dd if=/dev/zero of=~/trick bs=1M count=128

si corres de nuevo, notarás que 'caché' ha crecido 128M

Ahora elimina el archivo

rm ~/trick

Vuelva a subir y verá que 'caché' se ha reducido en 128 millones

Entonces para Mem:

total = used + free y

used = <all apps> + buffers + cached

(donde los buffers son básicamente metadatos para el caché). Un poco confuso de una interfaz de usuario.

rogerdpack
fuente
y puedo influir en esto de todos modos, por ejemplo, limitarlo o desactivarlo
KKK
2
¡¿Por qué quieres hacer eso?! ¿con qué harás? se trata de cómo la memoria caché del sistema de archivos en la memoria física.
Como la mayoría del sistema de archivos es una base de datos, la base de datos tiene su propia caché, por lo que supongo que sería bueno limitar esta parte de alguna manera.
KKK
Puedes hacerlo con alguna búsqueda pero no te aconsejo. Esto limitará el rendimiento de la FS
117

el kernel de Linux usará la memoria disponible para el almacenamiento en caché del disco, a menos que sea requerido por un programa en ejecución.

Esto se considera bueno; Supongamos que tiene 4 GB de RAM y que sus programas usan solo 1 GB. Los otros 3 GB se desperdiciarán. A pesar de la impresión de "sentirse bien" al saber que solo está utilizando el 25% de su memoria, la contrapartida es que el otro 75% no se utiliza. Entonces, el kernel lo usa para almacenar en caché los archivos, lo que mejora significativamente el rendimiento. Es automático; a diferencia de los sistemas operativos más antiguos, no necesita decidir cuánto dedicar al caché de disco, o configurarlo manualmente.

"El caché de disco de Linux es muy discreto. Utiliza memoria de reserva para aumentar en gran medida las velocidades de acceso al disco, y sin quitarle memoria a las aplicaciones. Un almacenamiento de ram completamente utilizado en Linux es un uso eficiente del hardware, no una señal de advertencia".

Esta es una pregunta tan común que hay un sitio web completo dedicado a ella:

http://www.linuxatemyram.com

El sitio web incluso tiene una manera de vaciar el caché del disco para que pueda ejecutar algunas aplicaciones y ver qué tan rápido son con el caché habilitado :)

roadmr
fuente
44
Me encanta la respuesta, pero debido a la falta de reputación no puedo actualizarla (todavía). Lo siento.
KKK
44
No te preocupes, me alegro de poder ayudarte. ¡Espero que la información sea útil!
roadmr
ESTA debería ser la respuesta aceptada. Oh bien . . . :(
ankush981
Definitivamente debería ser la respuesta aceptada. linuxatemyram es una gran información!
rafaelbattesti