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.