CH-J Server Managerspráva serverov nad SSH
Menu
Všetky návody a články →

Ako čítať údaje o RAM, vyrovnávacej pamäti a swap na linuxovom serveri

Čo znamenajú stĺpce príkazu free, prečo vysoké využitie pamäte často neprekáža a ktoré príznaky skutočne ukazujú na nedostatok pamäte.

Sledujte available, nie free

Linux používa inak nevyužitú pamäť ako diskovú vyrovnávaciu pamäť, takže málo voľnej pamäte je na zdravom serveri normálne. Stĺpec available je odhad jadra, koľko pamäte môže získať nová úloha bez použitia swap. Sledujte práve toto číslo. Presný výpočet used závisí od verzie nástroja, preto ho neporovnávajte medzi rôznymi systémami.

free -h
grep -E 'MemAvailable|Shmem:|SReclaimable' /proc/meminfo

Čo sa dá a nedá uvoľniť z vyrovnávacej pamäte

Stránkovú vyrovnávaciu pamäť možno zvyčajne uvoľniť, keď aplikácie potrebujú pamäť. Pod cache sa zobrazuje aj zdieľaná pamäť a tmpfs (Shmem), ale tie nemožno jednoducho zahodiť, pretože obsahujú dáta bez kópie na disku. Veľká vyrovnávacia pamäť pri nízkej hodnote available preto často znamená veľký tmpfs alebo segment zdieľanej pamäte.

df -h -t tmpfs
sudo slabtop -o | head -15

Používaný swap nie je automaticky problém

Server môže bez škody ponechávať zriedka používané stránky v swap celé týždne. Problémom je neustály presun. Sledujte stĺpce si a so v príkaze vmstat: hodnoty trvalo nad nulou znamenajú aktívne presúvanie medzi RAM a swap, čo je príznakom skutočného nedostatku pamäte.

swapon --show
vmstat 1 5

Zistite, čo využíva pamäť

Zoraďte procesy podľa rezidentnej pamäte. RSS započítava stránky zdieľané medzi procesmi každému z nich, takže hodnoty viacerých procesov nemožno jednoducho sčítať. Nástroje s PSS, napríklad smem, poskytujú presnejší súčet, ak ich máte nainštalované.

ps -eo pid,user,rss,comm --sort=-rss | head -15

Rozpoznajte skutočný nedostatok

Príznakmi sú málo dostupnej pamäte, neustále používanie swap a procesy ukončené mechanizmom out-of-memory killer. Skontrolujte log jadra. Nespúšťajte drop_caches len preto, aby čísla vyzerali lepšie: server potom iba znovu číta z disku a nič sa tým nevyrieši.

sudo journalctl -k --no-pager | grep -iE 'out of memory|oom-kill'

Pamäť v CH-J Server Manager

System Monitor číta tieto hodnoty cez SSH. Na Linuxe definuje used ako MemTotal − MemFree − Buffers − Cached − SReclaimable a available ako odhad jadra. Zdieľaná pamäť je súčasťou Cached a nemožno ju uvoľniť; kategórie v pruhu sa neprekrývajú. Keďže sa vzorec líši od niektorých verzií free, čísla sa nemusia presne zhodovať. Zobrazuje aj swap s históriou využitia. ZFS ARC sa nevyhodnocuje samostatne, takže na hostiteľoch so ZFS sa počíta ako použitá pamäť.

Podrobná dokumentácia

man: free →

man: proc_meminfo →

Biometrické odomknutie a bezpečnosť →