Správa využití swap v Linuxu

swap1I zkušeným linuxákům se může stát, že jim systém začne zaostávat při použití odkládacího prostoru nebo se vyskytnou problémy s nedostatkem paměti v systému Linux. Obvyklou radou je „snížit hodnotu swappiness“, a omezit tak využití odkládacího (swap) prostoru. Ale co je swappiness? A je opravdu dobré se v tom „hrabat“?

 

Co je to swap?

Když běží multitasking v operačním systému z fyzické paměti, nelze spustit nové procesy nebo přidělit více paměti existujícím procesům. Chcete-li tento problém vyřešit, můžete si vytvořit speciální blok s prostorem na lokálním úložišti (často pevný disk). Ten je pak využívám jako dočasná holdingová oblast pro procesy, které aktuálně neběží. V operačním systému je neaktivní proces „odswapován“ z paměti a na pevný disk. Tím se uvolní paměť pro nové úlohy. Když se neaktivní proces stane opět aktivním, je předán zpět z lokální paměti do paměti fyzické. Tento postup je znám jako swapování.

 

Swappiness

V Unixových systémech existuje hodnota zvaná swappiness, která určuje, jak bude nakládáno se stránkováním v paměti. Jeho výchozí hodnota je u většiny systémů „60“, ale může být nastavena na jakoukoliv v rozmezí 0 až 100. Dochází-li paměť, jádro buď „vystěhuje“ některé soubory z RAM a uvolní místo pro procesy nebo vymění některý stránkovací proces z paměti RAM na disk.

Bude-li použita nižší hodnota než výchozích 60, bude pravděpodobně uvolněno více cache I/O pro přerozdělení RAM. Snižování vyrovnávací paměti je považováno za méně náročné, zatímco záměna stránkování vyžaduje čtení z disku a zápis, což je náročnější. Při hodnotě „60“, bude použití swap o něco nižší, než opětovné použití cache. Pokud se hodnota swappiness zvýší na 100, výměna a vyčištění souborů z mezipaměti bude mít stejnou úroveň. To znamená větší swap a rychlejší I/O než ve výchozím nastavení. Nižší hodnota jak „10“ znamená, že swap bude použit mnohem méně a cache I/O může být mnohem dříve vyčištěna ve prospěch procesů. To by mohlo zvýšit interaktivitu, ale může se snížit rychlost I/O.

 

Snížení swappiness

Často je na webových stránkách a fórech jako rada doporučeno snížení swappiness na hodnotu „10“. Má to urychlit udržování více procesů ve fyzické paměti RAM pomocí snížení výměny. Tato logika je však poněkud jednoduchá a nemusí vždy být jediným řešením pro všechny problémy.

Snížení hodnoty swappiness je dobré v následujících situacích:

  • Pro systémové databáze nebo pokud používáte hodně aplikací náročných na databáze. Databáze obecně zpracují soubor v mezipaměti lépe než aplikace odkázané na OS. Pokud snížíte swappiness, omezíte ukládání souborů do mezipaměti operačního systému, a tím dáte šanci dané databázi zpracovat se svou vlastní cache.
  • Pro interaktivitu: Pokud je multitaskingu hodně, může se zlepšit zpracování více souborů nebo otevření rozsáhlých dokumentů tak, jak to umožňuje váš systém. Bude zapsáno méně procesů na disk a přístup k RAM bude mnohem rychlejší, čili váš počítač „pojede“ rychleji. Také je třeba mít na paměti, že to může snížit výkon I/O. Máte-li pomalé disky nebo pracujete-li intenzivně s I/O, může dokonce dojít ke snížení výkonu.
  • Pro placebo: Mnozí uživatelé jsou přesvědčeni, že nižší swappiness jim zrychlilo systém. Vcítíte-li se do toho, že váš systém je rychlejší, můžete to tak také vnímat (placebo efekt).

Mějte však vždy na paměti, že klesající swappiness může mít za následek pád systému díky zabíjení procesů s cílem uvolnit paměť. Snížení swappiness bude nejlepší, pokud máte k dispozici dostatek paměti RAM pro hladké spuštění systému. Proto byste měli mít hodnotu swappiness vždy raději nad „10“.

 

Zvýšení swappiness

Zvýšení swappiness může mít obecnou výhodu v urychlení I/O. I když to není častá rada, zvýšení swappiness může přijít vhod, pokud:

  • Provádíte náročné I/O operace a máte pomalé, staré pevné disky. Například provedení zálohy nebo dávková editace obrázků mohou být náročné na I/O (Výjimkou jsou databáze, které jsou sice náročné na I/O, ale umí využít nižší hodnotu swappiness, jak jsme si popsali výše).
  • Máte-li nedostatek paměti, ale relativně rychlé disky. V tomto nepravděpodobném scénáři může vyšší hodnota swappiness pomoci efektivněji zvládnout paměť (i když nastavení příliš vysoké hodnoty může opět znamenat ztrátu výkonu).

 

Jak spravovat swappiness

Za prvé, měli byste zvážit, zda vůbec tuto hodnotu potřebujete měnit. Máte problémy s výkonem? A co je důležitější, zkoušeli jste jiná systémová vylepšení? Pokud ne, je asi lepší hledat problém nejprve někde jinde. Ale pokud máte na mysli konkrétní scénář, možná chcete vědět víc.

Další otázka, jak moc je využit váš swap? To můžete zjistit pomocí jakéhokoliv monitorovacího nástroje pro výkon nebo zadáním příkazu free v terminálu. Příkaz free -m vám zobrazí přehled o využití paměti v megabajtech. U kontinuálního monitorování možná využijete příkaz watch.

Příkaz terminálu:
watch -n 1 free -m

 

Výstup příkazu free -m vypadá nějak takto:

 

swap2

 

Jak vidíte výše, v mém systému není swap vůbec používán.

Teď, když máte zkušenosti se swapowáním, budete možná chtít vědět, jaká část je aktivní. Příkaz vmstat 1 vám zobrazí vše, co potřebujete vědět o využití virtuální paměti vašeho systému (swap i fyzická RAM dohromady). Proces zastavíte stiskem kláves Ctrl+C.

Příkaz terminálu:
vmstat 1

 

 

swap3

 

Je třeba zkontrolovat sloupec swap, kde si znamená „swap in“ a so znamená „swap out“. Pokud jsou čísla vysoká, znamená to, že výměnná činnost je velká, což je ukazatelem problému s nedostatkem paměti. Vidíte-li malé množství aktivního swappingu po zadání příkazu free , může to být způsobeno laděním swappiness.

Je také dobré provést i další benchmarky, jako je I/O disku, průměrné zatížení atd., takže než zadáte novou hodnotu swappiness, máte něco k porovnání.

Chcete-li si nejprve vyzkoušet jinou hodnotu swappiness, můžete si jí dočasně nastavit pomocí příkazu sysctl. Nepotřebujete restart a efekt je okamžitý. Ve skutečnosti se restartem obnoví výchozí hodnota, takže můžete zcela bezpečně experimentovat:

Příkaz terminálu:
sudo sysctl vm.swappiness=10

Samozřejmě, namísto „10“  si můžete zadat jinou hodnotu (mezi „0“ a „100“).

Poté, co jste nalezli svou správnou hodnotu, můžete trvale změnit konfiguraci systému úpravou souboru „/etc/sysctl.conf

Příkaz terminálu:
sudo nano /etc/sysctl.conf

 

a přidat řádek:
#Hodnota swappiness
vm.swappiness=10

na konec tohoto souboru, s hodnotou nastavenou podle vašich preferencí, samozřejmě.

 

Závěr

Snížení swappiness na hodnotu „10“ je často doporučováno jako jediné správné řešení na vše, ale skutečné využití této techniky může být trošku složitější. Vytvořením správných měřítek pro váš konkrétní systém, a to, co od něj očekáváte si můžete nastavit jemným doladěním používání vašeho swapu a dosáhnout tak požadovaného výkonu (buď zvýšit interaktivitu nebo I/O).

 

Štítky , , , .Záložka pro permanentní odkaz.

Autor: archiv

články, jejichž autoři požádali o smazání účtu

11 reakcí na Správa využití swap v Linuxu

  1. Mirek říká:

    Mám, prosím, jeden dotaz: Pokud chci mít na disku dva systemy – konkrétně Mint a Debian, stačí jeden swap pro oba nebo musí mít každý svůj? Dík za odpověď

  2. romanos74 říká:

    Mám 8GB DDR3 a využití paměti je v rozsahu 12% – 35%.
    SWAP jsem odstranil úplně a systém jede jak hodinky a to používám hodně Wine (WOW, Photosop cs6) při něm to využití paměti kolem 35%.
    Bez swap funguje linux už skoro rok a zatím žádný problém.
    Ostatně podle obrázku výše vidím že ty swap taky nemáš (swap total-0).
    Linux Mint 17.2 Cinamon 64-bit.

  3. livan říká:

    u mňa použitie príkazu free -m vypíše nasledovné hlásenie
    free -m
    free: Multiple unit options doesn’t make sense.

    funguje iba obyčajné free bez parametra -m
    free
    total used free shared buff/cache available
    Mem: 1892 560 613 258 718 1028
    Swap: 4095 0 4095

    • Bedňa říká:

      Pretože už máš alias free=“free -m“ v .bashrc.

      Všetky aliasy si zobrazíš príkazom

      cat .bashrc | grep -i alias
      
  4. theseuszn říká:

    Díky za osvětlení. Mám tu zkušenost na desktopech taktéž. Je-li stroj relativně mladý a má 4Gb RAM a více, nbějaké dvoujádro a více (plnotučné CPU, žádný celerony nebo semprony) a je-li na něm plotnový disk s otáčkami 7200ot/min, tak se mi nestalo, že by swapka byla potřeba. Na druhou stranu se mi poslední dobou dostávají pod ruce notesy sice zánovní, ale jelikož to sou plečky cca do 8000Kč (akciovky s Celeronama), což sou ty nesmyslný Atomy typu All In One PC s diskama 5400ot/min, takže slimáci, tak tam swappines nastavuju na 10, ikdyž mají RAM dost a je to i celkem vizuelně znát, žádné pocity. Jinak u notesů někdo používá uspávání, tak tam swapku raděj nechat s doporučenou kapacitou 1,5 nasobku fyzické RAM (jinak těmhle plečkám není jak výrazně pomoci, to je daný, bohužel). Díky za článek

  5. Will.M říká:

    je na to nejaky vypocet kolik swap by tak slo…? mam Acer Aspire One Cloudbook 11 s 30SSD HDD, a 2GB ram na nem bezi LM 19 Ciannom

    • takyradějianonymně říká:

      ??? máš přece nahoře článek a na webu je kolem toho dost také. Nehledě na to, že píše se tam obvykle také a ve smyslu že je třeba to odzkoušet a doladit!
      Rozšiř si paměť na 4 GB a swap potom neřeš, pro běžnou práci tedy pro běžné brouzdání po webu to bude stačit. Jakoby bez využití swapu. Pokud paměť nerozšíříš tak 2 GB jsou stále v normě byť už nněkdy natěsno: tady bych určitě neprovozoval Cinnamon ale úspornější desktop třeba Xfce nebo vůbec bych tam dal něco jako Lubuntu (LXDE a bude nově s LXQt).
      Na jen 30 GB SSD mít postavený systém a že tam budeš také aktivně chtít swapovat, místo rozšíření paměti nebo úspornějšího desktopu, tak musím kroutit hlavou a především tobě připomenout, jak máš a zda-li vůbec také řešený trim? Na webu je kolem toho celá hromada.

      • xxx říká:

        @takyradějianonymně
        Tak ono ACER ASPIRE ONE CLOUDBOOK 11 nie je pracovny laptop, je to skor pisaci stroj.
        Je tam natvrdo 2GB ram DDR3, a eMMC flash disk (ziadne SSD) cize to je cosi take ako mam Chromebook alebo ACER ES1-111M.
        Ale riesenie je. Dat xfce / mate a nastavit swappiness na 0.
        Popripade prejst na Xubuntu / mx17 / lmde3.

    • xxx říká:

      @Will.M neviem aka je to presne verzia, ale ako som ti pisal aj na fore k hram na tom ntb, je to to iste co mam ja, v podstate tablet s klavesnicou. Akurat ze na mojom Acer ES1-111M sa da dat az 8GB ram, ale to nepomohlo, to eMMC je pomale

      Tu to presne rozoberaju…. Just the name Cloudbook suggests that Acer delivers an opponent for Google’s Chromebooks.

  6. Pingback:| Manjaro.cz