Wie würde man vor Benchmarking-Arbeiten den Arbeitsspeicher (RAM) freigeben, den der Linux-Kernel für seine Puffer und seinen Cache verbraucht?
Beachten Sie, dass dies hauptsächlich für das Benchmarking nützlich ist. Das Leeren der Puffer und des Caches reduziert Leistung! Wenn Sie hier sind, weil Sie dachten, dass das Freigeben von Puffern und Cache eine positive Sache ist, lesen Sie Linux hat meinen RAM gegessen!. Die Kurzgeschichte:Freier Speicher ist ungenutzter Speicher ist verschwendet Speicher.
Akzeptierte Antwort:
Puffer-Cache leeren
Wenn Sie es jemals leeren möchten, können Sie diese Befehlskette verwenden.
# free && sync && echo 3 > /proc/sys/vm/drop_caches && free
total used free shared buffers cached
Mem: 1018916 980832 38084 0 46924 355764
-/+ buffers/cache: 578144 440772
Swap: 2064376 128 2064248
total used free shared buffers cached
Mem: 1018916 685008 333908 0 224 108252
-/+ buffers/cache: 576532 442384
Swap: 2064376 128 2064248
Sie können dem Linux-Kernel signalisieren, verschiedene Aspekte von zwischengespeicherten Elementen zu löschen, indem Sie das numerische Argument in den obigen Befehl ändern.
-
So geben Sie den Pagecache frei:
# echo 1 > /proc/sys/vm/drop_caches
-
Um Dentries und Inodes freizugeben:
# echo 2 > /proc/sys/vm/drop_caches
-
Um Pagecache, Dentries und Inodes freizugeben:
# echo 3 > /proc/sys/vm/drop_caches
Die oben genannten sollen als root ausgeführt werden. Wenn Sie versuchen, sie mit sudo
auszuführen dann müssen Sie die Syntax etwas wie folgt ändern:
$ sudo sh -c 'echo 1 >/proc/sys/vm/drop_caches'
$ sudo sh -c 'echo 2 >/proc/sys/vm/drop_caches'
$ sudo sh -c 'echo 3 >/proc/sys/vm/drop_caches'
HINWEIS: Es gibt eine esoterischere Version des obigen Befehls, wenn Sie darauf stehen:
$ echo "echo 1 > /proc/sys/vm/drop_caches" | sudo sh
Warum die Syntaxänderung? Der /bin/echo
Programm läuft wegen sudo
als root , aber die Shell, die die Ausgabe von echo an die Nur-Root-Datei umleitet, wird immer noch als Sie ausgeführt. Ihre aktuelle Shell führt die Umleitung vorher durch sudo
beginnt.
Sehen, was sich in den Puffern und im Cache befindet
Sehen Sie sich linux-ftools
an wenn Sie den Inhalt der Puffer und des Caches analysieren möchten. Insbesondere, wenn Sie sehen möchten, welche Dateien derzeit zwischengespeichert werden.
fincore
Mit diesem Tool können Sie sehen, welche Dateien in einem bestimmten Verzeichnis zwischengespeichert werden.
fincore [options] files...
--pages=false Do not print pages
--summarize When comparing multiple files, print a summary report
--only-cached Only print stats for files that are actually in cache.
Zum Beispiel /var/lib/mysql/blogindex
:
[email protected]:/var/lib/mysql/blogindex# fincore --pages=false --summarize --only-cached *
stats for CLUSTER_LOG_2010_05_21.MYI: file size=93840384 , total pages=22910 , cached pages=1 , cached size=4096, cached perc=0.004365
stats for CLUSTER_LOG_2010_05_22.MYI: file size=417792 , total pages=102 , cached pages=1 , cached size=4096, cached perc=0.980392
stats for CLUSTER_LOG_2010_05_23.MYI: file size=826368 , total pages=201 , cached pages=1 , cached size=4096, cached perc=0.497512
stats for CLUSTER_LOG_2010_05_24.MYI: file size=192512 , total pages=47 , cached pages=1 , cached size=4096, cached perc=2.127660
stats for CLUSTER_LOG_2010_06_03.MYI: file size=345088 , total pages=84 , cached pages=43 , cached size=176128, cached perc=51.190476
stats for CLUSTER_LOG_2010_06_04.MYD: file size=1478552 , total pages=360 , cached pages=97 , cached size=397312, cached perc=26.944444
stats for CLUSTER_LOG_2010_06_04.MYI: file size=205824 , total pages=50 , cached pages=29 , cached size=118784, cached perc=58.000000
stats for COMMENT_CONTENT_2010_06_03.MYI: file size=100051968 , total pages=24426 , cached pages=10253 , cached size=41996288, cached perc=41.975764
stats for COMMENT_CONTENT_2010_06_04.MYD: file size=716369644 , total pages=174894 , cached pages=79821 , cached size=326946816, cached perc=45.639645
stats for COMMENT_CONTENT_2010_06_04.MYI: file size=56832000 , total pages=13875 , cached pages=5365 , cached size=21975040, cached perc=38.666667
stats for FEED_CONTENT_2010_06_03.MYI: file size=1001518080 , total pages=244511 , cached pages=98975 , cached size=405401600, cached perc=40.478751
stats for FEED_CONTENT_2010_06_04.MYD: file size=9206385684 , total pages=2247652 , cached pages=1018661 , cached size=4172435456, cached perc=45.321117
stats for FEED_CONTENT_2010_06_04.MYI: file size=638005248 , total pages=155763 , cached pages=52912 , cached size=216727552, cached perc=33.969556
stats for FEED_CONTENT_2010_06_04.frm: file size=9840 , total pages=2 , cached pages=3 , cached size=12288, cached perc=150.000000
stats for PERMALINK_CONTENT_2010_06_03.MYI: file size=1035290624 , total pages=252756 , cached pages=108563 , cached size=444674048, cached perc=42.951700
stats for PERMALINK_CONTENT_2010_06_04.MYD: file size=55619712720 , total pages=13579031 , cached pages=6590322 , cached size=26993958912, cached perc=48.533080
stats for PERMALINK_CONTENT_2010_06_04.MYI: file size=659397632 , total pages=160985 , cached pages=54304 , cached size=222429184, cached perc=33.732335
stats for PERMALINK_CONTENT_2010_06_04.frm: file size=10156 , total pages=2 , cached pages=3 , cached size=12288, cached perc=150.000000
---
total cached size: 32847278080
Anhand der obigen Ausgabe können Sie sehen, dass derzeit mehrere *.MYD-, *.MYI- und *.frm-Dateien zwischengespeichert werden.
Siehe auch:Debian – Warum umschließt „ls“ plötzlich Elemente mit Leerzeichen in einfachen Anführungszeichen?Wechseln
Wenn Sie Ihren Swap löschen möchten, können Sie die folgenden Befehle verwenden.
$ free
total used free shared buffers cached
Mem: 7987492 7298164 689328 0 30416 457936
-/+ buffers/cache: 6809812 1177680
Swap: 5963772 609452 5354320
Verwenden Sie dann diesen Befehl, um Swap zu deaktivieren:
$ swapoff -a
Sie können bestätigen, dass es jetzt leer ist:
$ free
total used free shared buffers cached
Mem: 7987492 7777912 209580 0 39332 489864
-/+ buffers/cache: 7248716 738776
Swap: 0 0 0
Und um es wieder zu aktivieren:
$ swapon -a
Und jetzt noch einmal mit free
bestätigen :
$ free
total used free shared buffers cached
Mem: 7987492 7785572 201920 0 41556 491508
-/+ buffers/cache: 7252508 734984
Swap: 5963772 0 5963772