Wie man den Speicherverbrauch und den Lastdurchschnitt im Linux-Server versteht

57

Ich benutze einen Linux-Server mit 128 GB Speicher und 24 Kernen. Ich benutze top, um zu sehen, wie oft es verwendet wird. Die Ausgabe wird am Ende des Beitrags eingefügt. Hier sind zwei Fragen:

(1) Ich sehe, dass jeder der laufenden Prozesse einen sehr kleinen Prozentsatz des Speichers belegt (% MEM nicht mehr als 0,2% und am meisten nur 0,0%), aber wie wird der Gesamtspeicher fast wie in der vierten Ausgabezeile verwendet ( "Mem: 130766620k gesamt, 130161072k verwendet, 605548k frei, 919300k Puffer")? Es ist unwahrscheinlich, dass die Summe des verwendeten Speicheranteils über alle Prozesse hinweg fast 100% erreicht, nicht wahr?

(2) Wie ist der Lastdurchschnitt in der ersten Zeile zu verstehen ("Lastdurchschnitt: 14.04, 14.02, 14.00")?

Danke und Grüße!

Bearbeiten:

Vielen Dank!

Ich höre auch sehr gerne einige grobe Zahlen basierend auf dem verwendeten Prozentsatz des Speichers, um festzustellen, ob ein Server stark ausgelastet ist, da ich einmal derjenige war, der den Server überlastet hat, ohne die aktuelle Auslastung zu verstehen.

Wird Swap als fast gleichbedeutend mit Memory angesehen? Wenn beispielsweise Speicher und Auslagerungsspeicher fast gleich groß sind, wenn der Speicher fast leer ist, der Auslagerungsspeicher jedoch noch weitgehend frei ist, kann ich dies nur so betrachten, als ob der verwendete Prozentsatz von Speicher + Auslagerungsspeicher immer noch nicht hoch ist, und andere neue ausführen Prozesse?

Wie würden Sie die CPU- oder Speicherauslastung (oder Speicher- und Auslagerungsauslastung) zusammen betrachten? Machen Sie sich Sorgen, wenn einer der beiden Werte zu hoch ist oder beides?

Ausgabe von top :

$ top

 
top - 12:45:33 up 19 Tage, 23:11, 18 Benutzer, Lastdurchschnitt: 14.04, 14.02, 14.00
Aufgaben: 484 insgesamt, 12 laufen, 472 schlafen, 0 gestoppt, 0 Zombie
CPU (s): 36,7% us, 19,7% sy, 0,0% ni, 43,6% id, 0,0% wa, 0,0% hi, 0,0% si, 0,0% st
Mem: 130766620k gesamt, 130161072k verwendet, 605548k frei, 919300k Puffer
Swap: 63111312k insgesamt, 500556k verwendet, 62610756k frei, 124437752k zwischengespeichert

  PID BENUTZER PR NI VIRT RES SHR S% CPU% MEM ZEIT + BEFEHL
 6529 sanchez 18 -2 1075 m 219 m 13 m S 100 0,2 13760: 23 MATLAB
13210 timothy 18 -2 48336 37m 1216 R 100 0.0 3: 56.75 absurdität
13888 timothy 18 -2 48336 37m 1204 R 100 0.0 2: 04.89 absurdität
14542 timothy 18 -2 48336 37m 1196 R 100 0.0 1: 08.34 absurdität
14544 timothy 18 -2 2888 2076 400 R 100 0.0 1: 06.14 gatherData
 6183 sanchez 18 -2 1133 m 195 m 13 m S 100 0,2 13676: 04 MATLAB
 6795 Sanchez 18 & ndash; 2 1079 m 210 m 13 m S 100 0,2 13734: 26 MATLAB
10178 timothy 18 -2 48336 37m 1204 R 100 0.0 11: 33.93 absurdität 
12438 timothy 18 -2 48336 37m 1216 R 100 0.0 5: 38.17 absurdität
13661 Timothy 18-2 48336 37m 1216 R 100 0.0 2: 44.13 Absurdität
14098 timothy 18 -2 48336 37m 1204 R 100 0.0 1: 58.31 absurdität
14335 timothy 18 -2 48336 37m 1196 R 100 0.0 1: 08.93 absurdität
14765 timothy 18 -2 48336 37m 1196 R 99 0.0 0: 32.57 Absurdität
13445 timothy 18 -2 48336 37m 1216 R 99 0.0 3: 01.37 absurdität
28990 root 20 0 0 0 0 S 2 0.0 65: 50.21 pdflush
12141 tim 18 -2 19380 1660 1024 R 1 0.0 0: 04.04 top
 1240 root 15 -5 0 0 0 S 0 0.0 16: 07.11 kjournald
 9019 root 20 0 296m 4460 2616 S 0 0.0 82: 19.51 kdm_greet
    1 root 20 0 4028 728 592 S 0 0.0 0: 03.11 init
    2 root 15 -5 0 0 0 S 0 0.0 0: 00.00 kthreadd
    3 Wurzel RT -5 0 0 0 S 0 0.0 0: 01.01 Migration / 0
    4 root 15 -5 0 0 0 S 0 0.0 0: 08.13 ksoftirqd / 0
    5 root RT -5 0 0 0 S 0 0.0 0: 00.00 watchdog / 0
    6 root RT -5 0 0 0 S 0 0.0 17: 27.31 migration / 1
    7 root 15 -5 0 0 0 S 0 0.0 0: 01.21 ksoftirqd / 1
    8 root RT -5 0 0 0 S 0 0.0 0: 00.00 watchdog / 1
    9 root RT -5 0 0 0 S 0 0.0 10: 02.56 migration / 2
   10 root 15 -5 0 0 0 S 0 0.0 0: 00.34 ksoftirqd / 2
   11 root RT -5 0 0 0 S 0 0.0 0: 00.00 watchdog / 2
   12 root RT -5 0 0 0 S 0 0.0 4: 29.53 migration / 3
   13 root 15 -5 0 0 0 S 0 0.0 0: 00.34 ksoftirqd / 3
Tim
quelle
2
Hier finden Sie eine gute Antwort zum Thema Gedächtnis. serverfault.com/questions/38065/#38074
Zoredache
Und diese Antwort für eine kurze Zusammenfassung über den Lastdurchschnitt (oder diese lang gelesenen Details).
Nickolay

Antworten:

56

(1) Ich sehe, dass jeder der laufenden Prozesse einen sehr kleinen Prozentsatz des Speichers belegt (% MEM nicht mehr als 0,2% und am meisten nur 0,0%), aber wie wird der Gesamtspeicher fast wie in der vierten Ausgabezeile verwendet ( "Mem: 130766620k gesamt, 130161072k verwendet, 605548k frei, 919300k Puffer")? Es ist unwahrscheinlich, dass die Summe des verwendeten Speicheranteils über alle Prozesse hinweg fast 100% erreicht, nicht wahr?

Führen Sie Folgendes aus, um festzustellen, wie viel Speicher Sie derzeit verwenden free -m. Es wird folgende Ausgabe liefern:

             Insgesamt verwendete freie gemeinsam genutzte Puffer zwischengespeichert
Mem: 2012 1923 88 0 91 515
- / + Puffer / Cache: 1316 695
Swap: 3153 256 2896

Der Wert für 'used' (1923) in der obersten Zeile entspricht fast immer fast dem Wert für mem in der obersten Zeile (2012). Da Linux gerne einen freien Speicherplatz zum Zwischenspeichern von Plattenblöcken verwendet (515).

Die zu betrachtende Kennzahl ist der verwendete Wert für Puffer / Cache-Zeile (1316). Dies ist, wie viel Speicherplatz Ihre Anwendungen derzeit verwenden. Für eine optimale Leistung sollte diese Anzahl unter Ihrem Gesamtspeicher (2012) liegen. Um Speicherfehler zu vermeiden, muss der Gesamtspeicher (2012) und der Auslagerungsspeicher (3153) unterschritten werden.

Wenn Sie schnell sehen möchten, wie viel Speicher verfügbar ist, sehen Sie sich den Wert für Puffer / Cache-Zeilen (695) an. Dies ist der Gesamtspeicher (2012) - der tatsächlich verwendete (1316). (2012 - 1316 = 696, nicht 695, dies ist nur eine Rundungsfrage)

(2) Wie ist der Lastdurchschnitt in der ersten Zeile zu verstehen ("Lastdurchschnitt: 14.04, 14.02, 14.00")?

Dieser Artikel über die durchschnittliche Auslastung verwendet eine nette Verkehrsanalogie und ist der beste, den ich bisher gefunden habe: Grundlegendes zur CPU- Auslastung unter Linux - wann sollten Sie sich Sorgen machen? . In Ihrem Fall, wie die Leute betonten:

Auf Mehrprozessorsystemen hängt die Last von der Anzahl der verfügbaren Prozessorkerne ab. Die Marke "100% Auslastung" ist 1,00 bei einem Einkernsystem, 2,00 bei einem Zweikernsystem, 4,00 bei einem Vierkernsystem usw.

Mit einer durchschnittlichen Auslastung von 14,00 und 24 Kernen ist Ihr Server also weit davon entfernt, überlastet zu werden.

Pascal Thivent
quelle
17

Unix-ähnliche Systeme, einschließlich Linux, wurden entwickelt, um den verfügbaren Arbeitsspeicher so effizient wie möglich zu nutzen. Ganz allgemein gibt es drei Zustände, in denen sich jedes MB RAM befinden kann:

  1. Kostenlos
  2. Wird von einem Prozess verwendet
  3. Wird für Puffer verwendet

Der 3. Status wird nur als Arbeitsspeicher verwendet und soll bei Bedarf neu zugewiesen werden, dh Ihr gesamter verfügbarer Speicher für Programme ist wirklich Free + UsedforBuffers. Aus diesem Grund wird der zugewiesene Pufferplatz nicht als einem bestimmten Prozess zugewiesen angezeigt.

Ihre Frage zur durchschnittlichen Auslastung ist etwas interessanter, da sie leicht falsch interpretiert werden kann. Die ganze Geschichte finden Sie in diesem Artikel im Linuxjournal . Die beste Zusammenfassung ist ein direktes Zitat aus dem Artikel,

Die Berechnung des Lastdurchschnitts wird am besten als gleitender Durchschnitt der Prozesse in der Linux-Ausführungswarteschlange angesehen, die als aktiv oder unterbrechungsfrei markiert sind

Das heißt, Sie können sich Ihren Lastdurchschnitt als (Anzahl der ausgeführten Prozesse) + (Anzahl der auf E / A wartenden Prozesse) vorstellen. Unter Berücksichtigung der Tatsache, dass zu einem bestimmten Zeitpunkt eine Anzahl von $ CORE-Prozessen ausgeführt werden kann, würde ich sagen, dass Ihr Lastdurchschnitt von 14 ziemlich niedrig ist.

Scott Pack
quelle
Vielen Dank! Wie viel Prozent des Arbeitsspeichers (oder Arbeitsspeicher + Auslagerungsspeicher) werden als stark ausgelastet angesehen und es ist besser, keine neuen Prozesse auszuführen? Sehen Sie sich sowohl Speicher als auch Speicher + Tausch an? Entspricht der verwendete Swap oben der tatsächlich verwendeten Swap-Größe? Messen Sie in Bezug auf den CPU-Auslastungsdurchschnitt die tatsächliche Auslastung anhand des "Auslastungsdurchschnitts / Kernnummer"? Wie hoch ist Ihrer Meinung nach die Auslastung des Servers? Danke und Grüße!
Tim
2
Die Ladung ist nur ein Indikator. In der Regel ist eine Belastung von mehr als Kernen eine schlechte Sache. Im Allgemeinen ist ein hoher Prozentsatz des verwendeten Speichers eine schlechte Sache. Es ist kein binärer Wert, den man als "so viel ist in Ordnung" bezeichnen kann. Wenn Ihnen der Arbeitsspeicher ausgeht, haben Sie nicht genug, um weitere Prozesse auszuführen. Wenn Sie nicht ausgehen, haben Sie viel. Es hängt sehr stark von den Besonderheiten Ihrer Situation ab.
Cian
4

Von der sarManpage:

       Der Lastdurchschnitt berechnet sich aus der durchschnittlichen Anzahl der fahrbaren oder 
       laufende Tasks (R-Status) und die Anzahl der unterbrechungsfreien Tasks
       Sleep (D-Zustand) über das angegebene Intervall.

Von der uptimeManpage:

       Die durchschnittliche Systemlast gibt die durchschnittliche Anzahl der Prozesse an
       in einem lauffähigen oder unterbrechungsfreien Zustand. Ein Prozess in einem ausführbaren Zustand
       verwendet entweder die CPU oder wartet darauf, die CPU zu verwenden. Ein Prozess in unin‐
       Der unterbrechbare Status wartet auf einen E / A-Zugriff, z. B. Warten auf Festplatte.
       Die Mittelwerte werden über die drei Zeitintervalle ermittelt. Durchschnittswerte laden
       sind für die Anzahl der CPUs in einem System nicht normalisiert,
       Alter von 1 bedeutet, dass ein einzelnes CPU-System die ganze Zeit geladen ist, während es auf einer 4 läuft
       CPU-System bedeutet, dass es 75% der Zeit im Leerlauf war.
Dennis Williamson
quelle
3
  1. Linux verwaltet seinen Arbeitsspeicher seit einiger Zeit so, dass diese Zeile im topGrunde genommen unbrauchbar wird, und behält im Allgemeinen den größten Teil des Arbeitsspeichers des Computers für verschiedene Zwecke bei, wenn er von einem Benutzerprozess nicht benötigt wird.
  2. Der Lastdurchschnitt ist die durchschnittliche Anzahl von Prozessen, die ausgeführt werden oder auf die Ausführung warten. In der Regel besteht eine starke negative Korrelation mit der Systemlatenz / Reaktionszeit, daher sollten Sie diese so gering wie möglich halten. Da auf jeder Ihrer CPUs zu einem bestimmten Zeitpunkt etwas ausgeführt werden kann, scheint es Ihnen mit 14 Jahren recht gut zu gehen.
Chaos
quelle
Vielen Dank! Meinen Sie mit Bezug auf 1, dass einige Prozesse nicht oben angezeigt werden, aber viel Speicher belegen? Oder dass die vierte Zeile der Ausgabe über Speicher ("Mem: 130766620k total, 130161072k used, 605548k free, 919300k puffers") irreführend ist, sollte ich die Summe des Prozentsatzes des von allen oben und in meinem Fall gezeigten Prozessen verwendeten Speichers betrachten Ich kann sicher einige neue speicherintensive Prozesse ausführen.
Tim,
2
Wie andere Antworten gezeigt haben, sollte der Lastdurchschnitt mit der Anzahl der Prozessoren verglichen werden, sodass 14 auf einem 24-Core-System nicht so viel sind. Auf einem Single-Core-System wäre das ungefähr 14/24 = 0,58 (oder so ähnlich).
David Z
@ Tim: Ich meine letzteres.
Chaos