Sledujte available, nikoli free
Linux využívá jinak nevyužitou paměť jako diskovou mezipaměť, takže málo volné paměti je na zdravém serveru normální. Sloupec available je odhad jádra, kolik paměti mohou nové úlohy získat bez přesouvání do swapu. Právě tuto hodnotu sledujte. Přesný výpočet used závisí na verzi nástroje, proto jej neporovnávejte mezi různými systémy.
free -h
grep -E 'MemAvailable|Shmem:|SReclaimable' /proc/meminfoCo lze a nelze z mezipaměti uvolnit
Mezipaměť stránek lze obvykle uvolnit, když aplikace potřebují paměť. Sdílená paměť a tmpfs (Shmem) se také zobrazují v mezipaměti, ale nelze je jednoduše zahodit, protože obsahují data, která nemají kopii na disku. Velká mezipaměť při nízké dostupné paměti proto často znamená velký tmpfs nebo velký segment sdílené paměti.
df -h -t tmpfs
sudo slabtop -o | head -15Využitý swap nemusí znamenat problém
Server může bez újmy uchovávat zřídka používané stránky ve swapu celé týdny. Problémem jsou neustálé přesuny. Sledujte sloupce si a so v příkazu vmstat: hodnoty trvale nad nulou znamenají, že systém aktivně přesouvá stránky mezi RAM a swapem, což je známka skutečného nedostatku paměti.
swapon --show
vmstat 1 5Zjistěte, co paměť využívá
Seřaďte procesy podle rezidentní paměti. RSS započítává stránky sdílené mezi procesy každému z nich, takže hodnoty více procesů nelze jednoduše sečíst. Nástroje s PSS, například smem, dávají přesnější součet, pokud je máte nainstalované.
ps -eo pid,user,rss,comm --sort=-rss | head -15Rozpoznejte skutečný nedostatek
Příznaky jsou málo dostupné paměti, neustálé přesouvání mezi RAM a swapem a procesy ukončené mechanismem out-of-memory killer. Zkontrolujte log jádra. Nespouštějte drop_caches jen proto, aby čísla vypadala lépe: server pak pouze musí znovu číst z disku a nic se tím nevyřeší.
sudo journalctl -k --no-pager | grep -iE 'out of memory|oom-kill'Paměť v CH-J Server Manager
System Monitor čte tyto hodnoty přes SSH. V Linuxu definuje used jako MemTotal − MemFree − Buffers − Cached − SReclaimable a available jako odhad jádra. Sdílená paměť je součástí Cached a nelze ji uvolnit; kategorie v pruhu se nepřekrývají. Protože se vzorec liší od některých verzí free, čísla se nemusí přesně shodovat. Zobrazuje také swap s historií využití. ZFS ARC se nesleduje samostatně, takže se na hostitelích se ZFS počítá jako využitá paměť.