Linuxové jádro

Porozumění vm.swappiness

Porozumění vm.swappiness
Linuxové jádro je poměrně složitý software s dlouhým seznamem komponent, jako jsou moduly, rozhraní a konfigurační soubory [1]. Tyto komponenty lze konfigurovat se specifickými hodnotami, aby se dosáhlo požadovaného chování nebo provozního režimu komponenty [2,3,4]. Následně toto nastavení přímo ovlivňuje chování i výkon vašeho systému Linux jako celku.

Aktuální hodnoty jádra Linuxu a jeho komponent jsou zpřístupněny pomocí speciálního rozhraní - adresáře / proc [5]. Toto je virtuální souborový systém, ve kterém jsou jednotlivé soubory naplněny hodnotami v reálném čase. Hodnoty představují skutečný stav, ve kterém se nachází jádro Linuxu. K jednotlivým souborům v adresáři / proc můžete přistupovat pomocí příkazu cat následujícím způsobem:

$ cat / proc / sys / net / core / somaxconn
128
$

Jeden z těchto parametrů jádra se nazývá vm.swappiness. „Řídí relativní váhu, která je dána výměnou z runtime paměti, na rozdíl od vynechání stránek paměti z mezipaměti systémových stránek“ [6]. Počínaje verzemi linuxového jádra 2.6 byla zavedena tato hodnota. Je uložen v souboru / proc / sys / vm / swappiness .

Pomocí Swap

Použití swapu [6] bylo na počátku 90. let zásadní součástí používání menších UNIXových strojů. Stále je užitečné (například mít ve vozidle rezervní pneumatiku), když vám do práce naruší nepříjemné úniky paměti. Zařízení se zpomalí, ale ve většině případů bude stále použitelné k dokončení přiděleného úkolu. Vývojáři bezplatného softwaru dělají velké kroky ke snížení a eliminaci chyb programu, takže před změnou parametrů jádra zvažte nejprve aktualizaci na novější verzi vaší aplikace a souvisejících knihoven.

Pokud spouštíte mnoho úkolů, neaktivní úkoly budou vyměněny na disk, což u vašich aktivních úkolů zlepší využití paměti. Úpravy videa a další aplikace náročné na paměť často doporučují velikost paměti a místa na disku. Pokud máte starší počítač, který nemůže mít upgrade paměti, může být pro vás dobrým dočasným řešením zpřístupnění více swapů (viz [6], jak se o tom dozvědět více).

K výměně může dojít na samostatném oddílu nebo na odkládacím souboru. Oddíl je rychlejší a oblíbený mnoha databázovými aplikacemi. Souborový přístup je flexibilnější (viz balíček dphys-swapfile v Debian GNU / Linux [7]). Mít více než jedno fyzické zařízení pro výměnu umožňuje linuxovému jádru vybrat zařízení, které je nejrychleji dostupné (nižší latence).

vm.swappiness

Výchozí hodnota vm.swappiness je 60 a představuje procento volné paměti před aktivací swapu. Čím nižší hodnota, tím méně swapování a více stránek paměti je uloženo ve fyzické paměti.

Hodnota 60 je kompromis, který funguje dobře pro moderní stolní systémy. Pro serverový systém je místo toho doporučená menší hodnota. Jak zdůrazňuje příručka Red Hat Performance Tuning [8], u databázových úloh se doporučuje menší hodnota swappiness. Například pro databáze Oracle doporučuje Red Hat hodnotu swappiness 10. Naproti tomu pro databáze MariaDB se doporučuje nastavit swappiness na hodnotu 1 [9].

Změna hodnoty přímo ovlivňuje výkon systému Linux. Jsou definovány tyto hodnoty:

* 0: swap je deaktivován
* 1: minimální množství prohození bez úplného deaktivace
* 10: doporučená hodnota pro zlepšení výkonu, pokud v systému existuje dostatek paměti
* 100: agresivní výměna

Jak je uvedeno výše, příkaz cat pomáhá číst hodnotu. Příkaz sysctl vám dává stejný výsledek:

# sysctl vm.swappiness
vm.swappiness = 60
#

Pamatujte, že příkaz sysctl je k dispozici pouze administrativnímu uživateli. Chcete-li dočasně nastavit hodnotu, nastavte hodnotu v systému souborů / proc následujícím způsobem:

# echo 10> / proc / sys / vm / swappiness

Alternativně můžete použít příkaz sysctl takto:

# sysctl -w vm.swappiness = 10

Chcete-li trvale nastavit hodnotu, otevřete soubor / etc / sysctl.conf jako administrativní uživatel a přidejte následující řádek:

vm.swappiness = 10

Závěr

Stále více uživatelů linuxu používá virtuální stroje. Každý z nich má kromě hypervisoru, který ve skutečnosti řídí hardware, také vlastní jádro. Virtuální stroje mají pro ně vytvořeny virtuální disky, takže změna nastavení uvnitř virtuálního stroje bude mít neurčité výsledky. Nejprve experimentujte se změnou hodnot jádra hypervisoru, protože ve skutečnosti řídí hardware ve vašem počítači.

U starších počítačů, které již nelze upgradovat (již mají maximální podporovanou paměť), můžete zvážit umístění malého disku SSD do zařízení a použít jej jako další odkládací zařízení. To se zjevně stane spotřebním materiálem, protože paměťové buňky selhávají při spoustě zápisů, ale může prodloužit životnost stroje na rok nebo více za velmi nízké náklady. Nižší latence a rychlé čtení poskytnou mnohem lepší výkon než výměna za běžný disk, což poskytne mezilehlé výsledky RAM. To by vám mělo umožnit použít o něco nižší vm.hodnoty swappiness pro optimální výkon. Budete muset experimentovat. Zařízení SSD se rychle mění.

Pokud máte více než jedno odkládací zařízení, zvažte vytvoření zařízení RAID pro prokládání dat mezi dostupnými zařízeními.

V swappiness můžete provádět změny bez restartování počítače, což je hlavní výhoda oproti jiným operačním systémům.

Zkuste zahrnout pouze služby, které pro své podnikání potřebujete. To sníží požadavky na paměť, zlepší výkon a udrží vše jednodušší.

Závěrečná poznámka: Do svých odkládacích zařízení přidáváte zatížení. Budete chtít sledovat jejich teploty. Přehřátý systém sníží frekvenci procesoru a zpomalí.

Poděkování

Autor by rád poděkoval Geroldovi Rupprechtovi a Zolece Hatitongwe za jejich kritické poznámky a komentáře při přípravě tohoto článku.

Odkazy a reference

* [1] Výukový program pro jádro Linuxu pro začátečníky, https: // linuxhint.com / linux-kernel-tutorial-začátečníci /

* [2] Derek Molloy: Writing a Linux Kernel Module - Part 1: Introduction, http: // derekmolloy.tj / úvod-úvod-zápis-a-linux-jádra-modulu-1 /

* [3] Derek Molloy: Writing a Linux Kernel Module - Part 2: A Character Device, http: // derekmolloy.tj. / write-a-linux-kernel-module-part-2-a-character-device /

* [4] Derek Molloy: Writing a Linux Kernel Module - Part 3: Buttons and LEDs, http: // derekmolloy.tj. / kernel-gpio-programming-buttons-and-leds /

* [5] Frank Hofmann: Příkazy ke správě paměti Linux, https: // linuxhint.com / commands-to-manage-linux-memory /

* [6] Frank Hofmann: Linux Kernel Memory Management: Swap Space, https: // linuxhint.com / linux-memory-management-swap-space /

* [7] balíček dphys-swapfile pro balíčky Debian GNU / Linux, https: //.debian.org / stretch / dphys-swapfile

* [8] Red Hat Performance Tuning Guide, https: // přístup.červená čepice.com / dokumentace / en-us / red_hat_enterprise_linux / 6 / html / performance_tuning_guide / s-memory-tunables

* [9] Konfigurace MariaDB, https: // mariadb.com / kb / en / library / configuring-swappiness /

Hry SuperTuxKart pro Linux
SuperTuxKart pro Linux
SuperTuxKart je skvělý titul navržený tak, aby vám ve vašem systému Linux přinesl zážitek Mario Kart zdarma. Je to docela náročné a zábavné hrát, je n...
Hry Výukový program Battle for Wesnoth
Výukový program Battle for Wesnoth
The Battle for Wesnoth je jednou z nejpopulárnějších strategických her s otevřeným zdrojovým kódem, které si v tuto chvíli můžete zahrát. Tato hra se ...
Hry 0 A.D. Tutorial
0 A.D. Tutorial
Z mnoha strategických her venku je 0 A.D. dokáže vyniknout jako komplexní titul a velmi hluboká, taktická hra, přestože je otevřeným zdrojem. Vývoj hr...