GNU/Linux >> Znalost Linux >  >> Linux

Jak zabít největší proces v nereagujícím systému Linux

Když v prohlížeči otevřu hodně karet, můj systém několik minut nereaguje. Nemohl jsem pohnout kurzorem myši, zastavit proces nebo zavřít žádné otevřené karty. Tehdy mi nezbývalo nic jiného, ​​než systém násilně přenastavit. Samozřejmě používám OneTab a The Great Suspender rozšíření, ale ani ty moc nepomohly. Často mi docházela paměť. Při hledání řešení, jak to opravit, jsem narazil na Early OOM . Pro ty, kdo by se divili, zabije největší proces v nereagujícím systému, když nemá absolutně žádné jiné možnosti. Early OOM kontroluje množství dostupné paměti a volné swapy 10krát za sekundu. Pokud jsou obě pod 10 %, zabije to největší proces.

Proč Early OOM? Proč ne vestavěný zabiják OOM?

Než přejdeme k dalšímu, dovolte mi krátce vysvětlit OOM killer, také známý jako O u O f M zabiják emocí. OOM zabiják je proces, který jádro používá, když má systém kriticky málo paměti. Hlavním úkolem OOM killeru je pokračovat v zabíjení procesů, dokud se neuvolní dostatek paměti pro hladké fungování zbytku procesu, který se jádro pokouší spustit. OOM killer vybere ty nejlepší procesy, které jsou pro systém nejméně důležité a uvolní maximum paměti a zabije je. Můžeme zobrazit oom_score každého procesu v /proc adresář pod pid sekce.

Příklad:

$ cat /proc/10299/oom_score 1

Čím vyšší je hodnota oom_score jakéhokoli procesu, tím vyšší je pravděpodobnost, že bude zabit OOM Killer, když systému dochází paměť.

Vývojář Early OOM tvrdí, že má oproti in-kernel OOM zabijákovi jednu velkou výhodu. Jak jsem uvedl dříve, linuxový oom killer zabije proces s nejvyšším skóre, takže prohlížeč Chrome bude vždy první obětí oom killeru. Aby se tomu zabránilo, používá Early OOM /proc/*/status místo echo f> /proc/sysrq-trigger . Také tvrdí, že ruční spuštění oom killer nemusí v nejnovějším linuxovém jádře vůbec fungovat.

Instalace Early OOM

Early OOM je k dispozici v AUR, takže jej můžete nainstalovat pomocí libovolného pomocného programu AUR v Arch Linuxu a jeho derivátech.

Pomocí Yay :

$ yay -S earlyoom

Povolte a spusťte Early OOM démona:

$ sudo systemctl povolit earlyoom
$ sudo systemctl start earlyoom

V jiných distribucích Linuxu jej zkompilujte a nainstalujte ručně, jak je uvedeno níže.

$ git klon https://github.com/rfjakob/earlyoom.git$ cd earlyoom$ make$ sudo make install

Zabijte největší proces v nereagujícím systému Linux pomocí Early OOM

Spusťte následující příkaz pro spuštění Early OOM:

$ earlyoom

Pokud jste jej zkompilovali ze zdroje, spusťte následující příkaz pro spuštění Early OOM:

$ ./earlyoom

Ukázkový výstup by byl:

Jak vidíte ve výše uvedeném výstupu, Early OOM zobrazí, kolik paměti a swapu máte, jaké je minimum, kolik paměti je k dispozici a kolik swapu je volného. Pamatujte, že poběží, dokud ručně nezastavíte stisknutím CTRL+C.

Pokud paměť i swap dosáhnou pod 10 %, Early OOM automaticky zabije největší procesy, dokud nebude mít systém dostatek paměti pro hladký chod. Můžete také nakonfigurovat minimální procentuální hodnotu podle vašich požadavků.

Chcete-li nastavit minimum dostupné paměti na PERCENT z celkového počtu, spusťte:

$ earlyoom -m  

Chcete-li nastavit minimum dostupného swapu na PERCENT z celkového počtu, spusťte:

$ earlyoom -s  

Další podrobnosti naleznete v části nápovědy.

$ earlyoom -h earlyoom 0,12Využití:earlyoom [MOŽNOST]... -m PERCENT nastaví minimum dostupné paměti na PERCENT z celku (výchozí 10 %) -s PERCENT nastaví minimum volného swapu na PERCENT z celku (výchozí 10 %) -M SIZE nastaví minimum dostupné paměti do SIZE KiB -S VELIKOST nastavit minimum swapu na SIZE KiB -k použít jádro oom killer místo vlastní implementace uživatelského prostoru -i oom killer v uživatelském prostoru by měl ignorovat kladné hodnoty oom_score_adj -d povolit ladicí zprávy -v vytisknout informace o verzi a ukončit -r Interval hlášení paměti INTERVAL v sekundách (výchozí 1), nastavením na 0 se úplně deaktivuje -p nastaví slušnost earlyoom na -20 a oom_score_adj na -1000 -h tento text nápovědy

Nyní se nemusíte starat o procesy s nejvyšší spotřebou paměti.


Linux
  1. Jak zabít proces zombie na Linuxu

  2. Jak zkontrolovat verzi OS a Linuxu

  3. Jak zabít proces v Linuxu pomocí příkazu?

  1. Jak najít a zabít zombie proces v Linuxu

  2. Jak změnit identitu systému Linux

  3. Linux – Jak se Oom Killer rozhodne, který proces zabije jako první?

  1. Jak zabít proces nebo zastavit program v Linuxu

  2. Jak zabít proces v Linuxu? Příkazy k ukončení

  3. Jak pozastavit/obnovit proces v Linuxu