Wenn Sie einen anderen Beitrag sehen, verwenden Sie vermutlich zram. Das wird hier meine Annahme sein.
Ich habe die Erfahrung gemacht, zram zu installieren und viel Speicher zu verbrauchen, und ich habe die gleiche Ausgabe smem
wie Sie. smem
Berücksichtigt nicht die zram
Zählung , sondern verwendet nur die /proc/meminfo
Berechnung des Werts. Wenn Sie den Code suchen und verstehen, werden Sie feststellen, dass die Zram-RAM-Belegung am Ende in der Nicht-Cache- Spalte des dynamischen Kernel-Speichers gezählt wird Linie.
Weitere Untersuchungen
Nachdem ich das Gefühl hatte, dass Zram hinter diesem Verhalten steckt, habe ich eine VM mit ähnlichen Spezifikationen wie Ihr Computer eingerichtet: 4 GB RAM und 2 GB Zram-Swap, keine Swap-Datei.
Ich habe die VM mit schweren Anwendungen geladen und den folgenden Status erhalten:
huygens@ubuntu:~$ smem -wt -K ~/vmlinuz-3.2.0-38-generic.unpacked -R 4096M
Area Used Cache Noncache
firmware/hardware 130717 0 130717
kernel image 13951 0 13951
kernel dynamic memory 1063520 922172 141348
userspace memory 2534684 257136 2277548
free memory 451432 451432 0
----------------------------------------------------------
4194304 1630740 2563564
huygens@ubuntu:~$ free -m
total used free shared buffers cached
Mem: 3954 3528 426 0 79 858
-/+ buffers/cache: 2589 1365
Swap: 1977 0 1977
Wie Sie sehen können free
, werden 858 MB Cache-Speicher smem
gemeldet, und dies scheint auch im dynamischen Speicher des zwischengespeicherten Kernels zu melden.
Dann habe ich das System mit Chromium Browser weiter betont. Zu Beginn wurden nur 83 MB Swap verwendet. Aber dann, nachdem ein paar weitere Registerkarten geöffnet wurden, schaltete der Wechsel schnell auf fast das Maximum um und ich erlebte OOM! zram
hat wirklich eine gefährliche Seite, wo falsch konfiguriert (zu große Größen) es Sie schnell zurückschlagen kann wie ein Trebuchet-ähnlicher Mechanismus.
Zu dieser Zeit hatte ich folgende Ausgänge:
huygens@ubuntu:~$ smem -wt -K ~/vmlinuz-3.2.0-38-generic.unpacked -R 4096M
Area Used Cache Noncache
firmware/hardware 130717 0 130717
kernel image 13951 0 13951
kernel dynamic memory 1355344 124072 1231272
userspace memory 961004 36456 924548
free memory 1733288 1733288 0
----------------------------------------------------------
4194304 1893816 2300488
huygens@ubuntu:~$ free -m
total used free shared buffers cached
Mem: 3954 2256 1698 0 4 132
-/+ buffers/cache: 2118 1835
Swap: 1977 1750 227
Sehen Sie, wie der dynamische Kernelspeicher (Spalten-Cache und Nicht-Cache) invertiert aussieht? Dies liegt daran, dass der Kernel im ersten Fall einen "zwischengespeicherten" Speicher hatte, wie er von gemeldet wurde, free
aber dann einen Swap-Speicher hatte, zram
der smem
nicht berechnet werden kann (smem-Quellcode überprüfen, zram-Belegung wird nicht in / proc / meminfo gemeldet , dies wird nicht berechnet, smem
wodurch einfache "Gesamtkernel-Mem" - "von meminfo gemeldeter Speichertyp, von dem ich weiß, dass sie Cache sind" ausgeführt werden. Was es nicht weiß, ist, dass es in dem berechneten Gesamtkernel-Mem die Größe des hinzugefügt hat Swap, der im RAM ist!)
In diesem Zustand habe ich einen Festplattentausch aktiviert, den Zram-Swap deaktiviert und die Zram-Geräte zurückgesetzt : echo 1 > /sys/block/zram0/reset
.
Danach schmolz der Nicht-Cache-Kernel-Speicher im Sommer wie Schnee und kehrte zum "normalen" Wert zurück.
Fazit
smem
weiß zram
(noch) nicht, vielleicht weil es noch inszeniert wird und daher nicht Teil /proc/meminfo
davon globale Parameter (wie (in) aktive Seitengröße, Gesamtspeicher) und dann nur einige wenige spezifische Parameter meldet. smem
Einige dieser spezifischen Parameter wurden als "Cache" identifiziert, zusammengefasst und mit dem Gesamtspeicher verglichen. Aus diesem Grund wird der zram
verwendete Speicher in der Nicht-Cache- Spalte gezählt.
Hinweis: Im modernen Kernel wird übrigens meminfo
auch der verbrauchte gemeinsam genutzte Speicher gemeldet. smem
berücksichtigt das noch nicht, so dass auch ohne zram
die Ausgabe von smem
sorgfältig zu prüfen ist, insb. Wenn Sie eine Anwendung verwenden, die den gemeinsam genutzten Speicher stark nutzt.
Verwendete Referenzen:
smem
vielleicht nicht vertrauen , sehen Sie diese Frage: unix.stackexchange.com/questions/59450/swap-usage-too-high Wenn Sie sich die Ausgabe von meminfo ansehen, heißt es, dass Shmem (Shared Memory) ungefähr 700 MB groß ist. Wenn Sie diese Meminfo an smem weitergeben, wird gemeldet, dass der Kernel-Cache-Speicher etwas mehr als 700 MB beträgt. Smem hat das Shmem im Kernel-Speicher gezählt, während dies IMHO-Speicherplatz ist!