Rozdíly
Zde můžete vidět rozdíly mezi vybranou verzí a aktuální verzí dané stránky.
Obě strany předchozí revize Předchozí verze Následující verze | Předchozí verze | ||
it:server:pamet-ram-swap [2025/02/14 12:23] – [Instalace a konfigurace `swapspace`] Petr Nosek | it:server:pamet-ram-swap [2025/02/14 12:29] (aktuální) – [Použití `cgroups` k omezení swapování per proces] Petr Nosek | ||
---|---|---|---|
Řádek 259: | Řádek 259: | ||
==== Použití `cgroups` k omezení swapování per proces ==== | ==== Použití `cgroups` k omezení swapování per proces ==== | ||
- | Další možností, jak omezit swapování, | + | Další možností, jak omezit swapování, |
- | Pro zapnutí omezení swapu v cgroups jsem nejprve povolil swapový limit v jádře: | + | === Povolení swapového limitu |
+ | |||
+ | Nejprve je třeba zajistit, že systém umožňuje řízení swapu pomocí `cgroups`. V Ubuntu 20.04+ a novějších je podpora obvykle aktivní, ale pro jistotu ji lze zapnout úpravou GRUBu: | ||
<code bash> | <code bash> | ||
- | sudo grubby --update-kernel=ALL --args=" | + | echo " |
+ | sudo update-grub | ||
sudo reboot | sudo reboot | ||
</ | </ | ||
- | Pak jsem vytvořil cgroup pro omezení | + | Po restartu ověř, zda je swapový limit aktivní: |
+ | |||
+ | <code bash> | ||
+ | cat / | ||
+ | </ | ||
+ | |||
+ | Pokud se ve výstupu objeví `swapaccount=1`, | ||
+ | |||
+ | === Zakázání | ||
+ | |||
+ | Pokud chceš zcela zakázat | ||
+ | |||
+ | <code bash> | ||
+ | sudo systemctl set-property user-$(id -u).slice MemorySwapMax=0 | ||
+ | </ | ||
+ | |||
+ | Tento příkaz: | ||
+ | - Omezuje swapování pro všechny procesy aktuálního uživatele. | ||
+ | - Po restartu systému se nastavení zachová. | ||
+ | |||
+ | Pokud chceš nastavení aplikovat | ||
+ | |||
+ | <code bash> | ||
+ | sudo systemctl set-property firefox.service MemorySwapMax=0 | ||
+ | </ | ||
+ | |||
+ | === Omezení swapu pro konkrétní procesy === | ||
+ | |||
+ | Pokud chceš nastavit konkrétní limit pro swap u určité aplikace, můžeš použít `cgroups` ručně: | ||
+ | |||
+ | 1️⃣ | ||
<code bash> | <code bash> | ||
sudo mkdir -p / | sudo mkdir -p / | ||
+ | </ | ||
+ | |||
+ | 2️⃣ **Nastav maximální povolený swap na 500 MB**: | ||
+ | |||
+ | <code bash> | ||
echo 500M | sudo tee / | echo 500M | sudo tee / | ||
+ | </ | ||
+ | |||
+ | 3️⃣ **Přidej běžící proces do této cgroup**: | ||
+ | |||
+ | <code bash> | ||
echo $$ | sudo tee / | echo $$ | sudo tee / | ||
</ | </ | ||
- | Tím jsem zajistil, že procesy běžící v této skupině | + | Tímto způsobem se omezení aplikuje na procesy běžící v této skupině. |
- | ---- | + | === Ověření správné funkčnosti === |
+ | |||
+ | Po aplikaci změn můžeš ověřit, zda omezení swapu funguje: | ||
+ | |||
+ | <code bash> | ||
+ | cat / | ||
+ | </ | ||
+ | |||
+ | Pokud se ve výstupu zobrazí správná hodnota (např. **500 MB**), konfigurace funguje. | ||
+ | |||
+ | Pokud chceš zjistit, které procesy v cgroup běží: | ||
+ | |||
+ | <code bash> | ||
+ | cat / | ||
+ | </ | ||
+ | |||
+ | 📌 **Tímto způsobem lze swapování jemně řídit na úrovni uživatelů i jednotlivých aplikací.** | ||
==== Použití `zswap` ==== | ==== Použití `zswap` ==== | ||
- | Alternativou ke klasickému swapování na disk je použití **zswap**, | + | Pokud nechceš dynamické swap soubory, ale raději kompresi dat v RAM, můžeš |
- | Pro aktivaci | + | **Aktivace |
<code bash> | <code bash> | ||
- | sudo grubby --update-kernel=ALL --args=" | + | echo zswap.enabled=1 |
+ | sudo update-grub | ||
sudo reboot | sudo reboot | ||
</ | </ | ||
- | Ověření, že `zswap` | + | Po restartu ověř, zda je `zswap` aktivní: |
<code bash> | <code bash> | ||
Řádek 297: | Řádek 357: | ||
</ | </ | ||
- | Pokud vrátí | + | Výstup by měl být **`Y`**, což znamená, že `zswap` je zapnutý. |
- | + | ||
- | Tímto způsobem jsem úspěšně omezil nadměrné swapování na disk a zlepšil výkon systému. | + | |
+ | 📌 **Tím swapování probíhá primárně v RAM a na disk jde méně dat, což snižuje opotřebení disku a zlepšuje výkon.** | ||