Выпуск earlyoom 1.3, процСсса для Ρ€Π°Π½Π½Π΅Π³ΠΎ рСагирования Π½Π° Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΡƒ памяти

ПослС сСми мСсяцСв Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ выпуск Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠ³ΠΎ процСсса earlyoom 1.3, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ пСриодичСски провСряСт объСм доступной памяти (MemAvailable, SwapFree) ΠΈ пытаСтся Π½Π° Ρ€Π°Π½Π½Π΅ΠΉ стадии ΠΎΡ‚Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° возникновСния Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти.

Если ΠΎΠ±ΡŠΡ‘ΠΌ доступной памяти мСньшС Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ значСния, Ρ‚ΠΎ earlyoom ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ (Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ SIGTERM ΠΈΠ»ΠΈ SIGKILL) Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ процСсса, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»ΡΡŽΡ‰Π΅Π³ΠΎ ΠΏΠ°ΠΌΡΡ‚ΡŒ (ΠΈΠΌΠ΅ΡŽΡ‰Π΅Π³ΠΎ самоС большоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ /proc/*/oom_score), Π½Π΅ доводя состояниС систСмы Π΄ΠΎ очистки систСмных Π±ΡƒΡ„Π΅Ρ€ΠΎΠ² ΠΈ ΠΌΠ΅ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ своппинга (ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ OOM (Out Of Memory) Π² ядрС срабатываСт ΠΊΠΎΠ³Π΄Π° состояниС Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти ΡƒΠΆΠ΅ достигло ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΊ этому ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ систСма ΡƒΠΆΠ΅ Π½Π΅ Ρ€Π΅Π°Π³ΠΈΡ€ΡƒΠ΅Ρ‚ Π½Π° дСйствия ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ).

Earlyoom ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΡƒ ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎ ΠΏΡ€ΠΈΠ½ΡƒΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΡ‘Π½Π½Ρ‹Ρ… процСссах Π½Π° Ρ€Π°Π±ΠΎΡ‡ΠΈΠΉ стол (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ notify-send), Π° Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ опрСдСлСния ΠΏΡ€Π°Π²ΠΈΠ», Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ рСгулярных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° процСссов, Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ (опция "—prefer") ΠΈΠ»ΠΈ остановки ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… стоит ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ (опция "—avoid").

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ измСнСния Π² Π½ΠΎΠ²ΠΎΠΌ выпускС:

  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ процСсса послС ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΈ Π΅ΠΌΡƒ сигнала. Π­Ρ‚ΠΎ устраняСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, Π·Π°ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΡƒΡŽΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ earlyoom ΠΈΠ½ΠΎΠ³Π΄Π° ΡƒΠ±ΠΈΠ²Π°Π΅Ρ‚ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ процСсса, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ достаточно;
  • Π”ΠΎΠ±Π°Π²Π»Π΅Π½ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ скрипт (notify_all_users.py) для увСдомлСния всСх Π·Π°Π»ΠΎΠ³ΠΈΠ½Π΅Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ процСссов Ρ‡Π΅Ρ€Π΅Π· увСдомлСния notify-send;
  • Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠΌΠ΅Π½ процСссов, содСрТащих UTF-8 символы;
  • ΠŸΡ€ΠΈΠ½ΡΡ‚ кодСкс повСдСния (Contributor Covenant Code of Conduct).

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: linux.org.ru