Nätverks-SONiC: Systemminnesanvändning i SONiC – "buff/available"
Summary: I den här artikeln förklaras innebörden av fälten "buff/cache" och "avail Mem" i "top"-utdata i Dell Networking SONiC:s inbyggda CLI.
Instructions
-
Fråga 1: Vad är buff/cache?
"buff/cache" är den mängd minne som används för filsystemets buffertar och cacheminne. Den här minnesanvändningen är en viktig del av hur Linux hanterar och optimerar systemprestanda. Låt oss bryta ner vad "buff/cache" betyder:
Buffertar:
Buffertar i det här sammanhanget anger en del av systemminnet (RAM) som används för att tillfälligt lagra data som läses från eller skrivs till disken. När ett program läser data från en fil, till exempel, läses data först in i en buffert i minnet. Buffertar bidrar till att förbättra diskens I/O-prestanda eftersom det går snabbare att läsa eller skriva till RAM-minnet än att komma åt den fysiska disken. Buffertar kan också säkerställa att data skrivs till disk mer effektivt, vilket minskar antalet disk-I/O-åtgärder.Cache:
Cache anger i det här sammanhanget den del av minnet som används för att lagra data som används ofta från filer och kataloger. Linux använder en mekanism som kallas "sidcache" för att cachelagra data från filer och kataloger som har lästs eller skrivits till nyligen. Dessa cachade data lagras i minnet så att om samma data behövs igen kan de snabbt hämtas från RAM-minnet istället för att läsa dem från den långsammare disklagringen. Den här cachen kan avsevärt förbättra systemprestanda genom att minska behovet av att komma åt disken för data som används ofta.När program eller operativsystemet behöver mer minne för aktiva processer kan buffert-/cacheminnet snabbt frigöras för att tillgodose dessa behov.
Kommandot "top" visar det här värdet. Den visar också systemets aktuella status, CPU-användning och minnesanvändning.
Obs! Kommandot "top" fungerar endast i SONiC:s inbyggda CLI och inte i Dells MF-CLI (MF-CLI är Dells anpassade CLI för hanteringsramverket). Det inbyggda CLI är det kommandoradsgränssnitt som visas första gången du startar en SONiC-switch. MF-CLI nås när du har skrivit "sonic-cli" i det ursprungliga inbyggda cli:t.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
-
Fråga 2: Vad är tröskelvärdet för hög användning av buffert-/cacheminne?
Buffert-/cacheminne används som ett cacheminne för att lagra data som används ofta. Därför är det möjligt att en betydande del av det tillgängliga RAM-minnet tilldelas för detta ändamål. Det bör noteras att användningen av buffert-/cacheminne är mycket dynamisk och ständigt förändras baserat på systemets efterfrågan. Därför är det mer värdefullt att övervaka den totala minnesanvändningen (eller motsvarande "tillgängliga minne") och se till att systemet har tillräckligt med ledigt minne för att köra program och processer.
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
Ett användbart kommando för att uttrycka procentandelen av systemets RAM-minne som är tillgängligt för användning på en Dell Enterprise SONiC-switch:
free | grep Mem | awk '{print $7/$2 * 100 }'Det här kommandot dividerar "avail Mem" med "MiB Mem total".
Här är ett annat exempel som jämför kommandona ovan och anger deras relationer som referens:
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:~$