Es gibt zahlreiche (Hunderte?) Verschiedene Maßnahmen zur Speichernutzung auf einem Linux-Computer. Was ist jedoch eine gute Heuristik / Metrik, um festzustellen, ob ein Server mehr Speicher benötigt?
Einige Ideen:
- Betrachten von MemTotal - Active - Inactive aus / proc / meminfo als Maß für den "verdrahteten" Speicher
- Betrachtet man die Summe der RSS-Werte aller Prozesse in ps
- Betrachten von Committed_AS in / proc / meminfo
/proc/meminfo
und/proc/vmstat
) zu ermitteln: stackoverflow.com/a/3031924Antworten:
Linux Kernel 4.20 hat PSI hinzugefügt , was für "Pressure Stall Information" steht. Sie erhalten mehr Einblicke, warum eine Maschine überlastet ist. Und welche Ressource ist der Engpass.
Es gibt drei neue Dateien unter
/proc/pressure
:/proc/pressure/cpu
/proc/pressure/memory
/proc/pressure/io
Um aus Tracking-Informationen zum Druckstillstand zu zitieren
/proc/pressure/memory
:Ich habe noch keinen Zugriff auf einen Produktionsserver mit Linux 4.20, aber hier ist ein kleines Experiment auf meinem Desktop (für das kein Swap konfiguriert ist). Anfangs habe ich überhaupt keinen Speicherdruck (alle Zähler sind 0):
Dann habe ich die Speichernutzung erhöht, bis mir schließlich der Speicher ausgegangen ist, wodurch die Maschine eingefroren wurde, bis das OOM einige Prozesse beendet hat. Bevor es gefroren ist, hat sich der Druck auf das Gedächtnis erhöht:
Nachdem sich das System erholt hat, ist der Speicherdruck wieder 0 und die
total
Zähler steigen nicht mehr an:quelle
Darauf gibt es keine richtige Antwort.
Peter sagt zu Recht , dass die Werte, die Sie sich ansehen müssen, oben und kostenlos angegeben sind (Sie können den Quellcode für das procps-Paket erhalten, der zeigt, wie Sie diese Werte von 'C' erhalten - aber für Skripte ist es einfacher, nur ausleben')
Wenn das System über nicht verwendeten Speicher verfügt (die erste Ausgabezeile von free), ist es unwahrscheinlich, dass es durch Hinzufügen von mehr Speicher viel schneller wird. Durch Verringern des VFS-Cache-Drucks wird es jedoch möglicherweise schneller (länger im Cache bleiben).
Obwohl es keine richtige Antwort gibt, gibt es viele falsche - Sie können anhand des Benutzerbereichs nicht erkennen, welche Seiten gemeinsam genutzt werden, aber über verschiedene Speicherorte zugegriffen werden. Wenn Sie die Speichernutzung überprüfen, um festzustellen, wie viel Speicher frei ist, funktioniert dies einfach nicht.
Als Ausgangspunkt sollten Sie sich die beiden Werte für freien Speicher ansehen, die von 'frei' gemeldet werden.
quelle
Ich habe dies bereits gesagt. Die beste Maßnahme, um den Speicherbedarf in Echtzeit zu ermitteln, besteht darin, das Feld COmmitted_AS in / proc / meminfo zu beobachten und es im Laufe der Zeit zu vergleichen, um festzustellen, wie viel Speicher Sie benötigen.
Theoretisch geht es Ihnen gut, wenn Ihr Committed_AS immer vorbei ist als (Memfree + swapfree). Wenn dies jedoch weniger ist und Sie Ihre Arbeitslast im Laufe der Zeit auf dem System ansammeln, nähern Sie sich einer OOM-Situation. Der Wert Committed_AS bestimmt, wie viel Speicher für das System erforderlich ist, wenn dem System zu diesem Zeitpunkt alle Speicheranforderungen gewährt wurden.
Die Überwachung ist eine gute Maßnahme im Laufe der Zeit, um festzustellen, ob Sie den Arbeitsspeicher erhöhen oder die Arbeitslast verringern müssen.
quelle
if your Committed_AS is always over than (Memfree+swapfree) then you are fine
. Sollte es nicht weniger als verfügbarer Speicher sein? Ein größerer festgeschriebener Wert weist auf eine Verpflichtung hin, die im schlimmsten Fall nicht erfüllt werden kann, oder?Committed_AS
hast als viel mehr RAM als tatsächlich benötigt. Offensichtlich erhalten Sie in diesem Fall keine OOM-Situationen. Mein System hat Committed_AS größer als RAM + Swap zusammen.Eigentlich hängt alles von der / den Anwendung (en) ab. Sie können jedoch die vom Kernel verwendete Methode verwenden, um den Speicherdruck zu bestimmen, der Ihnen einen allgemeinen Überblick über die Fähigkeit des Hosts zur Verwaltung des Speichers geben soll.
Der Speicherdruck ist ideal, da Sie sich keine Gedanken über den Seiten-Cache, den Austausch oder die tatsächliche Speicherkapazität machen müssen.
Der Speicherdruck ist effektiv eine Zählung, wie viele Seiten gemäß / proc / meminfo als aktiv markiert werden sollen . Der Kernel misst den Speicherdruck, indem er verfolgt, wie viele Seiten in der Seitentabelle von "inaktiv" zu "aktiv" wechseln. Wenn Sie häufig zwischen diesen beiden Status wechseln, steht Ihnen wahrscheinlich nicht viel freier Speicher zur Verfügung, um mehr Seiten zu aktivieren.
Ein niedriger Speicherdruck wird durch sehr wenige Aktionen von inaktiv zu aktiv angezeigt (da der Kernel eindeutig über genügend Speicherplatz verfügt, damit aktive Seiten aktiv bleiben).
Dieses Skript misst den Druck alle periodischen Sekunden. Je mehr Daten Sie sammeln können, desto besser. Die Idee hier ist, dass Sie die Daten grafisch darstellen und Ihre Y-Achse mit 0 in der Mitte kleben. Unter idealen Umständen sollte der Graph eine horizontale Linie nach 0 haben. Wenn die Linien regelmäßig außerhalb von 0 ansteigen (insbesondere wenn 'Aktiv' positiv ist oder regelmäßig ziemlich hoch ansteigt), ist der Speicherdruck auf dem Host hoch und mehr Speicher wäre vorteilhaft.
quelle
Sie können den Befehl ausführen
top
, um eine Übersicht aller Hauptkomponenten unter Linux einschließlich der Speichernutzung anzuzeigen. Beachten Sie beim ersten Anzeigen von oben, dass der verwendete Speicher Puffer und ggf. Cache enthält.Es gibt auch den
free
Befehl für den Speicher. Sie können ausführenfree -m
, um Speicher frei in Megabyte anzuzeigen.Es gibt viel mehr Werkzeuge, aber ich denke, das hat den Werkzeugteil der Frage ausreichend beantwortet.
Wann Sie mehr Speicher benötigen, hängt von der Anwendung ab, die Sie ausführen. Benötigt es Burst-Kapazität? Profitiert es stark von einer großen Cache-Größe? Aber im Allgemeinen, wenn Sie Swap treffen und oft, brauchen Sie wirklich mehr RAM.
quelle
Wenn ich Sie wäre, würde ich Daten zu Last, freiem Speicher
free -m
und den Hauptleistungsmerkmalen Ihres Servers (z. B. Latenz pro Anforderung) sammeln und in Calc / Excel grafisch darstellen, um die "Swapout-Klippe" für mehrere Datenpunkte (Speicher) zu erkennen Konfigurationen - 8 G, 16G, 32G usw.). Dann würde ich verschiedene Regressionen versuchen, um die Verbindung zwischen der "Klippe" und dem verfügbaren Speicher zu finden.Eine Suche nach vorhandener Literatur bei CiteSeerX würde ebenfalls helfen.
quelle