Wie bekomme ich die echte zwischengespeicherte / vorabgerufene Speichernutzung in Linux?

584
X.LINK

Ich stehe den gleichen Hängen wie dieser Beitrag gegenüber: https://askubuntu.com/questions/41778/computer-freezing-on-almost-full-ram-possibly-disk-cache-problem

Um es zusammenzufassen: Es sieht so aus, als ob das Zurückholen des RAMs vorabgeholte / zwischengespeicherte und ausgelagerte RAMs zu lange dauert, daher lebe ich in ständiger Angst, dass die Festplatte verrückte Festplattenablesungen vornimmt, bis der PC hängt und mich zum Neustart zwingt.


Also habe ich mich näher mit diesem Problem befasst und diesen nützlichen Befehl erhalten:

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

Was den vorabgerufenen RAM ablässt ... bis zu einem gewissen Punkt, da noch einige übrig sind, was ein "statischer" Teil zu sein scheint.

Ich habe festgestellt, dass das Hinzufügen des Prefetchless-RAM-Speichers dem verwendeten RAM von top entspricht .

Dies sagt mir jedoch nicht, wie viel "statischer" RAM-Speicher ich benötige. Und wenn ich das wisse, werde ich genug Zeit für das ausgelagerte Cache-Offloading von Linux haben, um seine Arbeit zu erledigen, wenn ich kurz davor bin, die gesamte RAM-Anzahl zu erreichen.

ZB: Der Cache betrug ~ 1000 MiB, dann kam er auf ~ 700 MiB, nachdem er "echo 3 | sudo tee / proc / sys / vm / drop_caches" ausgeführt hatte; Die ~ 700 MiB sind der "statische" Teil des vorabgerufenen RAM, den ich kennen muss.

Meine Frage ist also: Wie bekommt man den "real" - "statischen" Teil der Verwendung von Prefetched / Cached / Paged RAM?


PS:

Auf der anderen Seite ist es eine Möglichkeit, nur Ausgabe verwendet die gesamte RAM mit allen Prozessen root ones- -Auch (wie htop der mem - Wert)?

1

1 Antwort auf die Frage

2
Nasir Riley

Sie finden den von jedem Prozess verwendeten RAM für alle Benutzer mit dem folgenden Befehl:

ps -eo pid,command,rss,user 

Dies gibt in der Reihenfolge die Prozess-ID, den Befehl, den verwendeten Speicher und den Benutzer des Prozesses an.

Wenn Sie möchten, dass die gesamte RAM-Menge von allen Prozessen verwendet wird, funktioniert der folgende Befehl

free 

Wenn Sie möchten, dass von jedem Prozess ein SUM des Speichers verwendet wird, verwenden Sie den folgenden Code:

ps -eo rss | awk ' END ' 

Dadurch erhalten Sie einen Wert, der die Gesamtmenge des von allen Prozessen verwendeten Speichers darstellt.

Doh, tut mir leid, wenn ich nicht klar war. Mit "dem gesamten RAM" meine ich den gesamten RAM, der von allen Prozessen verwendet wird. X.LINK vor 6 Jahren 0
Siehe meine Bearbeitung oben Nasir Riley vor 6 Jahren 1
Es wurde zwar die Gesamtmenge angezeigt, es gibt jedoch auch andere Ausgaben. Das könnte ich zwar ändern, aber ich brauche eine einzige Ausgabe, damit ich etwas wiederholen kann, ohne zu viele Ressourcen zu verwenden. Ein weiterer Vorteil wäre, wie kostenlos diese Werte intern abgerufen werden können, aber ich weiß leider nicht, wie man codiert. Es muss also einen anderen Weg geben, um solche Zahlen zu erhalten. X.LINK vor 6 Jahren 0
Ich habe eine weitere Bearbeitung hinzugefügt. Nasir Riley vor 6 Jahren 1
Ich bin verdammt noch mal, wenn Sie "% mem" durch "rss" ersetzen, haben Sie mich für die ganze Antwort auf den richtigen Weg gebracht. Was der RSS-Gesamtwert zeigt, ist die reale Speicherauslastung ohne den "dynamischen" Teil des vorabgerufenen RAMs, und weder die "verwendeten" tops noch die RAM-Nonsens-Werte von htop! Vielen Dank ! X.LINK vor 6 Jahren 0
Keine Probleme. Ich habe meine Antwort dahingehend aktualisiert, dass rss% mem ersetzt, da es Ihrer Frage mehr entspricht. Nasir Riley vor 6 Jahren 0