GNU/Linux >> Znalost Linux >  >> Linux

Systém zamrzne, když mu dojde paměť

OOM-killer (out of memory killer) je možné vyvolat přímo kombinací klávesnice:

SysRq-F

Klávesa SysRq je na klávesnicích obvykle kombinována s klávesou PrtSc.

OOM-killer zabije některé procesy a systém začne znovu reagovat.

Thx Raman za radu ohledně této funkce v komentářích výše.

PS:Tohle mi hodně pomohlo. Souhlasím s názorem, že toto je nejužitečnější rada o tomto problému, pokud je způsoben Chromem nebo jiným softwarem chtivým paměti. Ale musíte mít na paměti, že OOM-killer by mohl zabít opravdu důležitý proces, používejte ho opatrně.


Přirozeným stavem věcí je, že data aplikace jsou v paměti RAM a soubory jsou na disku.
Ideální stav věcí z hlediska výkonu je, že často používaná data jsou v paměti RAM a data, která momentálně nejsou potřeba, jsou na disku.
Na normálním systému dělá jádro dvě věci, aby se pokusilo dosáhnout tohoto ideálu:

  • Aplikační data, která se nějakou dobu nepoužívala, lze přesunout na disk:jedná se o swap.
  • Data ze souborů, která byla nedávno použita, jsou uchovávána v paměti RAM:jedná se o diskovou mezipaměť (pro data načtená z disku) a diskové vyrovnávací paměti (pro data, která mají být zapsána na disk).

Na typickém systému je značná část paměti RAM věnována mezipaměti a vyrovnávacím pamětem (50 % je typický údaj). Vzhledem k tomu, že RAM je omezený zdroj, může to vyžadovat přemístění některých aplikačních dat k výměně (swap je nutný pouze v případě, že existuje lepší způsob využití paměti RAM).

Na systému bez swapu nastává okamžik, kdy data aplikace využívají téměř veškerou paměť RAM, takže pro mezipaměť nezbývá téměř žádné místo. Pak bude systém pravděpodobně pomalý. Jádro nezačne zabíjet aplikace, dokud to opravdu nebude nutné. Dokud aplikace zaplní pouze 99 % dostupné paměti, systém pokračuje v chodu, ale velmi pomalu, protože data souborů se musí neustále načítat a znovu načítat z disku. Se stejnými spuštěnými aplikacemi by byl systém v tomto bodě rychlejší s odkládacím zařízením.

Další informace o tomto problému naleznete v této diskusi lkml a v tomto příspěvku na blogu.

Neznám přímý způsob, jak říci jádru, aby rezervovalo minimální množství RAM pro diskovou mezipaměť. Můžete nastavit malou část paměti RAM jako odkládací prostor, možná dokonce komprimovanou. V této oblasti existují zprávy o úspěchu, i když ve vašem konkrétním případě neručím.


Nedávno jsem našel řešení svého problému.

Protože linuxový OOM killer není schopen dělat svou práci správně, začal jsem používat OOM Killer v uživatelském prostoru:earlyoom. Je to napsané v C, docela konfigurovatelné a funguje to jako kouzlo.

Slyšel jsem také o některých alternativách, jako je OOMD společnosti Facebook, vyvinuté pro provoz na jejich serverech, ale tuto jsem nezkoušel


Linux
  1. Jak zabránit tomu, aby systém přestal reagovat při mlácení (mimo Ram)?

  2. Zkontrolujte zatížení systému v systému Linux

  3. Časté dotazy k systémovému disku a datovému disku

  1. Jak mohu otestovat paměť RAM na poškození dat v systému založeném na ARM?

  2. Chrome sní všechnu RAM a zamrzne systém

  3. Bude můj systém fsck, když restartuji?

  1. Systémové statistiky:Statistiky Linuxu, které je třeba znát

  2. Měření využití Ram programu?

  3. Linux – systém zamrzne, když mu dojde paměť?