GNU/Linux >> Znalost Linux >  >> Linux

Linux OOM disk I/O. Také:swap, k čemu je to dobré?

Skutečná otázka je, proč běžíte bez výměny? Zvláště pokud vidíte (vážné) problémy s výkonem související s nedostatkem paměti RAM? Víte, že to, že nemáte swap, může ve skutečnosti zpomalit váš systém, že?

Zřejmým řešením je přidat nějaký odkládací prostor a nedělat si z toho systém. Vzhledem k tomu, jak levné je místo na disku, mě nenapadají žádné běžné situace, kdy byste měli kdy vybudovat systém bez swapu.

Pokud jde o odpověď na vaši otázku, nepamatuji si všechny nízkoúrovňové podrobnosti o tom, proč je swap důležitý i na systémech, kde se nechystáte vyčerpat paměť, ale v mailing listu Linux Kernel se objevily argumenty, zda je rozumné provozovat systémy bez swapu (a nebylo mnoho přesvědčivých odpovědí). Obecná shoda je typicky vždy vyměnit a podle potřeby upravte swapiness.

Také si myslím, že špatně chápete některá důležitá upozornění týkající se linuxového OOM zabijáka. Za prvé, spoléhat se na to, že zvládne vaše problémy s nedostatkem paměti, je velmi špatný nápad (tm). Může být velmi nevybíravé v tom, co zabíjí, a je zcela možné, že vám zůstane nestabilní nebo dokonce nepoužitelný systém. Ano, pokouší se zabít nedávné procesy, které spotřebovávají spoustu paměti (menší pojistka při pokusu o zachycení procesu, který utekl), ale neexistují žádné záruky. Viděl jsem, jak zabil ssh, zabil Xen procesy (na Xen virtuálním hostitelském serveru, což způsobilo pád VM) a v jednom případě to zabilo NFS.

Pokud jde o IO. . . Nevím jistě, co by to způsobovalo. Možná došlo k zabití procesu souvisejícího se souborovým systémem nebo diskem? Možná má proces vestavěnou nějakou funkci „z mezipaměti na disk“, když nemůže alokovat dostatek paměti?

Další poznámka, pokud se jedná o plochu, je pro režim Suspend to Disk vyžadován swap. Pokud se jedná o server, spoléhat se na OOM je nikdy dobrý nápad, protože to ohrožuje stabilitu pro žádný dobrý důvod.

[1] Vestavěné systémy jsou asi jedinou zřejmou výjimkou a nejsou nijak zvlášť běžné (a pokud máte co do činění s vestavěnými systémy, budete si již vědomi požadavků).


Myslím, že AndreasM to trefil do hlavy (důvod, proč je disk úplně v háji.) Spustitelné soubory jsou stránkovány na vyžádání -- takže v normálním provozu budete mít téměř všechny své spustitelné soubory a knihovny umístěny v dobré staré fyzické paměti RAM. Ale když RAM dochází, ale ne dostatečně nízko na to, aby bylo možné spustit zabiják nedostatku paměti, tyto stránky jsou z RAM vyřazeny. Dostanete se tedy do situace, kdy jsou stránky vyřazeny – zpočátku žádný problém, protože jsou vyřazeny nejméně – naposledy použité jako první a vyřadí stránky, které stejně nepoužíváte. Ale pak to vykopne ty, kterými jste pomocí, jen abyste je museli o chvíli později převrátit zpět. Thrashové město.

V zásadě, pokud by něco využívalo jen o něco více RAM, pravděpodobně by vás zasáhl OOM zabiják, ale ještě jste tam nebyli. Jak někteří řekli, OOM zabiják je nevybíravý, je to opravdu spíš poslední možnost, jak se vyhnout panice jádra, než něco, co byste měli zvážit použití v normálním provozu. Pokud máte nějaké vlastní nastavení, zvážil bych sepsání nějakého démona, který by monitoroval volnou paměť, a zabil pomocí vámi zvolené politiky, když se blíží plné.


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

  2. Linux – Určení konkrétního souboru odpovědného za vysoké I/O?

  3. Linux – reference, ale pro Linux?

  1. Co je Unix/Linux ekvivalentem Registered I/O?

  2. Vyhodnocení čekání CPU I/O na Linuxu

  3. Linux - Jak zjistím, co čeká na IO disku

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

  2. Linux – Jak monitorovat diskový vstup/výstup v konkrétním adresáři?

  3. Jaké jsou dobré knihy o Linuxu/Unixu pro pokročilé uživatele?