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 -15Zauzet 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 5Pronađ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 -15Prepoznajte 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.