Ubuntu: Speicherverlust

1827
Keener

Ich habe Probleme bei der Suche nach dem Speicherleck. Ich verwende Ubuntu 8.04 LTS auf einem Dell XPS M1530. Ich habe 3 GB RAM und finde nach ca. einer Stunde oder so Verwendung von Top 2 mir 2 GB +. Das Merkwürdige ist, wenn ich die Speicherprozentsätze nach PID entweder von oben oder von ps aux aufsummiere. Ich finde, dass ich nur etwa 20-25% meines verfügbaren RAMs verwenden sollte.

Was mich darauf aufmerksam gemacht hat, war, dass ich den vmware-Server wieder gestartet habe. Nun, offensichtlich erhöht sich die RAM-Auslastung, wenn ich eine virtuelle Maschine lade, aber der von VMware verwendete Speicher berücksichtigt nicht die Speicherauslastung, die ich über Top oder Free sehe. Durch das Stoppen des VMware-Servers wird der Speicher freigegeben, der ihm zugewiesen wurde, aber ich kann immer noch nicht feststellen, wo dieser RAM verwendet wird. Nach einem kompletten Neustart ist der Speicher natürlich in Ordnung, steigt jedoch sehr schnell auf 60-80%, wobei die Prozesse nur ein Drittel davon ausmachen. Irgendwelche Ideen, wo ich nach weiteren Informationen suchen sollte, was das sein könnte?

0

4 Antworten auf die Frage

3
Broam

Verwenden Sie Ihren Swap überhaupt?

Wenn nicht, würde ich mir keine Sorgen machen. Linux verwendet gern freien Speicher zum Zwischenspeichern von Festplattenblöcken.

Wenn Sie überzeugt sind, dass Sie tatsächlich ein Speicherleck haben, würde ich die verwendeten Treiber untersuchen. Nur für binäre Treiber sind schwer zu debuggen, daher würde ich erwarten, dass sie möglicherweise undichte Stellen haben.

Well, here's the odd part. It's not using the swap space, however it's becoming obnoxiously sluggish, sometimes even refusing to load new programs when the memory usage is extremely high and yet it doesn't dip into the swap. Doesn't make much sense to me, but thanks for the tip. Keener vor 14 Jahren 0
Looks like I couldn't find a real memory leak, so it must just be the disk caching. Thanks for the help! Keener vor 14 Jahren 0
1
snies

Überprüfen Sie Ihre "echte" Speichernutzung mit dem Befehl "free". Beachten Sie, dass Linux die Inhalte so lange wie möglich im Speicher hält, da Sie sie möglicherweise erneut verwenden können. Dadurch wird eine große Cache- / Pufferverwendung des Speichers erzeugt.

Als Antwort auf Keeners Kommentar bearbeiten:

 total used free shared buffers cached Mem: 4058084 3974976 83108 0 89152 3520952 -/+ buffers/cache: 364872 3693212 Swap: 2040212 157048 1883164 

Haben Sie die Zeile "- / + Puffer / Cache" (was ich bezweifle, dass Sie dies klar oben sehen können) überprüft? Haben Sie dann immer noch sehr wenig Speicherplatz in dieser Zeile? Wie Sie in meinem Beispiel sehen können, ist dies der "echte" freie Speicher, während Sie in der ersten Zeile oder in der oberen Zeile nur einen ziemlich nutzlosen Wert sehen. Jetzt möchte ich nur sicherstellen, dass Sie die Ausgabe verstehen. Wenn Sie, wie Sie bereits sagten, bereits kostenlos nachgesehen haben, hätten Sie gesehen, dass Sie kein Leck haben und Ihr Rechner nur zwischengespeichert wird, wie Sie in Ihrem abschließenden Kommentar zur Lösung sagen .

Free gibt die gleichen Ergebnisse wie oben wieder. Keener vor 14 Jahren 0
@Keener - Hast du das Tool "free" benutzt und die "- / + Puffer / Cache" -Linie wie in der Bearbeitung meines Beitrags oben beschrieben angesehen? snies vor 14 Jahren 0
Yes, I did look at the 'free' tool. The issue was I didn't know that *nix cached so much to ram, so I assumed it was a memory leak and I see now the error of my assumptions. Thank you for the help! Keener vor 14 Jahren 0
1
wazoox

Glückwunsch, es ist derselbe "Fehler", den Windows 7-Benutzer "verletzt" :) Linux verwendet (und dies seit mindestens zehn Jahren) den ungenutzten Arbeitsspeicher, um Festplatten zu zwischenspeichern und verschiedene Daten zu puffern. Microsoft hat kürzlich erkannt, dass dies eine sehr gute Idee ist, und viele Leute haben sich kürzlich darüber beschwert. Suche nach "Windows 7 Speicherleck" zum Spaß :)

Eigentlich Windows Vista. Sathya vor 14 Jahren 2
1
rsa

Mit dem folgenden Befehl können Sie den Cache freigeben, ohne den Server neu zu starten. Überprüfen Sie topvor und nach dem Befehl.

echo 1 > /proc/sys/vm/drop_caches