GNU/Linux >> Znalost Linux >  >> Linux

Potřebuji swapovací prostor, když mám více než dostatečné množství RAM?

Z toho, co jsem pochopil, účel swapu oddíl v Linuxu je uvolnit některé „ne tak často používané“ informace z RAM a přesunout je do konkrétního oddílu na vašem pevném disku (za cenu zpomalení čtení nebo zápisu), což v podstatě umožňuje aktivním aplikacím více „vysokorychlostní paměť“.

To je skvělé, když používáte počítač s malým množstvím paměti RAM a nechcete se dostat do problémů, pokud vám dojde. Pokud však váš systém má 16 GB nebo 32 GB RAM a za předpokladu, že nepoužíváte databázi MySQL pro StackExchange nebo neupravujete film v plné délce 1080p v Linuxu, měl by se použít odkládací oddíl?

Přijatá odpověď:

Ano.

Rozhodně byste měli vždy mít povolenou swap, s výjimkou případů, kdy existuje velmi přesvědčivý, zakazující důvod (například žádný disk nebo pouze síťový disk). Měli byste mít swap v řádu často doporučovaných směšných velikostí (například dvojnásobné množství paměti RAM)? No, ne .

Důvodem je, že swap není užitečný pouze tehdy, když vaše aplikace spotřebovávají více paměti, než je fyzická RAM (ve skutečnosti v takovém případě swap není příliš užitečný protože to vážně ovlivňuje výkon). Hlavní motivací pro swap v dnešní době není magicky proměnit 16GiB RAM na 32GiB, ale efektivněji využít nainstalovanou dostupnou RAM.

Na moderním počítači nezůstane RAM nevyužitá. Nevyužitá RAM je něco, co jste si stejně dobře nemohli koupit a místo toho ušetřit peníze. Proto cokoli, co načtete, nebo cokoli, co je jinak mapováno v paměti, cokoli, co by možná mohlo být znovu použit kýmkoli kdykoli později (omezeno bezpečnostními omezeními) se ukládá do mezipaměti. Velmi brzy po nabootování počítače bude veškerá fyzická paměť RAM použita k něčemu .

Kdykoli požádáte operační systém o novou stránku paměti, musí správce paměti učinit kvalifikované rozhodnutí:

  1. Vyčistit stránku z mezipaměti
  2. Odstranění stránky z mapování (ve většině systémů stejné jako číslo 1)
  3. Přesuňte stránku, která nebyla dlouhou dobu navštěvována – nejlépe nikdy – na výměnu (ve skutečnosti se to může stát i proaktivně, ne nutně na poslední chvíli)
  4. Zabijte svůj proces nebo ukončete náhodný proces (OOM)
  5. Panika jádra

Možnosti #4 a #5 jsou velmi nežádoucí a stane se to pouze v případě, že operační systém nebude mít absolutně žádnou jinou možnost. Možnosti #1 a #2 znamenají, že vyhodíte něco, co budete možná brzy znovu potřebovat. To negativně ovlivňuje výkon.

Možnost #3 znamená, že přesunete něco, co (pravděpodobně) v brzké době nebudete potřebovat, do pomalého úložiště. To je v pořádku, protože teď něco, co potřebujete může používat rychlou RAM.

Odstraněním možnosti #3 jste efektivně omezili operační systém na provádění buď #1 nebo #2. Opětovné načtení stránky z disku je stejné jako opětovné načtení ze swapu, až na to, že nutnost opětovného načtení ze swapu je obvykle méně pravděpodobná (kvůli správnému rozhodování o stránkování).

Jinými slovy, deaktivací swapu nezískáte nic, ale omezíte počet užitečných možností operačního systému při řešení požadavku na paměť. Což nemusí být , ale velmi pravděpodobně může být nevýhodou (a nikdy nebude výhodou).

Související:Elektrika – zapojil jsem do zásuvky prostorový ohřívač, nyní zásuvka nefunguje. Stále zapnuto?

[UPRAVIT]

Pečlivý čtenář mmap manuálovou stránku, konkrétně popis MAP_NORESERVE , si všimne dalšího dobrého důvodu, proč je swap poněkud nutností i na systému s „dostatkem“ fyzické paměti:

„Pokud není rezervován odkládací prostor, může při zápisu získat SIGSEGV, pokud není k dispozici žádná fyzická paměť.“

— Počkejte chvíli, co to znamená?

Pokud namapujete soubor, můžete přistupovat k obsahu souboru přímo, jako by byl soubor nějakým kouzlem v adresovém prostoru vašeho programu. Pro přístup pouze pro čtení potřebuje operační systém v zásadě ne více než jedna stránka fyzické paměti, kterou může znovu naplnit různými daty pokaždé, když přistoupíte na jinou virtuální stránku (z důvodů efektivity se to samozřejmě nedělá, ale v zásadě byste mohli přistupovat k datům v hodnotě terabajtů s jediným stránka fyzické paměti). Co když také zapisovat do mapování souboru? V tomto případě musí mít operační systém připravenou fyzickou stránku – nebo odkládací prostor – pro každou zapsanou stránku. Neexistuje žádný jiný způsob, jak uchovávat data, dokud proces zpětného zápisu nečistých stránek dokončí svou práci (což může trvat několik sekund). Z tohoto důvodu si operační systém vyhrazuje (ale nemusí se nutně nikdy zavázat) odkládací prostor, takže v případě, že zapisujete do mapování, zatímco se stane, že žádná fyzická stránka není nevyužitá (to je docela možný a normální stav), znovu zaručeno že to bude stále fungovat.

Co když není žádná swap? Znamená to, že nelze rezervovat žádný swap (duh!), a to znamená, že jakmile nezbudou žádné volné fyzické stránky a vy na stránku píšete, čeká vás příjemné překvapení v podobě přijetí chyba segmentace a pravděpodobně bude zabit.

[/EDIT]

Tradiční doporučení udělat swap dvojnásobnou velikost RAM je však nesmyslné. Přestože je místo na disku levné, nemá smysl přidělovat tolik swapu. Plýtvat něčím, co je levné, je stále plýtvání a to naprosto nechcete neustále vyměňovat a vyměňovat pracovní sady o velikosti několika stovek megabajtů (nebo větších).

Neexistuje žádné „správné“ swap velikost (existuje tolik „správných“ velikostí, kolik je uživatelů a názorů). Obvykle přiděluji pevných 512MiB bez ohledu na velikost RAM, což mi funguje velmi dobře. Důvodem je, že 512 MiB je něco, co můžete vždy dovolit v dnešní době i na malém disku. Na druhou stranu přidání několika gigabajtů swapu není o nic lepší. Nebudete je používat, s výjimkou případů, kdy se něco vážně pokazí.

I na SSD je swap řádově pomalejší než RAM (kvůli šířce pásma sběrnice a latenci), a přestože je velmi přijatelné přesunout k výměně něco, co pravděpodobně již nebude potřeba (tj. s největší pravděpodobností to nebudete znovu vyměňovat, takže váš fond dostupných stránek se efektivně zdarma rozšíří), pokud to opravdu potřebujete značné množství swapu (to znamená, že máte aplikaci, která používá např. 50GiB datovou sadu), jste do značné míry ztraceni.

Související:Potřebuje prolézaný prostor ventilaci?

Jakmile váš počítač začne vyměňovat a vyměňovat stránky v hodnotě gigabajtů, vše začne procházet. Takže pro většinu lidí (včetně mě) to není možnost, a mít tolik swapů proto nedává smysl.


Linux
  1. Výměna místa na cloudových serverech

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

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

  1. Jak znovu načíst všechny spuštěné aplikace z odkládacího prostoru do RAM?

  2. Jak grepovat řádky, které mají více než určitý počet speciálních znaků

  3. Jak zkompiluji něco pro Linux, když nemám dostatek místa pro instalaci GCC?

  1. Úvod do odkládacího prostoru na systémech Linux

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

  3. Je Xubuntu více zdrojů hladovější než Windows XP?