Cómo obtener una buena visión general del uso de RAM

Cómo obtener una buena visión general del uso de RAM

He instalado Ubuntu 14.10 en un servidor. La tarea principal del servidor es ejecutar una instalación de MongoDB junto con varias aplicaciones NodeJS. Las aplicaciones NodeJS se ejecutarán continuamente y aceptarán solicitudes externas.

De vez en cuando, llegarán grandes solicitudes, lo que provocará que alguna aplicación NodeJS utilice mucha RAM durante un corto período de tiempo. He estado tratando de monitorear esto pero no estoy seguro de qué hacer con mis hallazgos.

Hasta ahora he usado dos comandos para obtener información sobre el uso de RAM. Estos son

free -m

y

sudo htop

El primero muestra esto:

                        total       used       free     shared    buffers     cached                                           
Mem:                     3442       3158       283          6        111       1203                                           
-/+ buffers/cache:                  1842       1599                                                                         
Swap:                    0          0          0    

Cuando miro esto, diría que hay alrededor de 280 MB de RAM libres. Lo cual no parece mucho.

htop me dice lo siguiente:

  1  [|||                                         0.8%]     Tasks: 61, 129 thr; 2 running
  2  [|||                                         1.0%]     Load average: 1.16 1.15 0.93
  Mem[|||||||||||||||||||||||||||||||||||||1979/3442MB]     Uptime: 29 days, 00:23:31
  Swp[                                           0/0MB]   

Realmente no sé cómo leer esto. ¿Puede alguien ayudarme aquí?

Supongo que mi pregunta al final se reduce a esto:

  • ¿Cómo puedo obtener una idea de cuánta RAM hay disponible?
  • ¿Cuándo la memoria RAM es muy poca? ¿300 MB se consideran muy poco? ¿Peligrosamente así?

Respuesta1

TL;DR: No tiene que preocuparse siempre que la -/+ buffers/cachefila muestre suficiente memoria libre. Si muestra poca memoria libre y se le swapenvía continuamente al disco, entonces debe preocuparse.

Explicación:

Estás bien con tu escenario actual de uso de RAM. Tomemos la salida de free -mpara descomponerla:

Todas las columnas de free -mse explican por sí mismas. Lo importante a tener en cuenta es que no necesita alarmarse cuando el uso de la memoria es alto sin ver la cantidad de memoria almacenada en caché y en buffer.

Del resultado, ha utilizado 3158 MB de sus 3442 MB de RAM; una simple resta diría que solo tiene 283 MB libres para asignarlos a nuevos programas. Esto no está bien, también debe mirar las columnas cachedy , mostrará una cantidad de datos del disco almacenados en caché por RAM para un acceso más rápido a los archivos de uso común y mostrará la cantidad de datos que se escribirán en el disco.bufferscachedbuffered

Como sabes, el acceso al disco es mucho más lento que la RAM, por lo que para mejorar el rendimiento es bueno almacenar algunos de los datos de los discos en la RAM. Tiene 1203 MB de datos en caché y 111 MB de datos almacenados en búfer. Es bueno que su memoria almacene en caché esta cantidad sin simplemente mantener esta cantidad de RAM inactiva. Mejorará enormemente tu rendimiento.

Para obtener la cantidad real de RAM que se está utilizando sin almacenamiento en caché/búfer, mire la -/+ buffers/cache:fila. Este resultado se muestra restando la cantidad almacenada en caché/búfer. Como puedes ver, tienes 1599 MB libres, por lo que todo parece estar bien en este estado. Si ve que los valores en esta fila son bajos, entonces debe preocuparse y observar el uso de RAM.

También tenga en cuenta que, cuando se va a iniciar un nuevo programa y no hay suficiente memoria después del almacenamiento en caché, los cachés más antiguos se borrarán automáticamente para dejar espacio para el nuevo programa. Por lo tanto, siempre que el uso real de la memoria no sea alto y se esté intercambiando continuamente al disco, es bueno tener una cantidad sustancial en el caché, ya que "usa" la memoria de manera eficiente.

Respuesta2

heemayl ya ha cubierto una buena parte de información sobre la memoria disponible real. Mi publicación aquí es simplemente un par de líneas que puede agregar .bashrccomo alias para usar como descripción general rápida del uso real:

free -h | awk '/free/ {getline; x=$2; getline; print "Used "$3 " Out of " x }'

Y salida de muestra:

$ free -h | awk '/free/ {getline; x=$2; getline; print "Used "$3 " Out of " x  }'                                                                 
Used 1.2G Out of 5.6G

Si está interesado en una investigación más profunda de la memoria, utilice cat /proc/meminfo, que enumera una gran cantidad de información, yeste blogLe ayudará a comprender cómo freeel comando calcula el contenido de ese archivo.

información relacionada