V Linux Mintu, potažmo v Linuxu obecně, zobrazí příkaz free informace o využití paměti operačního systému, tzn. celkové množství systémové paměti RAM, kolik z ní je volné, kolik je využíváno operačním systémem, uživatelskými aplikacemi atd.
Existuje více příkazů v Linuxu, které mohou být použity k zobrazení zmíněných informací, ale příkaz free dává čistý a jednoduchý přehled o paměti systému, který je snadno čitelný (je-li použit správně). V dnešním článku si proto uvedeme několik jednoduchých příkladů použití tohoto příkazu k shromáždění užitečných informací o vašem systému.
Nyní se ale pokusme odpovědět na otázku, co se nám to vlastně zobrazí při použití příkazu free s argumentem -g, jak je vidět na screenshotu níže.
Jak vidíte na výstupu příkazu, je docela těžké pochopit, co tyto jednotlivé číslice znamenají (vysvětlím za chvíli). Ale myslím si, že lze z výstupu můžete tak nějak intuitivně odhadnout, co je zobrazeno ve sloupci „free„. Ano, je to dostupná velikost volné paměti v systému, v mém případě je to 4. Může se vám tak ale klidně zobrazit i 0, což může působit docela skličujícím dojmem, zejména pro nového uživatele.
Něco čitelnějšího pro normálního uživatele
Takže se teď pokusme udělat něco pro zobrazení srozumitelnějšího a přesnějšího výstupu. Jednoduše to lze udělat přidáním argumentu -h. Takže místo příkazu free -g, zadáme free -gh, čímž dostaneme výstup, podobný níže uvedenému:
Jak vidíte, jakmile je použít argument -h (volitelně) u příkazu free, stane se výstup „inteligentnější“, a to v tom smyslu, že v případě potřeby jsou zobrazena data o využití paměti v GB, ale i v MB, což dává větší smysl, zejména pro výše uvedené nulové hodnoty. Například ve sloupci „shared“ je v prvním případě hodnota 0, avšak s použitím argumentu -h je v tomto sloupci už 151M.
Pokud použijete příkaz free pouze s argumentem -h, pak jsou zobrazeny gygabytové hodnoty na desetinná místa.
Co tyto různé hodnoty znamenají?
Než si odpovíme na tuto otázku, dovolte mi, abych vám rychle popsal něco o vyrovnávací paměti. Bez této základní informace těžko pochopíte některé údaje, jako je množství použité a volné paměti na výstupu příkazu free.
Co je to vyrovnávací paměť v paměti?
Když například otevřete video soubor na vašem počítači, všimněte si, že je nejpomalejší při svém otevírání . A že po jeho zavření a znovuotevření (v krátkém intervalu), se pak otevírá mnohem rychleji. To je proto, že operační systém si jej udržuje v paměti, a to i poté, co je uzavřen. Je to proto, aby si ho mohl znovuotevřít co nejrychleji, pokud ho tedy v paměti najde (protože RAM je mnohem rychlejší ve srovnání s jinými zařízeními pro ukládání dat v počítači).
V Linuxu se oblast, kde jsou tyto typy dat drženy, nazývá stránka mezipaměti a ve výchozím nastavení přiděluje operační systém veškerý volný prostor RAM pro stránkování této mezipaměti. Operační systém v zásadě považuje stránku mezipaměti za volný prostor. Tak například, pokud se uživatel pokusí otevřít nějaký program a není dost místa v RAM pro jeho načtení, pak OS vymaže část ze stránky mezipaměti a vytvoří tak cestu pro daný program.
To je o vyrovnávací paměti v kostce vše a nyní se pojďme přesunout do další části.
Řádek Mem
V řádku Mem ve výstupu je 6 položek:
total – to je celkové množství paměti (RAM), které je k dispozici operačnímu systému. Ve většině případů to znamená, že je to skutečná fyzická velikost paměti RAM
used – to je celkové množství paměti RAM, která se v systému aktuálně používá (v podstatě všechno, co je načten v paměti RAM, včetně stránkování mezipaměti samozřejmě). A to je místo, které obvykle uživatele mate. Protože když budete porovnávat položku „used“ pro paměť na výstupu příkazu free s hodnotou „used“ uvedenou v systémovém monitoru (nástroj buď s GUI rozhraním nebo i na příkazovém řádku, např. htop), může být tato hodnota zcela odlišná. A důvod, proč tomu tak je spočívá v tom, jak ten který program definuje položku paměti „used„.
Některé systémové monitory při výpočtu celkového využití paměti počítají i stránkování mezipaměti. Jiné ignorují stránkování mezipaměti (protože OS ho nebere příliš vážně a i když běží, nepočítá jej do paměti) a buff/cache (vysvětleno níže), nebo do značné míry i jakákoliv jiná data v mezipaměti.
free – to je celkové množství volné paměti RAM (vypočet: total – used).
shared – jedná se o aktuální celkové množství paměti používané ke sdílení dat mezi více programy.
buff/cache (Buffer Cache) – jedná se o celkové množství paměti, které používá operační systém, aby načetl data z jiných hardwarových zařízení (myš, klávesnice, paměťová média, jako jsou SSD disky, pevné disky, mechaniky CD/DVD ROM atd.) do paměti. Také se používá k předávání dat z paměti do příslušného zařízení, jakož i pro ukládání souborů z RAM na disk. Jedná se také o typ datového cache mechanismu a část jeho dat je vedena v stránkování mezipaměti a část mezipaměti vyrovnávací paměti je držena odděleně od stránkování.
cache – to je celková velikost stránkování vyrovnávací paměti.
Řádek Swap
RAM je velmi rychlá, ale také velmi drahá, proto je její velikost omezená. A zde může nastat situace, kdy i po vymazání celé stránky mezipaměti nemůže operační systém stále najít žádnou volnou paměť pro spuštění nových programů. To může způsobit, že program, který se snažíte spustit, spadne nebo dokonce havaruje i celý systém.
To je místo, kde přichází ke slovu swap. V Linuxu to může být buď samostatný oddíl nebo soubor používaný operačním systémem jako virtuální paměť. Do něj se dočasně přesunou data z paměti RAM pro uvolnění paměti. Ale vzhledem k tomu, že tyto ukádací jednotky jsou poměrně pomalé ve srovnání s RAM, tak to za ztížených podmínek může být pro uživatele velmi nepříjemné a v důsledku toho by OS mohl snadno ztrácet odezvu. V podstatě, čím nižší je použití swap, tím lépe. A tato informace o swapu (soubor nebo oddíl) se zobrazí právě v řádku „Swap: Jednak celková velikost (total), aktuálně použitá velikost (used) a volná velikost (free). U mě má vše nulové hodnoty, protože ani nemám swap nastavený.
Jaké jsou další možnosti použití příkazu free?
Příkaz terminálu: |
---|
free -b |
Vypíše informace o paměti v bytech.
Příkaz terminálu: |
---|
free -k |
Výstup bude v kilobytech.
Příkaz terminálu: |
---|
free -m |
Ano, uhodli jste, výstup bude v megabytech.
Příkaz terminálu: |
---|
free -s 1 |
Tento způsob zadání příkazu free vypíše údaje každou sekundu (1 můžete nahradit vámi preferovaným intervalem). Avšak tento výstup nevypadá nijak pěkně a je i nepraktický.
Příkaz terminálu: |
---|
free -t |
S argumentem -t získáte součet všech hodnot v rámci jednotlivých sloupců.
Existuje ještě několik možností použití příkazu free, o kterých se dočtete v jeho manuálu. Stačí zadat tento příkaz v terminálu:
Příkaz terminálu: |
---|
man free |
Doufám, že vám tento článek umožnil přiměřeně porozumět příkazu free v Linux Mintu. Přeji vám hodně úspěchů při jeho používání.
Článek má vysokou užitkovou hodnotu, sledování využití paměti je potřebná činnost, protože zvlášt webové prohlížeče jsou extrémní „požírači paměti“, což je při menší velikosti RAM dost tristní záležitost.
Nicméně téma pamětí by mohla mít i pokračování, kde by mohli zkušení hoši i děvčata prozradit i další finty, co všechno si může uživatel dovolit, aby ze systému „vytřískal“ co nejvíc.
Já se potom rád připojím i se svými nestandardními zkušenostmi ;°)