GNU/Linux >> Znalost Linux >  >> Linux

Jak spustit akci při nedostatku paměti v Linuxu?

Ano, linuxové jádro k tomu poskytuje mechanismus:upozornění na tlak paměti . To je zdokumentováno v https://www.kernel.org/doc/Documentation/cgroup-v1/memory.txt, sekce Tlak paměti .

Stručně řečeno, zaregistrujete deskriptor souboru eventfd v /sys/fs/cgroup/memory/memory.pressure_level na které chcete dostávat upozornění. Tato oznámení mohou být low , medium nebo critical . Typickým případem použití by bylo uvolnění některých nebo všech interních mezipamětí ve vašem procesu, když obdržíte oznámení, aby se zabránilo hrozícímu zabití OOM.


To, na co se ptáte, je v podstatě zpětné volání založené na jádře při nedostatku paměti, že? Pokud ano, pevně věřím, že jádro ne poskytnout takový mechanismus a z dobrého důvodu: protože je málo paměti, mělo by okamžitě spustit jedinou věc, která může uvolnit část paměti - zabiják OOM. Jakékoli jiné programy mohou stroj zastavit.

Každopádně v uživatelském prostoru můžete spustit jednoduché řešení monitorování. V minulosti jsem měl stejný požadavek na ladění/akci s nízkou pamětí a napsal jsem jednoduchý bash, který provedl následující:

  • sledovat měkký vodoznak: pokud je využití paměti nad touto hranicí, shromážděte nějaké statistiky (procesy, volná/použitá paměť atd.) a odešlete varovný e-mail;

  • sledovat tvrdý vodoznak: pokud je využití paměti nad touto prahovou hodnotou, shromážděte nějaké statistiky a zastavte procesy, které mají větší nároky na paměť (nebo méně důležité), pak pošlete varovný e-mail.

Takový skript by byl velmi lehký a může se dotazovat stroje v malých intervalech (tj.:15 sekund)


Linux
  1. Jak zkontrolovat velikost RAM v příkazovém řádku Linuxu v GB

  2. Jak odstranit vyrovnávací paměti a mezipaměť v Linuxu

  3. Jak vymazat mezipaměť v Linuxu

  1. Jak zaznamenat spotřebu paměti v Linuxu?

  2. Jak ovlivní chyba jednobitové paměti Linux?

  3. Jak nastavení ulimit ovlivňuje Linux?

  1. Jak zkontrolovat využití paměti na serveru se systémem Linux

  2. Jak funguje alokace zásobníku v Linuxu?

  3. Jak nakonfigurovat swappiness v Linux Memory Management?