Cómo verificar qué proceso está usando más memoria

33

Cuando registro freeen uno de los servidores Prod, muestra que se está utilizando el 70% de la memoria:

             total       used       free     shared    buffers     cached
Mem:     164923172  141171860   23751312          0    4555616   20648048
-/+ buffers/cache:  115968196   48954976
Swap:      8388600          0    8388600

Pero no encontré qué proceso está usando la memoria, probé el topcomando y muestra el proceso usando solo la memoria 1.1 y 5.4%

¿Cómo puedo encontrar qué proceso está usando la memoria?

A continuación se muestran los resultados del comando superior:

15085 couchbas  25   0 2784m 2.4g  40m S 183.7  1.5 299597:00 beam.smp
28248 tibco     18   0  124m 100m 3440 S 20.9  0.1   2721:45 tibemsd
15334 couchbas  15   0 9114m 8.6g 3288 S  9.0  5.4  12996:28 memcached
15335 couchbas  18   0  6024  600  468 S  2.0  0.0   1704:54 sigar_port
15319 couchbas  15   0  775m 2516  944 S  0.7  0.0 269:13.41 i386-linux-godu
12167 tibco     16   0 11284 1464  784 R  0.3  0.0   0:00.04 top
12701 root      15   0  451m 427m 2140 S  0.3  0.3  18:25.02 controller
13163 root      11  -5     0    0    0 S  0.3  0.0 289:58.58 vxglm_thread
sandeep
fuente
Gracias por su rápida respuesta, ¿Hay alguna forma de verificar qué archivos abiertos están abiertos y qué archivo está comiendo memoria?
1
Intente ordenar la salida superior : cuando se ejecuta, presione Shift + m
Eenoku

Respuestas:

50

Esto le mostrará los 10 mejores procesos que utilizan la mayor cantidad de memoria:

ps aux --sort=-%mem | awk 'NR<=10{print $0}'

mUso de la parte superior: cuando abrió la parte superior, presione el proceso corto en función del uso de la memoria.

Pero esto no resolverá su problema, en Linux todo es archivo o proceso. así que los archivos que abriste también se comerán la memoria. entonces esto no ayudará.

lsof le dará todos los archivos abiertos con el tamaño del archivo o el desplazamiento del archivo en bytes.

Adicto al alcohol
fuente
55
Puede usar en headlugar de este script awk: proporciona el mismo resultado y se ahorra escribiendo muchos caracteres extraños.
espuma de poliestireno volar
9

Tu carnero no se usa realmente. Linux simplemente almacena en caché las cosas en su disco de forma predeterminada, y coloca lo que almacena en caché en la sección "usada" de ram.

Si carga aplicaciones que realmente usan esa RAM, serán su uso.

Ver http://www.linuxatemyram.com/

Jean-Michaël Celerier
fuente
¿Quién dijo algo sobre Linux?
Timothy Pulliam
el OP tiene un proceso "i386-linux-godu" en ejecución
Jean-Michaël Celerier
6

Puede canalizar ps y ordenar para obtener el proceso utilizando la mayor cantidad de memoria. También le permitirá especificar otros detalles del proceso que desea ver con él:

ps -eo pmem,pcpu,rss,vsize,args | sort -k 1 -n -r | less

PD: lo anterior supone que su columna de memoria es primero " sort -k 1 -n -r "

Hynk
fuente
3

Puede usar el comando slabtop para ver qué objetos de losa son utilizados por el núcleo.
También puede verificar la salida de / proc / meminfo

Busque estas 2 líneas en la salida

Slab:              68136 kB
SReclaimable:      21208 kB 

El ejemplo anterior muestra 68 MB de caché de losa que usa el núcleo y se pueden recuperar 21 MB. Para reclamar puede usar la técnica descrita aquí https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html-single/Performance_Tuning_Guide/#s-memory-tunables

echo 2 > /proc/sys/vm/drop_caches  
Dmitry Zayats
fuente
1

Para un análisis interactivo, puede usar htop, luego pulsar la tecla de función F6para elegir el orden de clasificación, por ejemplo PERCENT_CPU(uso de memoria en porcentajes), M_RESIDENT(tamaño de memoria residente, la memoria real que se usa), M_SIZE(tamaño de memoria virtual) o M_SHARE(tamaño de memoria compartida). Los dos primeros son los números relevantes .

Las líneas verdes son hilos. Golpear (mayúscula) Ky Hocultarlos.

Marc Wäckerlin
fuente