Netzwerk-SONiC: Systemspeichernutzung in SONiC – "buff/available"
Summary: In diesem Artikel wird die Bedeutung der Felder "buff/cache" und "avail Mem" in der "oberen" Ausgabe in der nativen CLI von Dell Networking SONiC erläutert.
Instructions
-
Frage 1: Was ist Buff/Cache?
"buff/cache" ist die Menge an Arbeitsspeicher, die für Dateisystempuffer und -cache verwendet wird. Diese Speichernutzung ist ein wichtiger Bestandteil der Art und Weise, wie Linux die Systemleistung verwaltet und optimiert. Lassen Sie uns aufschlüsseln, was "Buff/Cache" bedeutet:
Puffer:
Puffer geben in diesem Zusammenhang einen Teil des Systemspeichers (RAM) an, der verwendet wird, um vorübergehend Daten zu speichern, die von der Festplatte gelesen oder auf die Festplatte geschrieben werden. Wenn ein Programm beispielsweise Daten aus einer Datei liest, werden die Daten zuerst in einen Puffer im Arbeitsspeicher geladen. Puffer tragen zur Verbesserung der I/O-Leistung des Laufwerks bei, da das Lesen oder Schreiben in den RAM schneller ist als der Zugriff auf das physische Laufwerk. Puffer können außerdem sicherstellen, dass die Daten effizienter auf die Festplatte geschrieben werden, wodurch die Anzahl der I/O-Vorgänge auf der Festplatte reduziert wird.Cache:
Cache gibt in diesem Zusammenhang den Teil des Arbeitsspeichers an, der zum Speichern häufig aufgerufener Daten aus Dateien und Verzeichnissen verwendet wird. Linux verwendet einen Mechanismus namens "Seitencache", um Daten aus Dateien und Verzeichnissen zwischenzuspeichern, die kürzlich gelesen oder geschrieben wurden. Diese zwischengespeicherten Daten werden im Arbeitsspeicher gehalten, sodass dieselben Daten, wenn sie erneut benötigt werden, schnell aus dem RAM abgerufen werden können, anstatt sie aus dem langsameren Festplattenspeicher zu lesen. Dieser Cache kann die Systemleistung erheblich verbessern, da für häufig verwendete Daten weniger Zugriff auf die Festplatte erforderlich ist.Wenn Anwendungen oder das Betriebssystem mehr Arbeitsspeicher für aktive Prozesse benötigen, kann der Puffer-/Cachespeicher schnell freigegeben werden, um diese Anforderungen zu erfüllen.
Der Befehl "top" zeigt diesen Wert an. Außerdem werden der aktuelle Status des Systems, die CPU-Auslastung und die Speicherauslastung angezeigt.
HINWEIS: Der Befehl "top" funktioniert nur in der nativen CLI von SONiC und nicht in der MF-CLI (MF-CLI ist die nutzerdefinierte "Management-Framework"-CLI von Dell). Die native CLI ist die Befehlszeilenschnittstelle, die angezeigt wird, wenn Sie einen SONiC-Switch zum ersten Mal starten. MF-CLI wird nach der Eingabe von "sonic-cli" in die anfängliche systemeigene CLI erreicht.admin@sonic:~$ top top - 16:43:51 up 8 days, 18:15, 1 user, load average: 1.54, 1.50, 1.51 Tasks: 365 total, 2 running, 363 sleeping, 0 stopped, 0 zombie %Cpu(s): 2.8 us, 4.2 sy, 0.0 ni, 93.1 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 15482.2 total, 11292.8 free, 2299.6 used, 1889.8 buff/cache MiB Swap: 0.0 total, 0.0 free, 0.0 used. 12965.1 avail Mem
-
Frage 2: Was ist der Schwellenwert für eine hohe Puffer-/Cachespeicherauslastung?
Puffer-/Cache-Speicher wird als Cache verwendet, um Daten zu speichern, auf die häufig zugegriffen wird. Daher ist es möglich, dass ein erheblicher Teil des verfügbaren RAM für diesen Zweck zugewiesen wird. Zu beachten ist, dass die Puffer-/Cachespeichernutzung sehr dynamisch ist und sich ständig basierend auf der Systemnachfrage ändert. Daher ist es sinnvoller, die gesamte Speichernutzung (oder den entsprechenden "avail Mem") zu überwachen und sicherzustellen, dass das System über ausreichend freien Speicher für die Ausführung von Anwendungen und Prozessen verfügt.
top - 14:17:13 up 207 days, 1:59, 1 user, load average: 2.66, 2.19, 2.03 Tasks: 386 total, 2 running, 384 sleeping, 0 stopped, 0 zombie %Cpu(s): 12.5 us, 9.7 sy, 0.0 ni, 77.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st MiB Mem : 15482.6 total, 8571.4 free, 2692.5 used, 4218.8 buff/cache MiB Swap: 0.0 total, 0.0 free, 0.0 used. 12773.1 avail Mem <--- system's total available RAM
Ein hilfreicher Befehl, um den Prozentsatz des System-RAM auszudrücken, der für die Verwendung auf einem Dell Enterprise SONiC-Switch verfügbar ist:
free | grep Mem | awk '{print $7/$2 * 100 }'Dieser Befehl dividiert "avail Mem" durch "MiB Mem total".
Hier ist ein weiteres Beispiel, in dem die oben genannten Befehle verglichen und ihre Beziehungen zu Ihrer Referenz angegeben werden:
admin@Leaf3B:~$ top top - 21:49:49 up 1:25, 1 user, load average: 0.59, 0.60, 0.64 Tasks: 329 total, 1 running, 328 sleeping, 0 stopped, 0 zombie %Cpu(s): 7.9 us, 4.2 sy, 0.0 ni, 87.5 id, 0.0 wa, 0.0 hi, 0.4 si, 0.0 st KiB Mem : 15928852 total, 12074024 free, 2439884 used, 1414944 buff/cache KiB Swap: 0 total, 0 free, 0 used. 13120520 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 21685 root 20 0 172992 33116 8436 S 52.9 0.2 3:16.11 python3.6 1278 root 20 0 92872 15116 3264 S 17.6 0.1 2:24.49 redis-serv+ 5366 admin 20 0 43540 3812 3020 R 17.6 0.0 0:00.03 top 18469 root 20 0 1643080 451968 78276 S 11.8 2.8 8:17.32 syncd 1097 root 20 0 136440 15188 5912 S 5.9 0.1 0:07.75 watchdogd 19856 admin 20 0 334880 61900 35296 S 5.9 0.4 0:00.44 docker 20985 root 20 0 159488 18616 5036 S 5.9 0.1 0:19.22 xcvrd 1 root 20 0 57768 7820 5544 S 0.0 0.0 0:32.58 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.91 ksoftirqd/0 4 root 20 0 0 0 0 S 0.0 0.0 0:01.90 kworker/0:0 5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:+ 7 root 20 0 0 0 0 S 0.0 0.0 0:06.93 rcu_sched 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root rt 0 0 0 0 S 0.0 0.0 0:00.39 migration/0 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-dr+ 11 root rt 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 admin@Leaf3B:~$ free total used free shared buff/cache available Mem: 15928852 2438836 12074940 36060 1415076 13121528 Swap: 0 0 0 admin@Leaf3B:~$ free | grep Mem | awk '{print $7/$2 * 100 }' 82.3662 admin@Leaf3B:~$