Esta es una pregunta canónica sobre cómo los sistemas operativos Unix informan sobre el uso de la memoria.
Preguntas similares:
Tengo un servidor de producción que ejecuta Debian 6.0.6 Squeeze
#uname -a
Linux debsrv 2.6.32-5-xen-amd64 #1 SMP Sun Sep 23 13:49:30 UTC 2012 x86_64 GNU/Linux
Todos los días cron ejecuta un script de respaldo como root:
#crontab -e
0 5 * * * /root/sites_backup.sh > /dev/null 2>&1
#nano /root/sites_backup.sh
#!/bin/bash
str=`date +%Y-%m-%d-%H-%M-%S`
tar pzcf /home/backups/sites/mysite-$str.tar.gz /var/sites/mysite/public_html/www
mysqldump -u mysite -pmypass mysite | gzip -9 > /home/backups/sites/mysite-$str.sql.gz
cd /home/backups/sites/
sha512sum mysite-$str* > /home/backups/sites/mysite-$str.tar.gz.DIGESTS
cd ~
Todo funciona perfectamente, pero me doy cuenta de que el gráfico de memoria de Munin muestra un aumento de la memoria caché y las memorias intermedias después de la copia de seguridad.
Luego solo descargo los archivos de respaldo y los elimino. Después de la eliminación, el gráfico de memoria de Munin devuelve el caché y las memorias intermedias al estado que tenía antes de la copia de seguridad.
Aquí está el gráfico de Munin:
La imagen alojada externamente era un enlace muerto.
fuente
Respuestas:
Este es el mismo "problema" que el Servidor se niega a usar la partición de intercambio y algunas otras preguntas similares en este sitio. ( Uso elevado de memoria en el servidor Linux , uso de memoria en LINUX , servidor web con poca memoria , etc.)
Presta atención al hecho de que el consumo de memoria es de caché . Esto significa que mantiene un archivo en la memoria. La memoria caché es memoria "libre". En lugar de dejar el bloque de memoria vacío, su sistema operativo mantiene los archivos leídos recientemente en ese espacio. Si una aplicación necesita esa memoria, será utilizada por la aplicación. Hasta entonces, existe la posibilidad de evitar que tenga que leer un archivo del disco nuevamente si se hace referencia con frecuencia.
De acuerdo con este gráfico, su consumo efectivo de memoria no ha cambiado en absoluto durante toda la duración del gráfico.
fuente
sync; echo 3 > /proc/sys/vm/drop_caches
después de la copia de seguridad?Estás experimentando el problema de Linux Ate My Ram .
No se asuste
Esto no es un problema.
Su sistema funciona según lo diseñado.
El problema no es su sistema operativo; el problema es su comprensión de lo que es la memoria "libre".
Los sistemas Unix usan memoria para algo más que solo ejecutar programas. La memoria puede usarse para:
Lo que sigue es un recorrido breve (y en gran medida incompleto) de cómo los sistemas Unix modernos informan el uso de RAM.
¿Qué es la memoria libre (la definición del sistema operativo) ?
Cuando un sistema Unix informa RAM como Libre , significa "No estoy usando esta RAM para nada".
La memoria RAM gratuita no tiene ningún valor: no está haciendo que su sistema sea más rápido, solo está "libre" en caso de que algo lo necesite. Ese algo podría ser cualquiera de los otros tres elementos que mencioné anteriormente.
¿Qué son la memoria caché y la memoria intermedia?
La memoria caché y la memoria intermedia son RAM que el sistema operativo está utilizando para acelerar su sistema.
Esta memoria no es necesaria para ejecutar programas en este momento , por lo que su sistema operativo la está utilizando para almacenar datos que necesita con frecuencia, por ejemplo, la biblioteca C (que necesitan casi todos los programas que ejecuta) casi siempre se guarda en la
cache
memoria, por lo que el sistema no tiene que ir al disco para encontrar las instrucciones que necesita para imprimir "Hello World" en la pantalla.En realidad, es mucho más complicado que eso: hay memoria compartida , memoria cableada , etc., pero para nuestros propósitos esta explicación simple es adecuada.
¿Qué es la memoria activa?
La memoria activa es parte de lo que entendemos como memoria "usada" - RAM que las aplicaciones están usando para lo que sea que hagan - ordenar hojas de cálculo, servir páginas web, editar gráficos, etc.
La memoria "activa" ha estado "activa" recientemente - - el programa que afirma que ha hecho uso de sus contenidos (lectura o escritura), y no se considera un buen candidato para el intercambio.
¿Qué es la memoria inactiva?
Al igual que la memoria activa, la memoria inactiva es la RAM que las aplicaciones usan para lo que sea que hagan. La diferencia es que no se ha accedido a esta memoria desde hace tiempo, por lo que si se llega a empujar, el sistema operativo cree que se puede cambiar al disco y (con un poco de suerte) el programa afirma que no la volverá a pedir, por lo que Nunca lo notaré.
¿Qué es la memoria "usada" (la definición HUMANA)
Lo que usted y yo pensamos como memoria "usada" es, esencialmente, la suma de la memoria activa e inactiva. Toda la RAM actualmente reclamada por las aplicaciones para su uso.
Mientras tenga más RAM instalada que la suma de la memoria activa e inactiva (más un buen margen de seguridad de, digamos, 512-1024MB en la parte superior) estará en un lugar ACEPTABLE: su sistema operativo probablemente no afectará el intercambio y el rendimiento. .
¿Qué es la memoria "libre" (la definición HUMANA) ?
Lo que usted y yo pensamos como memoria "libre" es la memoria disponible para ejecutar programas.
Esto es un poco más complicado que solo la figura "Gratis" que informa su sistema operativo. Cuando un programa solicita RAM, el sistema operativo intentará obtener esa RAM de la manera menos disruptiva posible:
(Aquí se trata de que el rendimiento generalmente recae en los perros: cada vez que un programa obtiene su turno en la CPU, sus bits intercambiados deben volver a la RAM, lo que significa que la memoria activa de algún otro programa debe cambiarse : el la alta rotación en el intercambio se llama paliza )
malloc()
fallará. Este es el comportamiento conforme con POSIX: el sistema operativo le dirá al programa que solicita RAM que no puede satisfacer la solicitud.El programa puede pedir menos RAM o, si no puede conformarse con una pequeña porción de memoria, puede limpiar y salir. (Si el programa está mal escrito, simplemente se bloqueará).
En caso de que no pueda distinguir mi descripción aquí y mi respuesta a la pregunta vinculada, creo que esta es una forma terrible de abordar el problema.
¿Por qué sube RAM libre cuando borras archivos?
En el ejemplo de la pregunta aquí, notó que es posible "liberar" RAM eliminando el archivo de copia de seguridad; la explicación es bastante simple: dado que nada está usando ese archivo (sin identificadores de archivo abiertos) y ya no es accesible desde el sistema de archivos (desvinculado) el sistema operativo sabe que nadie volverá a acceder a esos datos y purga los datos del caché del sistema de archivos.
Esto hace que el sistema operativo informe más memoria libre, pero no tiene impacto en el rendimiento del sistema.
fuente
top
y reporta RAM libre / cableada / activa / inactiva.Algo más para verificar si lo anterior falla:
Desde: https://stackoverflow.com/a/5467207
fuente