linux porcentaje - ¿Cómo ver los procesos principales ordenados por el uso de memoria real?




consumo ordenador (8)

Puede ver el uso de la memoria ejecutando este código en su terminal:

$ watch -n2 free -m
$ htop

Tengo un servidor con 12G de memoria. Un fragmento de la parte superior se muestra a continuación:

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                                                                                                                                                                      
12979 frank  20   0  206m  21m  12m S   11  0.2  26667:24 krfb                                                                                                                                                                                                                                                          
13 root      15  -5     0    0    0 S    1  0.0  36:25.04 ksoftirqd/3                                                                                                                                                                                                                                                   
59 root      15  -5     0    0    0 S    0  0.0   4:53.00 ata/2                                                                                                                                                                                                                                                         
2155 root      20   0  662m  37m 8364 S    0  0.3 338:10.25 Xorg                                                                                                                                                                                                                                                          
4560 frank  20   0  8672 1300  852 R    0  0.0   0:00.03 top                                                                                                                                                                                                                                                           
12981 frank  20   0  987m  27m  15m S    0  0.2  45:10.82 amarok                                                                                                                                                                                                                                                        
24908 frank  20   0 16648  708  548 S    0  0.0   2:08.84 wrapper                                                                                                                                                                                                                                                       
1 root      20   0  8072  608  572 S    0  0.0   0:47.36 init                                                                                                                                                                                                                                                          
2 root      15  -5     0    0    0 S    0  0.0   0:00.00 kthreadd

El free -m muestra lo siguiente:

             total       used       free     shared    buffers     cached
Mem:         12038      11676        362          0        599       9745
-/+ buffers/cache:       1331      10706
Swap:         2204        257       1946

Si entiendo correctamente, el sistema tiene solo 362 MB de memoria disponible. Mi pregunta es: ¿Cómo puedo saber qué proceso consume la mayor parte de la memoria?

Al igual que la información de fondo, el sistema ejecuta 64bit OpenSuse 12 .


Primero debes leer una explicación sobre la salida de forma free . En pocas palabras: tiene al menos 10,7 GB de memoria fácilmente utilizable por los procesos.

Luego, debe definir qué es el "uso de memoria" para un proceso (no es fácil ni inequívoco, confíe en mí).

Entonces podríamos ayudar más :-)


ps aux | awk '{print $2, $4, $11}' | sort -k2rn | head -n 10

(Agregando el indicador numérico -n para ordenar el comando).


Primero, repita este mantra por un momento: "la memoria no utilizada es memoria desperdiciada". El kernel de Linux mantiene grandes cantidades de metadatos de archivos y archivos que se solicitaron, hasta que algo que parece más importante elimina esos datos. Es por eso que puedes correr:

find /home -type f -name '*.mp3'
find /home -type f -name '*.aac'

y haz que la segunda instancia de find ejecute a una velocidad ridícula.

Linux solo deja un poco de memoria 'libre' para manejar los picos en el uso de la memoria sin demasiado esfuerzo.

Segundo, quieres encontrar los procesos que están comiendo toda tu memoria; en la top use el comando M para ordenar por uso de memoria. Siéntase libre de ignorar la columna VIRT , que solo le dice cuánta memoria virtual se ha asignado, no cuánta memoria está usando el proceso. RES informa de cuánta memoria reside , o está actualmente en RAM (en lugar de intercambiarse en disco o en realidad nunca se asignó, a pesar de haber sido solicitada).

Pero, dado que RES contará, por ejemplo, la memoria /lib/libc.so.6 una vez para casi todos los procesos, no es exactamente una medida asombrosa de cuánta memoria está usando un proceso. La columna SHR informa cuánta memoria se comparte con otros procesos, pero no hay garantía de que otro proceso realmente se esté compartiendo; podría compartirse, pero nadie más quiere compartirla.

La herramienta smem está diseñada para ayudar a los usuarios a smem mejor la cantidad de memoria que realmente debe atribuirse a cada proceso individual. Hace un trabajo inteligente para descubrir qué es realmente único, qué se comparte y proporcionalmente compara la memoria compartida con los procesos que la comparten. smem puede ayudarlo a comprender a dónde va mejor su memoria que la top , pero top es una excelente primera herramienta.


ps aux --sort '%mem'

desde procps 'ps (por defecto en Ubuntu 12.04) genera una salida como:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
...
tomcat7   3658  0.1  3.3 1782792 124692 ?      Sl   10:12   0:25 /usr/lib/jvm/java-7-oracle/bin/java -Djava.util.logging.config.file=/var/lib/tomcat7/conf/logging.properties -D
root      1284  1.5  3.7 452692 142796 tty7    Ssl+ 10:11   3:19 /usr/bin/X -core :0 -seat seat0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch
ciro      2286  0.3  3.8 1316000 143312 ?      Sl   10:11   0:49 compiz
ciro      5150  0.0  4.4 660620 168488 pts/0   Sl+  11:01   0:08 unicorn_rails worker[1] -p 3000 -E development -c config/unicorn.rb             
ciro      5147  0.0  4.5 660556 170920 pts/0   Sl+  11:01   0:08 unicorn_rails worker[0] -p 3000 -E development -c config/unicorn.rb             
ciro      5142  0.1  6.3 2581944 239408 pts/0  Sl+  11:01   0:17 sidekiq 2.17.8 gitlab [0 of 25 busy]                                                                          
ciro      2386  3.6 16.0 1752740 605372 ?      Sl   10:11   7:38 /usr/lib/firefox/firefox

Así que aquí Firefox es el principal consumidor con el 16% de mi memoria.

Usted también podría estar interesado en:

ps aux --sort '%cpu'

Puede especificar qué columna ordenar, con los siguientes pasos:

steps:
* top
* shift + F
* select a column from the list
    e.g. n means sort by memory,
* press enter
* ok

Usa la punta rápida usando el comando top en linux / unix

$ top

y luego presiona Shift + m (es decir, escribe una M mayúscula).

De man top

SORTING of task window
  For compatibility, this top supports most of the former top sort keys.
  Since this is primarily a service to former top users, these commands do
  not appear on any help screen.
    command   sorted-field                  supported
      A         start time (non-display)      No
      M         %MEM                          Yes
      N         PID                           Yes
      P         %CPU                          Yes
      T         TIME+                         Yes

O alternativamente: presione Shift + f , luego elija la pantalla para ordenar por el uso de la memoria presionando la tecla n y luego presione Enter . Verás un proceso activo ordenado por el uso de la memoria.


Sun Java 1.4 tiene los siguientes argumentos para controlar el tamaño de la memoria:

-Xmsn Especifique el tamaño inicial, en bytes, del grupo de asignación de memoria. Este valor debe ser un múltiplo de 1024 mayor que 1MB. Agregue la letra ko K para indicar kilobytes, o m o M para indicar megabytes. El valor predeterminado es 2MB. Ejemplos:

           -Xms6291456
           -Xms6144k
           -Xms6m

-Xmxn Especifique el tamaño máximo, en bytes, del grupo de asignación de memoria. Este valor debe ser un múltiplo de 1024 mayor que 2MB. Agregue la letra ko K para indicar kilobytes, o m o M para indicar megabytes. El valor predeterminado es 64MB. Ejemplos:

           -Xmx83886080
           -Xmx81920k
           -Xmx80m

http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/java.html

Java 5 y 6 tienen algo más. Consulte http://java.sun.com/javase/technologies/hotspot/vmoptions.jsp





linux memory ram opensuse