Mein Computer fühlt sich sehr träge an. Laut habe free
ich nur noch ~ 200M RAM und mehr als ein Gigabyte musste ausgetauscht werden. Ich weiß, dass es gut ist, wenn Speicher für das Caching verwendet wird, aber das sieht so aus, als hätte ich wirklich wenig RAM.
root@desktop:/proc free -h
total used free shared buff/cache available
Mem: 3.9G 3.4G 132M 44M 378M 213M
Swap: 8.0G 1.2G 6.7G
smem -tk
meldet, dass höchstens 2GiB (RSS-Spalte) von Anwendungen verwendet werden. smem -wk
berücksichtigt den gesamten verwendeten Speicher. Anscheinend verwendet der Kernel 1,8 GB nicht zum Zwischenspeichern:
root@desktop:/proc smem -wk
Area Used Cache Noncache
firmware/hardware 0 0 0
kernel image 0 0 0
kernel dynamic memory 1.9G 74.3M 1.8G
userspace memory 1.8G 250.9M 1.6G
free memory 173.9M 173.9M 0
Wird dieses Verhalten erwartet und wenn ja, für welche Aufgabe benötigt der Kernel so viel Speicher?
linux-kernel
performance
ram
Erik
quelle
quelle
</proc/slabinfo awk '{print $1, $3*$4}' |sort -k2n
(dies gibt eine Aufschlüsselung der Kernel-Speichernutzung auf der ersten Ebene).Antworten:
Sie können dies auch versuchen:
Verwenden Sie sar , um über Kontextwechsel und die Verwendung von IRQ im Laufe der Zeit zu berichten. Sar ist ein großartiges, aber unbekanntes Systemüberwachungstool. Führen Sie es einen Tag lang aus und verwenden Sie dann verschiedene Berichte, um nach Seltsamkeiten zu suchen.
Schritte:
Installieren Sie das sysstat-Paket. Richten Sie den Cron-Job
/etc/cron.d/
wie folgt ein (überprüfen Sie , ob eine solche Datei vorhanden ist):Dadurch werden viele Daten erstellt - etwa 300 MB pro Tag. Alle 6 Sekunden wird eine Momentaufnahme der Systemstatistik erstellt . (Sie können die Frequenz auf zweimal pro Minute verringern, indem Sie "10 6" auf "2 30" ändern.)
Wenn Sie die Erfassungshäufigkeit ändern, sollten Sie die Tagesdatei in löschen, da
/var/log/sa/sa$(date +%d)
sonst die Berichte möglicherweise beschädigt werden.OK, nachdem Sie Ihre Daten erfasst haben, versuchen Sie Folgendes (Tipp: Immer durchleiten
less
):Abrufen von Lastdurchschnitten und der Größe der Ausführungswarteschlange. Wenn diese niedrig sind, sehen Sie sich die Wartezeiten für E / A an:
Wenn Sie in% iowait keine Sprünge oder in% idle keine Täler sehen, sehen Sie sich die Kontextwechsel an:
500 Kontextwechsel pro Sekunde sind auf einem System im Leerlauf ziemlich normal.
Sie können sar Berichterstattung beschränken , indem die Aktivität Datei angeben, eine Start- und Endzeit (geben
-s <hh:mm:ss>
und-e <hh:mm:sss>
jeweils) und gegebenenfalls eine Intervallzeit mit-i <secs>
(muss größer sein als Ihre Aufnahmeauflösung, durch den Cron - Job einrichten).Beispiel:
In 10-Minuten-Intervallen von gestern zwischen 9:15 und 12:15 Uhr erhalten Sie zusammenfassende Informationen zur CPU.
Es gibt mehr ... viel mehr. Sie können tun
man sar
, um diese Informationen zu erhalten.quelle
Ich weiß nicht, warum Sie den
free -h
Ausgabebefehl bearbeitet haben, dem die-/+ buffers/cache
Zeile fehlt - was wichtig ist. Wie auch immer, wir können weitermachen.Solange die Spalte 'Free' (in der Zeile Mem:)> 0 ist, ist der Arbeitsspeicher nicht wirklich niedrig, da dies absolut unbenutzter Arbeitsspeicher ist . Und Linux nutzt bekanntermaßen den gesamten RAM, den es bekommen kann (als Caches, in der Hoffnung auf eine bessere Leistung).
Der Swap-Teil sagt nicht die ganze Wahrheit: Es ist durchaus üblich, dass viel Code + Daten auf die Festplatte ausgetauscht werden, da er nur einmal ausgeführt und eine Weile nicht verwendet wurde. Ein weiterer Teil, in dem Linux zeigt, dass es im RAM nach Leistung strebt: Es zeigt schnell, was wahrscheinlich unwichtig ist (wiederum in Bezug auf die Leistung). Es ist abstimmbar (sysctl vm.swappiness), aber die meisten Distributionen verwenden standardmäßig "zögern Sie nicht zu tauschen".
Es ist wichtig, Ihre Hypothese zu bestätigen (langsam, da kein verfügbarer RAM vorhanden ist), wenn sie derzeit auf die Festplatte ein- oder ausgelagert wird. Die meiste Zeit ist es ziemlich einfach, Trägheit mit einer hektisch blinkenden Festplatte zu korrelieren, die auf dem Computer geführt wird. Andernfalls führen Sie die
top
Entwicklung der Swap-Zahlen im Laufe der Zeit aus und betrachten sie. Noch einfacher ist es,vmstat 1
die Swap-E / A-Zahlen jede Sekunde direkt auszudrucken (Swap si / so).quelle
free
kommt von procps-ng 3.3.10.sysctl vm.swappiness=10
Sie, den Unterschied zu sehen.