14 votos

Ubuntu Linux: Proceso de intercambio de memoria y uso de memoria de

Mi Ubuntu consume más memoria de la que el administrador de tareas está mostrando:

sudo ps -e --format rss  | awk 'BEGIN{c=0} {c+=$1} END{print c/1024}'
2750.29

free -m

             total       used       free     shared    buffers     cached
Mem:          3860       2765       1094          0          3        300
-/+ buffers/cache:       2461       1398
Swap:         2729       2374        354

Que extraño. Alguien puede explicar esta diferencia?

Pero lo que es más importante: Me gustaría saber la cantidad de memoria que un proceso realmente está usando. No quiero saber el tamaño de la memoria virtual, sino más bien la memoria residente, además de intercambio de un proceso.

También he tratado de salida el formato param "sz" de "ps", pero la suma de esto es alta (16000 MB) (param 'tamaño' da 36700 MB). Hay otras opciones?

Realmente quiero usar esto para determinar qué programas/procesos de comer a mucha memoria (y swap), para matarlos, porque la memoria es valioso :-) Esto realmente no tiene sentido, así que me estoy preguntando aquí.

Salida de /proc/meminfo:

MemTotal:        3952812 kB                
MemFree:         1119192 kB
Buffers:            2676 kB
Cached:           290068 kB
SwapCached:       160980 kB
Active:          1805396 kB
Inactive:         731680 kB
Active(anon):    1745820 kB
Inactive(anon):   689184 kB
Active(file):      59576 kB
Inactive(file):    42496 kB
Unevictable:         148 kB
Mlocked:             148 kB
SwapTotal:       2795272 kB
SwapFree:         390900 kB
Dirty:              1984 kB
Writeback:             0 kB
AnonPages:       2085472 kB
Mapped:            67432 kB
Shmem:            190676 kB
Slab:              88012 kB
SReclaimable:      42704 kB
SUnreclaim:        45308 kB
KernelStack:        5496 kB
PageTables:        87860 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     4771676 kB
Committed_AS:    9522364 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      374404 kB
VmallocChunk:   34359330144 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       61440 kB
DirectMap2M:     4030464 kB

11voto

Andriyev Puntos 9238

Linux sistema de memoria virtual no es tan simple. Usted no puede simplemente sumar todos los RSS de los campos y obtener el valor reportado utilizado por free. Hay muchas razones para esto, pero me voy a pegar un par de los más grandes.

  • Cuando un proceso se bifurca, el padre y el hijo se mostrará con el mismo RSS. Sin embargo linux emplea un copy-on-write, de modo que ambos procesos son realmente el uso de la misma memoria. Sólo cuando uno de los procesos que se modifica la memoria es en realidad ser duplicada.
    Así que esto hará que el free número sea menor que el top RSS suma.

  • El RSS valor que no incluye la memoria compartida. Porque la memoria compartida no es propiedad de ninguna 1 proceso, la parte superior no se incluyen en RSS. Así que esto hará que el free número que sea mayor que el top RSS suma.

1voto

datn Puntos 99

Creo que es mejor confiar en la salida de "libre" en cuanto a su uso total de memoria va, y confiar en la "ps" para tener una idea general de la cantidad de memoria de un proceso único que se está usando.

Sólo porque la suma de "ps" RSS de los valores no es igual que "libre" no deje usted de clasificación de sus procesos a través de RSS y la evaluación de los más grandes para matar.

Dicho esto, si todo tu esfuerzo es sólo en el servicio de asegurarse de que la máquina puede hibernar, la creación de más de swap (en la forma de un archivo en el disco, si es necesario) es, probablemente, un camino más fácil de tomar.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: