GNU/Linux >> Znalost Linux >  >> Linux

Je swap anachronismus?

Už nějakou dobu používám unix a posledních pár let mám pocit, že swap je anachronismus, ale zajímalo by mě, co si o tom myslí ostatní.

Můj argument je zhruba tento (za předpokladu, že neexistuje žádný globální ulimit nebo kroucení nastavení OOM):

There is little value in swap because if you need to swap out to disk, 
odds are it's going to be a vicious cycle where an app will continue 
to eat not only real memory, but swap as well until it gets OOM 
reaped (_if_ it gets OOM reaped). 

If you have swap enabled, it will only prolong this death march to 
the detriment of other processes - and in the worst case where the
process is not OOM reaped in a timely manner, grind the system to
a halt.

Without swap, it will probably get OOM reaped sooner (if at all)

U každé služby, která je vyladěna na výkon, si myslím, že pochopení horních limitů využití zdrojů by bylo klíčem k jejímu vyladění v první řadě, v takovém případě víte, kolik potřebujete.

Nedokážu si představit mnoho situací (některé, ale ne mnoho), kdy byste pozastavili běžící proces a ten by se mohl vyměnit, aby uvolnil místo pro jiné věci, ale přesto byste ztratili své zásuvky, pokud byste to udělali, takže vynucení core-dump přes gcc nebo zkopírování paměti ručně by bylo funkčně ekvivalentní.

Rozhodně bych nechtěl swap na vestavěném systému (i když může mít menší dostupnou ram), pokud vám dojde ram, raději bych nechal můj proces zemřít, než trhat flash paměť s milionem zápisů na sektor projeďte přes víkend tím, že vyrovnáte opotřebení sektorů až po nub.

Nějaký unix-vous tam venku má nějaké přesvědčivé důvody, proč se dál swapovat?

AKTUALIZACE odpovědí &&analýza:

  • POTVRZENO? – fork() vyžaduje stejné množství paměti pro podřízený proces jako rodič

    Modern fork() je copy-on-write pro děti na POSIX (obecně), ale konkrétně na Linuxu a FreeBSD a předpokládám OSX extrapolací. Považuji to za součást anachronického zavazadla, které s sebou swap nese.

    Zajímavé je, že tento článek Solaris tvrdí, že i když Solaris používá Copy-on-Write s fork(), měli byste mít alespoň 2x (!) velikost nadřazeného procesu ve volné virtuální paměti, aby se fork() uprostřed nezbláznila. Zatímco prvek Solaris poněkud boří argument, že swap je anachronismus – myslím, že dost operačních systémů správně implementuje CoW takovým způsobem, že je důležitější mýtus vyvrátit, než jej označit za další ospravedlnění pro swap. Od té doby. Přiznejme si to. V tuto chvíli jsou lidé, kteří skutečně používají Solaris, pravděpodobně jen lidé z Oracle. Bez urážky Solaris!

  • POTVRZENO – Soubory tmpfs/ramfs mohou jít vyměnit, když se tmpfs/ramfs zaplní

    Nepoužívejte neomezené tmpfs/ramfs! Vždy explicitně definujte množství ram, které má tmpfs/ramfs používat.

  • PLAUSEBLE – Udělejte si malou výměnu „pro každý případ“

    Jeden z mých starých šéfů měl skvělé přísloví:‚Nevíš, co nevíš‘ – v podstatě se nemůžete rozhodovat na základě informací, které ještě nemáte. To je však pro mě věrohodný argument pro swap – mám podezření, že typy věcí, které byste udělali, abyste zjistili, zda se vaše aplikace odkládá nebo ne, by byly těžší než kontrola, zda je malloc() úspěšná, nebo zachycení výjimky z neúspěšné nové().

    To může být užitečné v případech, kdy provozujete desktop a děje se spousta náhodných věcí, ale i tak – když se něco zvrtne, raději bych to sklidil OOM, než se ponořit do swap-pekla. To jsem prostě já.

  • BUSED! – Na Solaris , swap je důležité z několika důvodů

    tmpfs – stavy Množství volného místa dostupného pro tmpfs závisí na množství nepřiděleného odkládacího prostoru v systému. Velikost souborového systému tmpfs roste, aby se přizpůsobila souborům do něj zapsaným, ale pro náročné uživatele tmpfs existují určité kompromisy. Tmpfs sdílí prostředky s datovými a zásobníkovými segmenty spouštěných programů. Spouštění velmi velkých programů může být ovlivněno, pokud se systémy souborů tmpfs blíží své maximální povolené velikosti. Tmpfs může zdarma alokovat všechny kromě 4 MB odkládacího prostoru systému.

    Fakta a mýty Solaris o swapu – stavy Virtuální paměť se dnes skládá ze součtu fyzické paměti RAM a odkládacího prostoru na disku. Solaris NEVYŽADUJE konfiguraci žádného odkládacího prostoru. Pokud zvolíte tuto možnost, po zaplnění paměti RAM nebudete moci spouštět nové procesy. .

    Nejsem si jistý, jestli to znamená, že maximální virtuální mapa, kterou můžete vytvořit, je ram+swap , nebo pokud stále můžete udělat něco jako mmap() se souborem větším než ram a spoléhat se na línou inicializaci mmap() jiné operační systémy POSIXy.

  • BUSED! Zdá se, že oblíbené nástroje pro hibernaci Linuxu spoléhají na swap

    Ve výchozím nastavení TuxOnIce vypadá, že spoléhá na swap pro hibernaci – ačkoli existují i ​​jiné backendy. Pokud však neprovozujete box, který potřebuje hibernovat, stále bych si stál za tvrzením, že ‚swap je na linuxu anakronistický‘

Související:Zasekne se dokončování karty?

Přijatá odpověď:

Nepleťte si (swap) (jako oblast disku) a (to) swap (jako metodu pro přesun paměťových stránek z RAM na disk a recipročně).

Přílišnému odkládání je třeba se vyhnout z důvodu výkonu, ale mít swapovací oblast nemusí nutně znamenat problém.

Na systémech, jako je Linux, které přetěžují paměť, tj. umožňují procesům alokovat více paměti, než je k dispozici, spustí nedostatek paměti RAM s nedostatkem swapu, aby situaci zvládl, spustí zabijáka OOM. Musíte důvěřovat algoritmu, který se používá k výběru „správného“ procesu, který chcete zabít, a přijmout jeden nebo více vašich procesů, které mají být zabity, aniž byste dostali šanci se řádně vypnout. Zde je slavná analogie, která vysvětluje, proč OOM zabiják nemusí být vůbec dobrý nápad.

Na systémech, jako je Solaris, které nepřetěžují paměť, tj. zajišťují, aby byla rezervace paměti vždy podporována virtuální pamětí, ať už v RAM nebo na disku, je naprosto nezbytné mít dostatečnou odkládací plochu, jinak bude potenciálně významná část RAM zbytečný.

Související:Linux – Vyměnit velikost oddílu za 4 GB RAM?
Linux
  1. Jak spravovat swapovací oddíl v Linuxu

  2. Výměna místa na cloudových serverech

  3. Jak přidat odkládací prostor na Ubuntu 22.04

  1. Jak přidat odkládací prostor v linuxu

  2. Jak povolit linuxový odkládací oddíl?

  3. Je šifrování doma dostatečné?

  1. Jak vytvořit odkládací soubor v Linuxu

  2. Je zswap způsobilý ke snížení IO swapu?

  3. Dynamicky rostoucí odkládací soubor v Debianu