Ich habe einen Server mit 12 GB Speicher. Ein Fragment von oben ist unten gezeigt:
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
Das 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 das richtig verstehe, verfügt das System nur über 362 MB verfügbaren Speicher. Meine Frage ist: Wie kann ich herausfinden, welcher Prozess den größten Teil des Speichers verbraucht?
Genau wie Hintergrundinformationen läuft das System 64bit OpenSuse 12
.
Antworten:
Wiederholen Sie zunächst dieses Mantra für eine Weile: "Nicht verwendeter Speicher ist verschwendeter Speicher". Der Linux-Kernel speichert riesige Mengen an Dateimetadaten und angeforderten Dateien, bis etwas, das wichtiger aussieht, diese Daten herausdrückt. Deshalb kannst du rennen:
und lassen Sie die zweite
find
Instanz mit lächerlicher Geschwindigkeit laufen.Linux lässt nur ein wenig Speicher "frei", um Spitzen in der Speichernutzung ohne allzu großen Aufwand zu verarbeiten.
Zweitens möchten Sie die Prozesse finden, die Ihr gesamtes Gedächtnis verschlingen. in
top
Verwendung der inM
den Befehlsspeicher durch Verwendung zu sortieren. Sie können dieVIRT
Spalte ignorieren , in der nur angegeben ist, wie viel virtueller Speicher zugewiesen wurde und nicht, wie viel Speicher der Prozess verwendet.RES
Berichte , wie viel Speicher resident , oder zur Zeit in ram (im Gegensatz zu auf die Festplatte ausgelagert Gegensatz oder eigentlich nie an erster Stelle zugewiesen, trotz Aufforderung).Da
RES
jedoch z. B. der/lib/libc.so.6
Speicher für fast jeden Prozess einmal gezählt wird, ist dies nicht gerade ein hervorragendes Maß dafür, wie viel Speicher ein Prozess verwendet. DieSHR
Spalte berichtet , wie viel Speicher wird geteilt mit anderen Prozessen, aber es gibt keine Garantie , dass ein anderer Prozess tatsächlich teilt - es sharable sein könnte, nur sonst niemand will zu teilen.Das
smem
Tool soll den Benutzern helfen, besser einzuschätzen, wie viel Speicher wirklich für jeden einzelnen Prozess verantwortlich gemacht werden sollte. Es macht einige kluge Arbeit, um herauszufinden, was wirklich einzigartig ist, was gemeinsam genutzt wird, und passt den gemeinsam genutzten Speicher proportional zu den Prozessen an, die ihn gemeinsam nutzen.smem
kann Ihnen helfen zu verstehen, wo Ihr Gedächtnis besser als dertop
Wille ist, ist abertop
ein ausgezeichnetes erstes Werkzeug.quelle
/proc/meminfo
und/proc/slabinfo
-Dateien beschreiben, wofür der Kernel den Speicher verwendet - dasslabtop
Programm ist sehr ähnlichtop
, zeigt aber, welche derVerwenden Sie den Quick-Tipp mit dem Befehl top unter Linux / Unix
und dann Shift+ drücken m(dh ein Kapital schreiben
M
).Von
man top
Oder alternativ: Drücken Sie Shift+ fund wählen Sie die zu sortierende Anzeige nach Speichernutzung, indem Sie die Taste ndrücken und dann drücken Enter. Sie sehen den aktiven Prozess nach Speichernutzung sortiert
quelle
M
(Shift
+m
)top -o mem -O cpu
top -o RES
ansonsten "nicht erkannten Feldnamen 'mem'"(Hinzufügen eines numerischen Flags -n zum Sortierbefehl.)
quelle
ps aux --sort '%mem'
Zuerst sollten Sie eine Erklärung zur Ausgabe von
free
lesen . Fazit: Sie haben mindestens 10,7 GB Speicher, der von Prozessen problemlos verwendet werden kann.Dann sollten Sie definieren, was "Speichernutzung" für einen Prozess ist (es ist nicht einfach oder eindeutig, vertrauen Sie mir).
Dann können wir vielleicht mehr helfen :-)
quelle
Auflisten und Sortieren von Prozessen nach Speichernutzung:
quelle
ps -e -orss=,args= | sort -nr | head
ps aux --sort '%mem'
from procps 'ps (Standard unter Ubuntu 12.04) generiert folgende Ausgaben:
Hier ist Firefox mit 16% meines Gedächtnisses der Top-Konsument.
Sie könnten auch interessiert sein an:
quelle
Mit den folgenden Schritten können Sie angeben, nach welcher Spalte sortiert werden soll:
quelle
Sie können die Speichernutzung anzeigen, indem Sie diesen Code in Ihrem Terminal ausführen:
quelle
So summieren Sie den verwendeten Speicher nach Prozessnamen:
Selbst wenn man sich die größten Einzelprozesse ansieht, wird manchmal immer noch viel Speicherplatz nicht berücksichtigt. Um zu überprüfen, ob viele der gleichen kleineren Prozesse den Speicher verwenden, können Sie einen Befehl wie den folgenden verwenden, der awk verwendet, um den Gesamtspeicher zusammenzufassen, der von gleichnamigen Prozessen verwendet wird:
zB Ausgabe
quelle
Genau in dieser Sekunde
Kontinuierliche Aktualisierung
Ich habe hier auch ein paar Leckereien hinzugefügt, die Sie vielleicht schätzen (oder die Sie vielleicht ignorieren).
-n 1
jede Sekunde ansehen und aktualisieren-U $(whoami)
Nur Ihre Prozesse anzeigen. $ (ein Befehl) wird jetzt ausgewertet| head -n4
Um nur den Header und 3 Prozesse gleichzeitig anzuzeigen, benötigen Sie häufig nur Werbebuchungen mit hohem Nutzungsgrad${1-4}
sagt mein erstes Argument$1
ich möchte standardmäßig 4 verwenden, es sei denn, ich gebe es anWenn Sie einen Mac verwenden, müssen Sie möglicherweise zuerst watch installieren
Alternativ können Sie eine Funktion verwenden
quelle
-m
zu-r
Sie haben diesen einfachen Befehl:
quelle