Π’ Fedora 32 Π½Π°ΠΌΠ΅Ρ€Π΅Π½Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ earlyoom для Ρ€Π°Π½Π½Π΅Π³ΠΎ рСагирования Π½Π° Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΡƒ памяти

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

Π’ Π±ΠΎΠ»Π΅Π΅ ΠΎΡ‚Π΄Π°Π»Ρ‘Π½Π½Ρ‹Ρ… выпусках Fedora рассматриваСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти low-memory-monitor, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ появившийся Π² ядрС Linux 5.2 интСрфСйс /proc/pressure/memory для ΠΎΡ†Π΅Π½ΠΊΠΈ Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти Π² систСмС, Π½ΠΎ Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ earlyoom сразу Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ°Π΅Ρ‚ процСссы, Π° отправляСт Ρ‡Π΅Ρ€Π΅Π· DBus ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΎ нСобходимости ΡΠ½ΠΈΠ·ΠΈΡ‚ΡŒ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ памяти (Ссли послС этого ситуация Π½Π΅ Π½ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π»Π°ΡΡŒ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° активация OOM Killer ядра). Low-memory-monitor Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, поэтому ΠΎΠ½ рассматриваСтся ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для ΠΎΡ‚Π΄Π°Π»Ρ‘Π½Π½ΠΎΠΉ пСрспСктивы, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ послС Π°Π΄Π°ΠΏΡ‚Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ GNOME.

Для отслСТивания ситуации Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти прилоТСниями Π² Glib 2.63.3 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ API GMemoryMonitor, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ сигналы ΠΎΡ‚ low-memory-monitor ΠΈ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΌΠ΅Ρ€Ρ‹ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡƒΡŽ для ΠΊΠ΅ΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ, ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹, Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ сборку мусора, ΠΏΠΎΠΏΡ‹Ρ‚Π°Ρ‚ΡŒΡΡ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ памяти ΠΈΠ»ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡΡ‚Π°ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ процСссы). ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ°
GMemoryMonitor Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π² xdg-desktop-portal для использования Π² ΠΈΠ·ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… прилоТСниях, поставляСмых Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ flatpak.

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