it-swarm.com.de

Wie lassen sich Top-Prozesse nach der tatsächlichen Speichernutzung anzeigen?

Ich habe einen Server mit 12G Speicher. Ein Fragment von oben ist unten dargestellt:

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

Der free -m zeigt Folgendes:

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

Wenn ich es richtig verstanden habe, hat das System nur 362 MB Arbeitsspeicher. Meine Frage ist: Wie kann ich herausfinden, welcher Prozess den meisten Speicherplatz verbraucht?

Genau wie Hintergrundinformationen läuft das System 64bit OpenSuse 12.

219
user3111525

Wiederholen Sie dieses Mantra zunächst für eine kurze Zeit: "ungenutzter Speicher ist vergeudeter Speicher". Der Linux-Kernel bewahrt riesige Mengen an angeforderten Datei-Metadaten und -Dateien auf, bis etwas Wichtigeres aussieht, als würden diese Daten ausgegeben. Darum kannst du laufen:

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

und lassen Sie die zweite find-Instanz mit lächerlicher Geschwindigkeit laufen.

Linux lässt nur wenig Speicherplatz frei, um die Speicherauslastung ohne großen Aufwand zu bewältigen.

Zweitens möchten Sie die Prozesse finden, die Ihr gesamtes Gedächtnis auffressen. Verwenden Sie in top den Befehl M, um nach Speicherverwendung zu sortieren. Ignorieren Sie die Spalte VIRT, die Ihnen nur sagt, wie viel virtueller Speicher zugewiesen wurde, und nicht wie viel Speicher der Prozess benötigt. RES meldet, wie viel Speicher resident ist oder sich derzeit in RAM befindet (im Gegensatz zu ausgelagerter Festplatte oder nie tatsächlich zugewiesen, obwohl angefordert).

Da RES z. /lib/libc.so.6 Speicher einmal für fast jeden Prozess. Es ist nicht unbedingt ein großartiger Maßstab dafür, wie viel Speicher ein Prozess belegt. In der Spalte SHR wird angegeben, wie viel Speicher shared mit anderen Prozessen gemeinsam genutzt wird. Es kann jedoch nicht garantiert werden, dass ein anderer Prozess tatsächlich gemeinsam genutzt wird - er kann gemeinsam genutzt werden.

Das Tool smem soll Benutzern dabei helfen, besser zu ermitteln, wie viel Speicherplatz wirklich für jeden einzelnen Prozess verantwortlich gemacht werden sollte. Es ist eine kluge Arbeit, um herauszufinden, was wirklich einzigartig ist, was geteilt wird, und proportional den gemeinsamen Speicher proportional zu den Prozessen, die ihn teilen. smem kann Ihnen helfen zu verstehen, wo Ihr Gedächtnis besser abläuft als top, aber top ist ein hervorragendes erstes Werkzeug.

271
sarnold

verwenden Sie in Linux/Unix den Befehl top, um einen schnellen Tipp zu erhalten

$ top

und dann schlagen Shift+m (d. h. schreiben Sie ein Großbuchstaben M).

Von 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

Oder alternativ: treffen Shift + f Wählen Sie dann die Anzeige, die nach Speichernutzung sortiert werden soll, indem Sie die Taste drücken n dann drücken Enter. Sie sehen den aktiven Prozess nach Speichernutzung sortiert

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

(Hinzufügen eines -n numerischen Flags zum Sortierbefehl.)

35
Angelinux

Zuerst sollten Sie eine Erklärung zur Ausgabe von free lesen. Fazit: Sie haben mindestens 10,7 GB Arbeitsspeicher, der von Prozessen problemlos verwendet werden kann.

Dann sollten Sie definieren, was "Speicherauslastung" für einen Prozess ist (es ist nicht einfach oder eindeutig, vertrauen Sie mir).

Dann können wir vielleicht noch weiterhelfen :-)

28
thkala

Auflisten und Sortieren von Prozessen nach Speichernutzung:

ps -e -orss=,args= | sort -b -k1,1n | pr -TW$COLUMNS
20

ps aux --sort '%mem'

aus procps 'ps (Standardeinstellung für Ubuntu 12.04) erzeugt eine Ausgabe wie:

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

Hier ist Firefox mit 16% meines Gedächtnisses der Top-Consumer.

Vielleicht interessiert Sie auch:

ps aux --sort '%cpu'

sie können mit den folgenden Schritten angeben, nach welcher Spalte sortiert werden soll:

 Schritte: 
 * top 
 * shift + F 
 * Wählen Sie eine Spalte aus der Liste 
 z.B. n bedeutet Sortieren nach Speicher, 
 * Drücken Sie die Eingabetaste 
 * OK 
4
Eric Wang

Sie können den Speicherbedarf sehen, indem Sie diesen Code in Ihrem Terminal ausführen:

$ watch -n2 free -m
$ htop
1
Cubiczx

Sie haben diesen einfachen Befehl: 

$ free -h
0
Christian IC