Operační systém Linux (tedy jeho jádro – tedy „Linux“ v pravém slova smyslu) se snaží maximálně využít dostupnou paměť počítače. Veškerá RAM, kterou nespotřebovaly spuštěné programy a systém samotný, je využita pro účely urychlení vstupu a výstupu:
Program free slouží k vypsání volné paměti. Použil jsem přepínač -m, který vypisuje v megabajtech – můžete zkusit také přepínač -g. Vidíme, že počítač má 6 GB paměti (total) a z toho je 5903 MB použito.
[lzapletal@atlas ~]$ free -m
total used free shared buffers cached
Mem: 5970 5903 67 0 716 2627
-/+ buffers/cache: 2560 3410
Swap: 4102 109 3992
Pro účely bufferů je využito přes 700 MB a disková cache zabírá 2627 MB. Všimněte si řádku “-/+ buffers/cache“, který nám usnadní kalkulaci, kolik to vlastně máme volné paměti. Jak jsem předeslal, paměť pro buffery a cache je vlastně využitá volná paměť, a tedy lze ji kdykoli přidělit běžícím programům. Na tomto řádku se tedy dočteme, kolik je použité paměti ve skutečnosti (2560 MB) a kolik volné (3410 MB).
Ve chvíli, kdy si program vyžádá další blok paměti, je uvolněna na úkor diskové cache a poté i bufferů. To neplatí opačně – programy musejí sami svoji paměť systému vrátit (a nebo si uvolnění systém může vynutit). Pakliže je volná paměť nevyužitá (free) a program provede diskové náročnou operaci (například grep nad celým filesystémem), velikost cache obvykle naroste a zaplní někdy i celou volnou paměť. Častokrát se tedy může stát, že máte volnou pamět (free) nulovou - to je v pořádku. Musíte odečíst slupce buffers a cached.
Kdyby se mě někdo v okamžik volání programu free u daného příkladu zeptal, kolik mám volné paměti, neodpovím „67 mega“. Odpovím „přes tři giga“.
Diskuze