Hlavní navigace

Kam se poděla paměť?

Michal Kwolek 1. 8. 2002

Takto se ptá nejeden uživatel Linuxu, který po několika hodinách práce zjistí, že jeho oblíbená utilitka pro zjišťování volné paměti (free, xosview, gkrellm, ...) indikuje mnohem méně volné paměti než při startu systému, přičemž dle top mají všechny programy pořád stejnou velikost.

V případě programu free je relevantní řádek začínající řetězcem „-/+ buffers/cache“, kde jsou od využité paměti odečteny diskové vyrovnávací paměti, které se v případě potřeby uvolní. Pokusme se nyní o malý experiment. Po restartu systému spusťte free, pak obnovu databáze pro „locate“ (např. locate -u -c) a poté znovu free. V závislosti na počtu souborů na zkoumaných discích a velikosti paměti se zmenší velikost volné paměti. V mém případě to bylo přes 125MB. Kampak se tedy ta paměť poděla?

Odpověď se nalézá v souboru /proc/slabinfo. Nalezneme tam výpis vyrovnávacích pamětí jádra (síťové údaje, údaje souborových systémů, virtuální paměti a buffery pro DMA přenosy). Většinou jsou největšími žrouty paměti položky inode-cache a dentry-cache (directory entry cache). Nejdůležitější pro nás je pátá položka každého řádku – určuje celkový počet alokovaných stránek. Bližší informace viz man slabinfo. I když se tato paměť také v případě potřeby uvolňuje (ovšem při současných zmatcích okolo VM subsystému v jádru asi nikdo nebude kompetentní říct, zda se v nějaké konkrétní verzi jádra dá přednost odswapování části dat oproti uvolnění slabcache…), není započítána do „Cached“ paměti v /proc/meminfo, a tudíž i příkaz free a ostatní utilitky tohoto typu zobrazí tuto paměť jako „natvrdo“ obsazenou.

Na tento problém jsem narazil při zkoumání paměťového zatížení serveru. Sledoval jsem strategii přidělování paměti procesům a její odkládání na swap v různých situacích. Pro tyto účely jsem potřeboval znát hodnotu volné paměti se zohledněním údajů ze slabinfo. Počítaní s kalkulačkou v ruce mě přestalo záhy bavit, a proto jsem si napsal utilitku, která dělala celou špinavou práci.

Výstup prográmku rfree (real free ;-) se nápadně podobá výstupu programu free. Zaměnil jsem pouze nepoužívanou hodnotu „Shared“ za „Slab“. Snažil jsem se zachovat i ostatní vlastnosti free – podporovány jsou všechny přepínače:

-m  údaje v megabajtech
-k  údaje v kilobajtech (implicitní)
-b  údaje v bajtech
-o  vynechá řádek "-/+ buffers..."
-t  přidá řádek total - součet fyzické paměti a swapu
-V  vypíše verzi
-s n    doba opakuje výpis každých n vteřin. n může být číslo
    s plovoucí des. čárkou. Pro dodržení odstupů byl použit
    pro jednoduchost usleep, ale uvažuji o předělávce na
    nanosleep.

Na rozdíl od free rfree kontroluje platnost údaje za -s a bouří se, pokud nenalezne kladnou číselnou hodnotu. Originální free nic nenamítá např. proti -s –1 a čeká pak mezi jednotlivými výpis pravděpodobně 2147483648 vteřin. Bohužel zdroják nemám a čekat takovou dobu se mi nechtělo.

Známé chyby: nevím, jak vypadá slabinfo na SMP počítačích a na jádrech se zakompilovanými slabinfo statistikami, program v těchto případech pravděpodobně selže. Pokud mi zašlete výstup cat /proc/slabinfo, rád program opravím.

Překlad a instalace:

tar xvfz rfree.tar.gz
make
make install

rfree.tar.gz (2,2 KiB)

Pro make install je nutno mít práva na zápis do /usr/bin.

Jsem si vědom, že tento program je velmi primitivní a každý trochu zkušenější uživatel si napíše elegantnější v nějakém skriptovacím jazyku během několika minut, ale já jsem (možná právě proto) na internetu program s podobnou funkčnosti nenašel. Budu rád, když alespoň někomu poslouží. Nejsem žádný C a už vůbec ne Linux guru, proto budu jen rád, když pošlete alternativní verze nebo patche přímo do diskuse pod článkem nebo na miho@centrum.cz.

free:
             total       used       free     shared    buffers     cached
Mem:        515420     506400       9020          0      81108     209496
-/+ buffers/cache:     215796     299624
Swap:       522072          0     522072

rfree:
             total       used       free       slab    buffers     cached
Mem:        515420     506396       9024     144020      81108     209500
-/+ buffers/cache:      71768     443652
Swap:       522072          0     522072
Našli jste v článku chybu?

13. 8. 2002 10:12

Michal Kwolek (neregistrovaný)

http://miho.webpark.cz

Podporuje slabinfo statistiky a SMP. Ted schazi uz jen stare kernely (2.0, 2.2 nevim kdy presne se to menilo, pokud mate komp s jadrem 2.0.? zaslete mi prosim /proc/slabinfo)



5. 8. 2002 10:28

Jirka (neregistrovaný)

dobry den,
pokud je mi znamo tak system spravy pameti funguje v linuxu obecne tak ze pozira a pozira (logicky protoze pote je start a provozovani opetovne rychlejsi) a v okamziku kdy jiz pamet nedostacuje proste uvolni nepouzivane procesy pripadne swapuje...
ale mozna se mylim. kazdopadne tim by se vas problem s vyprazdnovanim stal zbytecny .))
mejte se fajn.




Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

120na80.cz: Pánové, pečujte o svoje přirození a prostatu

Pánové, pečujte o svoje přirození a prostatu

DigiZone.cz: ČRo rozšiřuje DAB do Berouna

ČRo rozšiřuje DAB do Berouna

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

DigiZone.cz: Sony KD-55XD8005 s Android 6.0

Sony KD-55XD8005 s Android 6.0

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

120na80.cz: Rakovina oka. Jak ji poznáte?

Rakovina oka. Jak ji poznáte?

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Podnikatel.cz: Babiše přesvědčila 89letá podnikatelka?!

Babiše přesvědčila 89letá podnikatelka?!

Vitalia.cz: Tesco: Chudá rodina si koupí levné polské kuře

Tesco: Chudá rodina si koupí levné polské kuře

DigiZone.cz: NG natáčí v Praze seriál o Einsteinovi

NG natáčí v Praze seriál o Einsteinovi

Lupa.cz: Avast po spojení s AVG propustí 700 lidí

Avast po spojení s AVG propustí 700 lidí

Podnikatel.cz: Podnikatelům dorazí varování od BSA

Podnikatelům dorazí varování od BSA

Lupa.cz: Google měl výpadek, nejel Gmail ani YouTube

Google měl výpadek, nejel Gmail ani YouTube

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Vitalia.cz: Baletky propagují zdravotní superpostel

Baletky propagují zdravotní superpostel

Vitalia.cz: Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Láska na vozíku: Přitažliví jsme pro tzv. pečovatelky

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...