¿Por qué no se acumula el uso de memoria en "arriba"?

28

Me he dado cuenta de que, a veces, cuando ejecuto top , el uso de memoria de cada proceso en la tabla de procesos no parece sumarse al total.

Por ejemplo, en el siguiente volcado, top dice que estoy usando 16 Gb de memoria. Sin embargo, la tabla de procesos solo muestra dos procesos que utilizan un poco más de 520 Mb. ¿Cómo puedo saber qué está consumiendo los otros 15.5 Gb? (Estoy usando CentOS).

$ top

arriba - 12:16:34 hasta 45 días, 2:28, 3 usuarios, promedio de carga: 0.24, 0.65, 0.71
Tareas: 274 en total, 1 corriendo, 273 durmiendo, 0 detenidos, 0 zombies
CPU (s): 2.3% us, 0.2% sy, 0.0% ni, 97.5% id, 0.0% wa, 0.0% hi, 0.0% si, 0.0% st
Mem: 16432032k total, 16340144k usado, 91888k gratis, 21736k buffers
Intercambio: 18481144k en total, 1112k usados, 18480032k gratis, 15624488k en caché

  PID USUARIO PR NI VIRT RES SHR S% CPU% MEM TIME + COMMAND
18159 jsmith 15 0260 m 31 m 4560 S 16.6 0.2 53: 35.64 pitón
 4795 26 15 0 260m 6608 4220 S 2.0 0.0 0: 00.06 postmaster
    1 raíz 15 0 10344 680 568 S 0.0 0.0 0: 39.36 init
    2 raíz RT -5 0 0 0 S 0.0 0.0 0: 00.53 migración / 0
    3 raíz 34 19 0 0 0 S 0.0 0.0 0: 00.62 ksoftirqd / 0
    4 raíz RT -5 0 0 0 S 0.0 0.0 0: 00.00 perro guardián / 0
    5 raíz RT -5 0 0 0 S 0.0 0.0 0: 02.09 migración / 1
    6 raíz 34 19 0 0 0 S 0.0 0.0 0: 01.32 ksoftirqd / 1
    7 raíz RT -5 0 0 0 S 0.0 0.0 0: 00.00 perro guardián / 1
    8 raíz RT -5 0 0 0 S 0.0 0.0 0: 00.99 migración / 2
    9 raíz 34 19 0 0 0 S 0.0 0.0 0: 01.74 ksoftirqd / 2
   10 raíz RT -5 0 0 0 S 0.0 0.0 0: 00.00 perro guardián / 2
   11 raíz RT -5 0 0 0 S 0.0 0.0 0: 02.16 migración / 3
   12 raíz 34 19 0 0 0 S 0.0 0.0 0: 01.30 ksoftirqd / 3
   13 raíz RT -5 0 0 0 S 0.0 0.0 0: 00.00 perro guardián / 3
   14 raíz RT -5 0 0 0 S 0.0 0.0 0: 01.94 migración / 4
   15 raíz 34 19 0 0 0 S 0.0 0.0 0: 01.78 ksoftirqd / 4
   16 raíz RT -5 0 0 0 S 0.0 0.0 0: 00.00 perro guardián / 4
   17 raíz RT -5 0 0 0 S 0.0 0.0 0: 01.92 migración / 5
   18 raíz 34 19 0 0 0 S 0.0 0.0 0: 01.30 ksoftirqd / 5
   19 raíz RT -5 0 0 0 S 0.0 0.0 0: 00.00 perro guardián / 5
   20 raíz RT -5 0 0 0 S 0.0 0.0 0: 02.06 migración / 6
   21 raíz 34 19 0 0 0 S 0.0 0.0 0: 01.83 ksoftirqd / 6
   22 raíz RT -5 0 0 0 S 0.0 0.0 0: 00.00 perro guardián / 6
   23 raíz RT -5 0 0 0 S 0.0 0.0 0: 02.31 migración / 7
   24 raíz 34 19 0 0 0 S 0.0 0.0 0: 01.50 ksoftirqd / 7
   25 raíz RT -5 0 0 0 S 0.0 0.0 0: 00.00 perro guardián / 7
   26 raíz 10-5 0 0 0 S 0.0 0.0 0: 00.42 eventos / 0
   27 raíz 10-5 0 0 0 S 0.0 0.0 0: 00.28 eventos / 1
   28 raíz 10-5 0 0 0 S 0.0 0.0 0: 00.37 eventos / 2
   29 raíz 10-5 0 0 0 S 0.0 0.0 0: 00.21 eventos / 3
   30 raíz 10-5 0 0 0 S 0.0 0.0 0: 00.38 eventos / 4
   31 raíz 10-5 0 0 0 S 0.0 0.0 0: 00.27 eventos / 5
   32 raíz 10-5 0 0 0 S 0.0 0.0 0: 00.52 eventos / 6
   33 raíz 10-5 0 0 0 S 0.0 0.0 0: 00.64 eventos / 7
   34 raíz 10-5 0 0 0 S 0.0 0.0 0: 00.00 khelper
del
fuente

Respuestas:

26

De las líneas relacionadas con el uso de memoria en la parte superior:

Mem: 16432032k total, 16340144k used, 91888k free, 21736k buffers
Swap: 18481144k total, 1112k used, 18480032k free, 15624488k cached

Ignoremos el intercambio. La memoria total es igual a la suma de la memoria usada y libre. Utilizado, por otro lado, es la suma de "realmente utilizado por las aplicaciones" y el almacenamiento en caché y las memorias intermedias. Entonces, en su caso es así:

  • Mem = 16432032k = 16340144k + 91888k;
  • "Realmente utilizado por las aplicaciones" = Usado - (en caché + buffers) = 16340144k - (15624488k + 21736k) = 693920k.

Los otros 15,5 GB están en caché. Esto mejora el rendimiento. Sin embargo, en el mismo momento en que una aplicación requiere parte de la memoria en caché, se le da inmediatamente. Notará esto si ejecuta alguna aplicación y monitor con mucha memoria top.

grs
fuente
1

Esa lista no me parece 274 totalprocesos. Top generalmente solo muestra lo que cabe en su terminal / pantalla. Utilice en su ps auxlugar y sume el rssvalor (o cualquier columna de memoria residente que muestre su versión).

Tampoco desea sumar el tamaño de la memoria virtual, parece que realmente está interesado en la REScolumna resident ( ).

Daniel Beck
fuente