CH-J Server Managerupravljanje poslužiteljima preko SSH
Meni
Svi vodiči i članci →

Kako tumačiti RAM, predmemoriju i swap na Linux poslužitelju

Što znače stupci naredbe free, zašto velika potrošnja memorije često nije problem i koji znakovi doista upućuju na manjak memorije.

Pratite available, a ne free

Linux inače neiskorištenu memoriju koristi kao diskovnu predmemoriju pa je malo slobodne memorije na ispravnom poslužitelju normalno. Stupac available predstavlja procjenu jezgre koliko memorije novi zadaci mogu dobiti bez korištenja prostora swap. Tu vrijednost treba pratiti. Točan izračun vrijednosti used ovisi o verziji alata pa je nemojte uspoređivati između različitih sustava.

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

Što se iz predmemorije može osloboditi, a što ne

Predmemorija stranica obično se može osloboditi kada aplikacijama zatreba memorija. Zajednička memorija i tmpfs (Shmem) također se prikazuju pod predmemorijom, ali ne mogu se jednostavno odbaciti jer sadrže podatke čija kopija ne postoji na disku. Velika predmemorija uz malo dostupne memorije stoga često znači velik tmpfs ili segment zajedničke memorije.

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

Zauzet swap nije automatski problem

Poslužitelj može tjednima držati rijetko korištene stranice u prostoru swap bez štetnih posljedica. Problem je neprekidno premještanje. Pratite stupce si i so u vmstat: vrijednosti koje ostaju iznad nule znače da sustav aktivno premješta stranice između RAM-a i prostora swap, što je znak stvarnog manjka memorije.

swapon --show
vmstat 1 5

Pronađite što troši memoriju

Poredajte procese prema rezidentnoj memoriji. RSS svakom procesu pribraja stranice koje dijeli s drugim procesima pa se vrijednosti više procesa ne mogu jednostavno zbrojiti. Alati koji podržavaju PSS, poput smem, daju točniji zbroj ako su instalirani.

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

Prepoznajte stvarni manjak

Znakovi su malo dostupne memorije, stalno premještanje u swap i iz njega te procesi koje prekida mehanizam za prekid procesa pri nedostatku memorije. Provjerite zapisnik jezgre. Nemojte pokretati drop_caches da bi brojke izgledale bolje: time samo prisiljavate poslužitelj na ponovno čitanje s diska i ništa ne rješavate.

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

Memorija u CH-J Server Manager

System Monitor čita ove vrijednosti putem SSH. Na Linuxu definira used kao MemTotal − MemFree − Buffers − Cached − SReclaimable, a available kao procjenu jezgre. Zajednička memorija dio je vrijednosti Cached i ne može se osloboditi, a kategorije na traci ne preklapaju se. Budući da se formula razlikuje od nekih verzija alata free, brojke se možda neće potpuno podudarati. Prikazuje i swap s poviješću korištenja. ZFS ARC ne obrađuje se zasebno pa se na računalima sa ZFS računa kao zauzeta memorija.

Detaljna dokumentacija

man: free →

man: proc_meminfo →

Biometrično otključavanje i sigurnost →