Wie man herausfindet, welcher Prozess die gesamte Erinnerung verschlingt

8

Ich benutze SUSE, ich habe 31 GB Speicher Mem: 31908592k insgesamt, 31429632k verwendet, 478960k frei, 12176k Puffer Wie finde ich heraus, welcher Prozess meinen gesamten Speicher verbraucht.

AlBouazizi
quelle
Der verwendete Speicher war 22 GB. Ich habe den Befehl rsync ausgeführt, dann beginnt er, meinen Speicher zu verschlingen. Ich töte -9 rsync. Der verwendete Speicher wurde erhöht, aber nie reduziert, nachdem der rsync-Prozess beendet wurde
AlBouazizi
1
... Warum hast du kill -9rsync?! rsync verfügt über geeignete Mechanismen zum Herunterfahren und kill -9ist nie einer davon.
Ignacio Vazquez-Abrams
Warum töte ich -9 rsync? Boz, ich habe bemerkt, dass es viele Memry braucht. Mir wird das Mem ausgehen. Gibt es eine andere Möglichkeit, Rsync zu stoppen? Vielen Dank für Ihre Antwort
AlBouazizi
1
Äh, ja. Strg-C.
Ignacio Vazquez-Abrams
Oder einfach nur killohne -9, oder kill -2wenn Sie genau den gleichen Effekt wie möchten ctrl-C, aber kein offenes Terminal mit dem Prozess verbunden ist.
Dave Sherohman

Antworten:

9

Sieht so aus, als würdest du rennen free, auf die erste Zeile schauen und ausflippen. Das ist ok; viele Leute machen das.

Ignorieren Sie die erste Ausgabezeile von free. Ja wirklich. Linux ist sehr aggressiv beim Zwischenspeichern von Daten von der Festplatte, einschließlich "ausgelagerter" virtueller Speicherseiten im RAM, und alle zwischengespeicherten Daten werden in freeder ersten Zeile als "verwendet" gezählt , obwohl sie in einer Mikrosekunde wieder verfügbar gemacht werden können (oder weniger heutzutage) bei Bedarf.

Sie müssen sich die zweite Ausgabezeile ansehen free, die mit der Bezeichnung gekennzeichnet ist -/+ buffers/cache:. In dieser Zeile erfahren Sie, wie viel Speicher tatsächlich durch Ausführen von Programmen gebunden ist, und ignorieren, was momentan von Puffern und Cache verwendet wird.

Zum Beispiel zeigt meine Maschine derzeit:

             total       used       free     shared    buffers     cached
Mem:       3083924    2177300     906624          0     461344     837008
-/+ buffers/cache:     878948    2204976
Swap:      4000148          0    4000148

Obwohl derzeit nur 906624 Byte RAM völlig ungenutzt sind, gibt es zusätzliche 461344 Byte Puffer und 837008 Byte zwischengespeicherter Daten, die mehr oder weniger sofort verfügbar gemacht werden können, wenn etwas Wichtigeres (dh fast alles) ) benötigt den Speicher und gibt mir insgesamt 2204976 Bytes, die mir tatsächlich zur Verfügung stehen.

Dave Sherohman
quelle
Vielen Dank für Ihre Antwort. Meine Frage ist, warum ich 30 GB verwendet habe, um etwas auszuführen. Insgesamt verwendete kostenlose gemeinsam genutzte Puffer zwischengespeichert Mem: 31908592 31407424 501168 0 12176 0 - / + Puffer / Cache: 31395248 513344 Swap: 10239968 112 10239856 Ich suche immer noch nach einer Memgröße von 30906256, welches Programm dieses Mem verwendet, im Moment läuft nichts. Das ist meine Frage
AlBouazizi
8

Laufen top, dann drücken ShiftO, dann N, dann endlich Enter. Drücken QSie, wenn Sie beenden möchten.

Und vergessen Sie nicht: "Linux hat meinen RAM gefressen!" .

Ignacio Vazquez-Abrams
quelle
@Abrams: danke, ich bin top mit shift o gelaufen, dann zeigt es viele smbd von root, die es nicht nur top gesehen haben? Kannst du bitte erklären?
AlBouazizi
+1 für einen Link, der die aggressive Caching-Richtlinie von Linux erklärt.
Dave Sherohman
1

Verwenden Sie den topBefehl. Es wird eine Liste aller ausgeführten Prozesse angezeigt, sortiert nach denjenigen, die standardmäßig die meiste CPU verwenden. Wenn Sie die Taste shiftMdrücken, wird stattdessen nach Speichernutzung sortiert. Sie sehen die Top-Memory-Täter oben in der Liste.

Schwach
quelle
danke für deine antwort .. ich fange sogar die oberen fenster mit shift M ein .. ich sehe nicht, dass der prozess mit einem großen mem abspielt .. ich möchte dir das erfasste img zeigen .. wie es möglich ist, das img anzuhängen auf meine Antwort an Sie .. ich
bin
Fügen Sie kein Bild hinzu, kopieren Sie einfach den Test und fügen Sie ihn ein - auf diese Weise ist es viel einfacher zu lesen.
Flimzy
@ AlBouazizi: Anscheinend haben Sie vergessen, das Stück in meiner Antwort zu lesen, das ich Ihnen sagte, nicht zu vergessen ...
Ignacio Vazquez-Abrams