GNU/Linux >> Znalost Linux >  >> Linux

Analýza případů pro a proti nastavení odkládacího prostoru na cloudových instancích

Pokud chcete začít hádku s uživatelem Linuxu, zeptejte se na swap Paměť. Někteří jej chválí jako polštář nebo jako záchrannou síť, zatímco jiní jej znevažují jako berličku a ničitele výkonu systému. Odkládací paměť se zrodila v 60. letech 20. století a v průběhu let se na Linuxu vyvinula tak, aby sloužila dvěma základním funkcím:

  • Nouzová paměť, když systém spotřebovává veškerou svou RAM a stále potřebuje více
  • Parkoviště pro zřídka používané stránky paměti, které zabírají cennou systémovou RAM

Mnoho distribucí Linuxu, včetně Red Hatu, doporučuje odkládací paměť pro všechny systémy. Pokud se však podíváte na většinu cloudových instancí z různých distribucí, zjistíte, že odkládací paměť chybí.

[ Také by se vám mohlo líbit: Řešení problémů s Linuxem 101:Výkon systému ]

Přehled swapu

Swap existuje na většině systémů jako oddíl na disku. Po rozdělení naformátují správci oddíl pomocí mkswap , povolte jej pomocí swapon a jádro okamžitě vidí dostupnou odkládací paměť. Systémy bez dostupného oddílu mohou používat odkládací soubor, což je pouze soubor na existujícím souborovém systému, který je naformátován pomocí mkswap a povoleno.

Obě metody fungují dobře, ale umístění swapu na oddíl vede k lepšímu výkonu, protože přeskočíte režii odkládacího souboru na existujícím oddílu.

Když je systémová RAM vzácná, Linux může ukládat stránky paměti do swapu, aby se zabránilo zabíjení procesů a zhroucení systému. Disky jsou mnohem pomalejší než systémová RAM, což snižuje výkon systému, dokud se systémová RAM neuvolní. Pokud bude využití paměti i nadále šplhat do bodu, kdy se systémová RAM a swap zcela vyčerpají, objeví se killer Out of Memory (OOM) a začne zabíjet, dokud nebude k dispozici dostatek RAM.

Dlouhodobá rada ohledně velikosti swapu je dvojnásobek velikosti paměti RAM vašeho systému. Například přidělte 2 GB swapu pro systémy s 1 GB systémové RAM. Ačkoli tento poměr funguje dobře pro menší systémy, neškáluje se pro systémy se stovkami gigabajtů systémové RAM.

Případ pro swap v cloudu

Vzestup mikroslužeb (malé, propojené služby, které tvoří velkou aplikaci) vedl společnosti k nasazení většího počtu menších instancí. Menší instance přicházejí s menší systémovou RAM, což zvyšuje riziko, že se objeví obávaný zabiják OOM a zabije procesy, dokud systém nebude mít dostatek volné paměti.

Přidání swapu do těchto systémů pomáhá dvěma způsoby:

  • Zaprvé, procesy mohou během období vysokého zatížení nakrátko vybuchnout ze systémové RAM do swapu. Správci se o těchto událostech dozvědí ze svých monitorovacích systémů a mají čas prozkoumat důvod prasknutí, když k němu v systému dojde. V případě úniku paměti mohou vývojáři zkontrolovat proces, aby pochopili, co se pokazilo, dokud je stále naživu. To může být také signálem, že administrátoři potřebují větší typy instancí pro svou aplikaci, jak roste.
  • Zadruhé, linuxové jádro dohlíží na málo používané stránky paměti a posílá je k výměně, aby se zachovala drahocenná systémová RAM. sysctl nastavení vm.swappiness řídí touhu jádra poslat stránky paměti k odložení. To by mohlo cloudové instanci pomoci tím, že ponechá nejaktivnější stránky v systémové paměti RAM a zároveň odsune zřídka používané stránky, aby si vyměnily paměť.

Případ proti swapu v cloudu

Když se mluví o cloudových instancích, často se objevuje analogie „domácí mazlíčci vs dobytek“ a administrátoři zakazují swap, protože mohou automaticky nahradit chybně se chovající instanci novou. V průběhu času jejich monitorovací metriky ukazují nárůst instancí vyžadujících výměnu kvůli tomu, že OOM zabiják převedl jejich aplikaci do režimu offline. Řešením by mohly být větší instance nebo další vyšetřování úniků paměti při zátěži. Systemd pokud to bude možné, tyto procesy také rychle restartuje.

Výběr umístění odkládací paměti v cloudových instancích vyžaduje více přemýšlení a plánování. Na fyzických serverech je swap na lokálně připojeném disku Non-Volatile Memory Express (NVMe) dostatečně rychlý, ale co cloudová instance s připojeným externím úložištěm, jako je Elastic Block Storage (EBS) AWS? Výkon EBS se liší v závislosti na tom, jaký typ EBS si vyberete, a na vašich sousedech v systému. Swap na vzdáleném úložném systému může vést ke špatnému výkonu instance, když systém přeteče RAM. Správci se mohou rozhodnout vynechat swap a nahradit tyto instance, když přetečou svou RAM, místo aby se potýkali se špatně fungujícími požadavky na obsluhu serveru.

A konečně, mnoho cloudových instancí se stává součástí clusterů Kubernetes a OpenShift a mají problém při práci s odkládací pamětí. Na GitHubu existuje dlouhotrvající problém se správným zacházením s odkládací pamětí, protože ruší účtování paměti pro kontejnery. Existují zástupná řešení, ale odkládací paměť se na těchto systémech obvykle přeskakuje.

Nasazení cloudových instancí pomocí swapu

Pokud se rozhodnete, že zřízení odkládací paměti prospěje vašim aplikacím, cloud-init vám umožní zřídit odkládací paměť při prvním spuštění pomocí mounts modul. Stačí přidat několik řádků ke stávajícím uživatelským datům konfigurace cloudu:

swap:
    filename: /swapfile
    size: auto
    maxsize: 4294967296

Tato konfigurace říká cloud-init, aby vytvořil odkládací soubor na /swapfile s automatickou velikostí rovnou nebo menší než 4 GB. Vzorec pro automatickou změnu velikosti je ve zdrojovém kódu cloud-init:

formulas = [
    # < 1G: swap = double memory
    (1 * GB, lambda x: x * 2),
    # < 2G: swap = 2G
    (2 * GB, lambda x: 2 * GB),
    # < 4G: swap = memory
    (4 * GB, lambda x: x),
    # < 16G: 4G
    (16 * GB, lambda x: 4 * GB),
    # < 64G: 1/2 M up to max
    (64 * GB, lambda x: x / 2),
]

Doporučená velikost výměny od Red Hat se mírně liší:

  • 2 GB nebo méně systémové paměti RAM :2x RAM
  • Přes 2 GB až 8 GB : 1x RAM
  • Přes 8 GB až 64 GB : Minimálně 4 GB
  • Přes 64 GB : Minimálně 4 GB

Odkládací paměť můžete zadat ručně (v bajtech) pomocí size: parametr
v cloud-config:

swap:
    filename: /swapfile
    size: 2147483648  # 2 GiB

Provisioning swap na existující cloudové instanci

Pro existující instance je odkládací soubor často nejsnazší metodou pro povolení odkládací paměti. V tomto příkladu umístěte 2GB odkládací soubor do /swapfile :


# BTRFS only #################################################################
# We must disable copy-on-write updates for swap files on btrfs file systems.
# The 'swapon' step fails if you skip these steps.
truncate -s 0 /swapfile
chattr +C /swapfile
# BTRFS only #################################################################

# A 2 GiB swap file.
dd if=/dev/zero of=/swapfile bs=1MiB count=2048

# Set the correct permissions on the swap file.
chmod 0600 /swapfile

# Format the swapfile.
mkswap /swapfile

# Enable the swapfile.
swapon /swapfile

# Add it to /etc/fstab to enable it after reboot.
echo "/swapfile none swap defaults 0 0" >> /etc/fstab

Zkontrolujte, zda je vaše odkládací paměť připravena:

$ cat /proc/swaps
Filename        Type    Size      Used    Priority
/swapfile       file    2097148   0       -2

[ Bezplatný online kurz:Technický přehled Red Hat Enterprise Linux. ] 

Zabalit

Odkládací paměť poskytuje dvě cenné výhody:

  • Bezpečnostní polštář, když se využití systémové paměti RAM zvýší na nebezpečnou úroveň
  • Parkoviště pro zřídka používané stránky paměti, které zabírají cenné místo v systémové paměti RAM 

Tento bezpečnostní polštář přichází s omezením výkonu, protože stránkování paměti na disky je neuvěřitelně pomalé vzhledem k systémové paměti.

Cloudová nasazení zřídka vidí nasazení swapovací paměti, ale swap má stále výhody. Volba nasazení swapu umožňuje vytvořit bezpečnostní polštář, když se aplikace chovají nesprávně, ale může způsobit, že aplikace bude fungovat pomalu, dokud se nevyřeší problémy se spotřebou paměti. Přeskočení swapu odstraní polštář, ale zajistí, že se neslušná aplikace okamžitě zastaví. Správci cloudu musí mít připravený plán, jak tyto situace zvládnout.

Naštěstí se cloud-init objevuje na velké většině cloudových instancí a umožňuje vytváření odkládacích souborů pouze s několika řádky YAML. Odkládací paměť se také snadno konfiguruje po nasazení pomocí jednoduchých příkazů prostředí nebo skriptů.

Ať už se rozhodnete nasadit odkládací paměť, nebo se bez ní obejít, ujistěte se, že máte plán, když dojde k nejhoršímu. Správně monitorujte systémy a udržujte si holistický pohled na aplikaci, které slouží.


Linux
  1. CloudBerry – Perfektní cloudové zálohování napříč platformami pro jednotlivce a IT profesionály

  2. Monitorování a správa paměti

  3. nastavení sysctl pro vysokou zátěž a zabránění DDoS

  1. Jaká je správná velikost odkládacího prostoru pro moderní systém Linux?

  2. Jak mohu použít swapový prostor pouze v případě nouze?

  3. Ubuntu Linux:Proces swap paměti a využití paměti

  1. Linux – Jak používat swapovací prostor pouze v případě nouze?

  2. Linux – Co je velká a nízká paměť v Linuxu?

  3. Odstraňování problémů s nedostatkem místa na disku pro cloudový server Linux