GNU/Linux >> Tutoriales Linux >  >> Linux

Linux:¿determinar correctamente el uso de memoria en Linux?

Estoy un poco confundido con algunos de los resultados que veo de ps y gratis .

En mi servidor, este es el resultado de free -m

[[email protected] ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          2048       2033         14          0         73       1398
-/+ buffers/cache:        561       1486
Swap:         2047         11       2036

Mi comprensión de cómo Linux administra la memoria es que almacenará el uso del disco en la RAM, de modo que cada acceso posterior sea más rápido. Creo que esto está indicado por las columnas "en caché". Además, varios búferes se almacenan en la RAM, indicados en la columna "búferes".

Entonces, si entiendo correctamente, se supone que el uso "real" es el valor "usado" de "-/+ búfer/caché", o 561 en este caso.

Entonces, suponiendo que todo eso sea correcto, la parte que me arroja son los resultados de ps aux .

Mi comprensión del ps resultados, es que la sexta columna (RSS), representa el tamaño en kilobytes que el proceso usa para la memoria.

Así que cuando ejecuto este comando:

[[email protected] ~]# ps aux | awk '{sum+=$6} END {print sum / 1024}'
1475.52

¿No debería el resultado ser la columna "usada" de "-/+ buffers/cache" de free -m ?

Entonces, ¿cómo puedo determinar correctamente el uso de memoria de un proceso en Linux? Aparentemente mi lógica es defectuosa.

Respuesta aceptada:

Copié/pegué descaradamente mi respuesta de serverfault el otro día 🙂

El sistema de memoria virtual de Linux no es tan simple. No puede simplemente sumar todos los campos RSS y obtener el valor informado used por free . Hay muchas razones para esto, pero mencionaré algunas de las más importantes.

  • Cuando un proceso se bifurca, tanto el padre como el hijo se mostrarán con el mismo RSS. Sin embargo, Linux emplea copia en escritura para que ambos procesos realmente usen la misma memoria. Solo cuando uno de los procesos modifica la memoria, esta se duplicará.
    Esto hará que el free el número debe ser más pequeño que el top Suma RSS.

  • El valor RSS no incluye la memoria compartida. Dado que la memoria compartida no es propiedad de ningún proceso, top no lo incluye en RSS.
    Esto hará que el free el número debe ser mayor que el top Suma RSS.


Linux
  1. Uso de memoria de Linux

  2. Linux:¿limitar el uso de memoria para un solo proceso de Linux?

  3. Linux – ¿Uso de memoria real?

  4. Comando libre en Linux explicado con ejemplos

  5. Cómo calcular el uso de memoria en Linux usando sar, ps y gratis

Comando libre de Linux (Comprobar el uso de la memoria)

Comando libre en Linux

¿Cómo interpretar el uso de memoria superior/htop?

Ejemplos de comandos gratuitos en Linux

Encuentra el tamaño de RAM en Linux

Determinar correctamente el uso de memoria en Linux