El servidor tiene aproximadamente 24 GB de memoria. Al ejecutar free -g
encuentro que la memoria está agotada.
total used free shared buffers cached
Mem: 23 23 0 0 0 18
-/+ buffers/cache: 4 19
Swap: 56 2 53
Luego investigué un poco sobre qué había consumido toda esa memoria hasta top
entonces M
. Pero parece que la memoria está bastante libre en la %MEM
columna.
¿Qué puedo hacer para liberar algo de memoria? Este es un servidor de cálculo por lo que es mejor no reiniciar la computadora.
Respuesta1
Estás malinterpretando el resultado de free
. Lo que publicaste muestra que tienes 19 GB de RAM libres. El sistema utiliza los 23 GB que estás viendo como caché, pero aún están disponibles para aplicaciones. Por eso también top
muestra la memoria como libre.
VerLinuxatemyram.compara una explicación más detallada
Respuesta2
Puedes referirte aesta preguntapara determinar la memoria libre exacta.
Por defecto elLinuxtiene unmuy eficienteproceso de administración de memoria que debería liberar cualquier memoria caché en la máquina en la que se está ejecutando.
Sin embargo cuando se trata dememoria caché,LinuxEn ocasiones puede decidir que elmemoria cachése está utilizando y es necesario, lo que puede provocar problemas relacionados con la memoria y, en última instancia, agotar la memoria libre. Para contrarrestarlo, puedes forzarLinuxpara liberar cualquier memoria caché almacenada.
Para liberar memoria inmediatamente, simplemente puedes hacer esto:
free && sync && echo 3 > /proc/sys/vm/drop_caches && free
EDITADO: También puedes ejecutar este comando como un cronjob.
Como@mjturnerComo señaló, no es muy recomendable ya que puede provocar cuellos de botella en el rendimiento.