Wie reinige oder deaktiviere ich den Speichercache?

49

Nachdem das System gestartet wurde, füllt sich in wenigen Minuten mein Speichercache und der Swap wird verwendet. Hier ist ein Screenshot von / proc / meminfo.

Erinnerung

Wenn ich diesen Prozess deaktivieren / den Cache danach einmal bereinigen kann, wird mein System meiner Meinung nach bis zu einem gewissen Grad schneller. Korrigiere mich, wenn ich hier falsch liege.

Ich habe auch Bleachbit-Speicherbereinigung versucht, aber es scheint, den Speichercache nicht richtig zu reinigen. Außerdem befindet sich das Feature noch in einem experimentellen Stadium.

Bleachbit-Speicher

Hier wurde bereits eine ähnliche Frage gestellt: Wie kann ich den Prefetch-Cache deaktivieren? , aber es ging um Ubuntu Server, und auch die Antworten bezogen sich auf manuelle Einstellungen usw.

Ich möchte wissen, ob es eine Software zum Deaktivieren / Aktivieren des Speicher-Cache für Ubuntu 12.04 gibt.

Bharadwaj Srigiriraju
quelle
Sind Sie sicher, dass dies Ihr Problem lösen wird? Der Speicher füllt sich nicht ohne Grund. Ich hatte auch das Problem, dass sich mein Gedächtnis füllte und es zurückverfolgte tracker-miner. Nachdem ich alle Tracker-Pakete deinstalliert hatte, verschwand mein Problem. Ich habe auch 4 GB Speicher und 2 GB werden von Chaches verwendet, aber ich habe noch keine Probleme.
Daniel Kullmann
1
@ Danielkullmann: Er bezieht sich auf zwischengespeicherten Speicher, nicht von Apps verwendeten Speicher ...
ish
@izx Ja, ich weiß. Es könnte einfach sein, dass er nach der Lösung des falschen Problems sucht. Der Kernel ist intelligent genug, um den Speicher nicht mit Caches zu füllen, wenn er von Programmen benötigt wird. Deshalb denke ich, dass seine Speicherprobleme von einem Programm herrühren, das zu viel Speicher verwendet.
Daniel Kullmann
@ Danielkullmann: Ich bin neugierig zu wissen, wie Sie es auf einen Prozess zurückführen, der all diesen Speicher verschlingt ... Gibt es ein Werkzeug / einen Befehl dafür?
Bharadwaj Srigiriraju
Ich habe gerade den Befehl htop verwendet und nach Speichernutzung sortiert.
Daniel Kullmann

Antworten:

58

Hinweis: Linux "frisst" NICHT Ihren RAM! Bitte werfen Sie einen Blick auf die exzellente Antwort von Geirha, um zu verstehen, warum ...

Wenn Sie nach dem obigen Hinweis immer noch das Gefühl haben, dass der Cache "bereinigt" werden könnte, können Sie es auf jeden Fall versuchen: Es handelt sich um einen Einzeiler vom Terminal aus:

sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

Es gibt keine einfache Möglichkeit , den Cache zu deaktivieren , aber Sie können den gleichen Effekt erzielen, indem Sie ihn so oft wie jede Minute bereinigen , wenn Sie Folgendes möchten:

  • Mach es zu einem Cron-Job
  • Drücken Sie Alt-F2, geben Sie ein gksudo gedit /etc/crontabund fügen Sie diese Zeile unten hinzu:

    */15 * * * * root sync && echo 3 > /proc/sys/vm/drop_caches

  • Dies reinigt alle 15 Minuten. Sie können 1 oder 5 Minuten einstellen, wenn Sie wirklich möchten, indem Sie den ersten Parameter auf *oder */5anstelle von ändern*/15

Ein Liner, um REAL freien RAM zu kennen, mit Ausnahme des Cache

Geirhas Antwort erklärt die Details, aber kurz gesagt, Sie erhalten die Anzahl der freien Megabyte mit:

free -m | sed -n -e '3p' | grep -Po "\d+$"

Was auf meinem 2 GB-Befehlszeilenserver einen extremen Zustand zurückgibt 1835.

ish
quelle
3
Ergh! Den Cache auszuschalten ist schon schlimm genug, aber einen Cronjob dafür zu machen? Ich meine, das "löst" sozusagen die Frage, aber das macht es nicht weniger schmerzhaft.
Reid
@izx: hmm ... also so erstellt man einen cronjob. Wenn ich den Cache regelmäßig lösche, heißt das nicht, dass ich das System tatsächlich verlangsame? Wenn das der Fall wäre, klingt Ihre Antwort meiner Meinung nach eher nach einer theoretischen Antwort als nach Geirhas Antwort. : p Gute Antwort BTW ...
Bharadwaj Srigiriraju
1
@ForbiddenOverseer: Ich habe das nur eingefügt, weil Sie den Cache "deaktivieren" wollten, und das regelmäßige Löschen ist die einzige Möglichkeit, dies zu erreichen. Mein Hinweis oben (und der Link von geirha) besagt eindeutig, dass der Cache Ihr System die meiste Zeit tatsächlich beschleunigt, auch wenn es so aussieht, als würde er "Ihren RAM verschlingen". Also ja, IMO würden Sie Ihr System verlangsamen , aber du wolltest es versuchen, also habe ich nur deine Frage beantwortet, anstatt dich nur zu quälen und dir zu sagen, dass es eine schlechte Idee ist, und du solltest es nicht tun! Ich habe dir nur die Kraft zum Experimentieren gegeben ...: D
ish
1
Ich benutze Ubuntu Server 12.04 LTS als VDS. Ich versuche den Ansatz, der in dieser Antwort angegeben ist, aber ich erhalte ständig tee: /proc/sys/vm/drop_caches: Permission denied. Irgendwelche Tipps?
Eimantas
44

Hilfe! Linux hat meinen RAM aufgefressen!

www.linuxatemyram.com erklärt dies auf wundervolle Weise in Form von FAQ. Das Wesentliche ist:

Was ist los?

Linux leiht nicht genutzten Speicher für das Disk-Caching aus. Das macht es so, als ob Sie wenig Speicher haben, aber Sie sind es nicht! Alles ist gut!

Warum macht es das?

Festplatten-Caching beschleunigt das System erheblich! Es gibt keine Nachteile, außer für verwirrende Neulinge. Es nimmt den Anwendungen in keiner Weise Speicher weg!

Was ist, wenn ich mehr Anwendungen ausführen möchte?

Wenn Ihre Anwendungen mehr Arbeitsspeicher benötigen, nehmen sie nur einen Teil zurück, den der Festplatten-Cache ausgeliehen hat. Der Festplatten-Cache kann jederzeit sofort an Anwendungen zurückgegeben werden! Sie sind nicht auf Widder niedrig!

Wie sehe ich, wie viel freien RAM ich wirklich habe?

Um zu sehen, wie viel RAM Ihre Anwendungen verwenden könnten, ohne zu tauschen, führen Sie free -m aus und sehen Sie sich die Spalte "verfügbar" an:

$ free -m
              Insgesamt verwendeter kostenloser gemeinsamer Buff / Cache verfügbar
Mem: 1504 1491 13 0 855       792
Swap: 2047 6 2041
Dies ist Ihre Antwort in Mebibyte.


Quelle: Wie bereits erwähnt, die ausgezeichnete www.linuxatemyram.com - bitte besuchen Sie für weitere Informationen.

geirha
quelle
1
@geirha: Danke für den Link ... Es war sehr informativ und mir haben die Experimente am Ende gefallen !!
Bharadwaj Srigiriraju
@izx: tbh, es fällt mir schwer, mich für eine akzeptierte Antwort zu entscheiden. Ganz zu schweigen davon, dass dieser Link in jeder anderen Hinsicht informativ war ...;)
Bharadwaj Srigiriraju
@ForbiddenOverseer: Eine ausführliche Antwort finden Sie in meinem Kommentar in meiner Antwort. Ich habe Ihnen die Kurzfassung gegeben, warum Sie dies nicht tun sollten, aber dann Ihre Frage trotzdem beantwortet, damit Sie experimentieren und es selbst ausprobieren können. Wenn Sie nicht glauben, dass das
ish
@izx, ich fand es ein bisschen schwierig, das für diesen Fall zu tun. Sie haben jedoch einen nützlichen Text zu diesem Thema verfasst. Vielleicht können Sie Ihrer Antwort einfach die URL hinzufügen, und wir löschen meine Antwort.
Geirha
Keine Notwendigkeit, Ihr Link in eine hervorragende Ressource; Ich habe nur einige Teile in die Antwort aufgenommen (mit Zuschreibung), so dass es jetzt eine vollkommen gültige Alternative ist (in der Tat die bessere Antwort aus der Sicht der Öffentlichkeit!) Großartige Arbeit, positiv bewertet - willkommen bei 5k!
ish
4

So überprüfen Sie Ihre aktuelle Speichernutzung

 watch -n 1 free -m

oder

 watch -n 1 cat /proc/meminfo

So geben Sie Speicherplatz frei

 sudo sysctl -w vm.drop_caches=3

HINWEIS: Diese Aktion beschleunigt Ihr System nicht und beeinträchtigt auch nicht die Stabilität und Leistung. Sie räumt lediglich den vom Linux-Kernel auf Caches verwendeten Speicher auf.

oder

 sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches

ANMERKUNG: Sie können Cron-Jobs verwenden, um die obigen Befehle so zu planen, dass sie in bestimmten Zeitintervallen ausgeführt werden.

SilleBille
quelle