No puedo encontrar lo que ha usado toda la memoria.

No puedo encontrar lo que ha usado toda la memoria.

El servidor tiene aproximadamente 24 GB de memoria. Al ejecutar free -gencuentro 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 topentonces M. Pero parece que la memoria está bastante libre en la %MEMcolumna.

¿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 topmuestra 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.

información relacionada