Wie lösche ich den zwischengespeicherten Speicher in Debian?

8

Wenn ich a ausführe free -m, erhalte ich folgende Ausgabe:

Free-m Ausgabe

Gibt es einen Befehl, mit dem ich den verwendeten Speicher löschen kann? Ich habe das versucht:

echo 1 > /proc/sys/vm/drop_caches

Es wird darum bitten sudo. Aber auch danach sudogibt es einen schlechten Befehlsfehler.

Hier ist der Link, über den ich von drop_caches erfahren habe .

Ich suche nur nach einer Möglichkeit, den Cache zu leeren.

aravind.udayashankara
quelle
Off Topic. Gehört dem Superuser. Abstimmung zum Schließen.
Macmade
Warum fragst du?? Die Mühe lohnt sich normalerweise nicht!
Basile Starynkevitch
Ich möchte die Leistung einer Anwendung testen, die mehrere Prozesse initiiert, und einige Statistiken generieren. Wenn ich dieselbe Anwendung zweimal ausführe, sind die Statistiken nicht genau und ich verstehe auch klar, wie sich die Anwendung in den einzelnen Szenarien verhält. wird als Rätsel bleiben. Wenn es um die Leistung des Caches geht, muss ich auf jeden Fall wissen, ob es eine Möglichkeit gibt, den Cache zu leeren, damit ich mich darum kümmern kann. Es tut mir wirklich leid, wenn dieser Stapelüberlauf keine Plattform ist, um solche Fragen auf Systemebene zu stellen.

Antworten:

11

Versuchen Sie dies als root(nicht sudo):

#sync && echo 3 > /proc/sys/vm/drop_caches
Inhaltsverzeichnis
quelle
2

Das Problem mit:

sudo echo 1 > /proc/sys/vm/drop_caches

ist, dass die Umleitung in der anfänglichen Shell - dh unter Ihrem eigenen Konto - erfolgt, bevor das "sudo echo 1" auftritt, was nicht der Teil ist, der wirklich Root-Zugriff benötigt. Sie müssen die Öffnung von drop_caches mit ">" abrufen, um sich im sudo zu befinden. Ein fauler Weg (faul, weil er die 3 zurück auf stdout klont, was Sie eigentlich nicht brauchen) ist:

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

Die Optionen zum Schreiben in drop_caches sind:

  1. Kostenloser Seitencache
  2. Freie Einträge und Inodes
  3. Kostenloser Seitencache, Einträge und Inodes.

Und Sie sollten zuerst synchronisieren, also alles in allem:

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

oder wenn dir die falsche "3" auf stdout nicht gefällt:

sudo sh -c 'sync ; echo 3 >/prod/sys/vm/drop_caches'
Alex North-Keys
quelle
1

Wir können es automatisch mit crontabas machen root.

~$ sudo crontab -e

Sie sehen die Ihre / neue Crontab-Datei wie folgt:

# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

Und Sie werden dieses in neuen Zeilen hinzufügen, um es jede Stunde zu spülen:

# Every hour flushes the memory cache on system
0 * * * * sync; echo 3 > /proc/sys/vm/drop_caches

Ich sehe in meiner syslogSchwanzausgabe.

~$ tailf /var/log/syslog | grep 'cron'

Und ich sehe die Ausgabe unten:

May 31 14:07:16 debian crontab[17353]: (root) BEGIN EDIT (root)
May 31 14:07:20 debian crontab[17353]: (root) END EDIT (root)

...

May 31 15:00:02 debian CRON[22169]: (root) CMD (sync; echo 3 > /proc/sys/vm/drop_caches)
May 31 15:17:01 debian CRON[18828]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
Francis Rodrigues
quelle