ΠΠΎΡΠ»Π΅ Π²ΠΎΡΡΠΌΠΈ ΠΌΠ΅ΡΡΡΠ΅Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ
ΠΡΠ»ΠΈ ΠΎΠ±ΡΡΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠ΅Π½ΡΡΠ΅ Π·Π°Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΎ earlyoom ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ (ΡΠ΅ΡΠ΅Π· ΠΎΡΠΏΡΠ°Π²ΠΊΡ SIGTERM ΠΈΠ»ΠΈ SIGKILL) Π·Π°Π²Π΅ΡΡΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»ΡΡΡΠ΅Π³ΠΎ ΠΏΠ°ΠΌΡΡΡ (ΠΈΠΌΠ΅ΡΡΠ΅Π³ΠΎ ΡΠ°ΠΌΠΎΠ΅ Π±ΠΎΠ»ΡΡΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ /proc/*/oom_score), Π½Π΅ Π΄ΠΎΠ²ΠΎΠ΄Ρ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π΄ΠΎ ΠΎΡΠΈΡΡΠΊΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ Π±ΡΡΠ΅ΡΠΎΠ² ΠΈ ΠΌΠ΅ΡΠ°ΡΡΠ΅Π³ΠΎ ΡΠ°Π±ΠΎΡΠ΅ ΡΠ²ΠΎΠΏΠΏΠΈΠ½Π³Π° (ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ OOM (Out Of Memory) Π² ΡΠ΄ΡΠ΅ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠ³Π΄Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ Π½Π΅Ρ Π²Π°ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΡΠΆΠ΅ Π΄ΠΎΡΡΠΈΠ³Π»ΠΎ ΠΊΡΠΈΡΠΈΡΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΎΠ±ΡΡΠ½ΠΎ ΠΊ ΡΡΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠΆΠ΅ Π½Π΅ ΡΠ΅Π°Π³ΠΈΡΡΠ΅Ρ Π½Π° Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ).
Earlyoom ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΎΡΠΏΡΠ°Π²ΠΊΡ ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΎ ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π·Π°Π²Π΅ΡΡΡΠ½Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ°Ρ Π½Π° ΡΠ°Π±ΠΎΡΠΈΠΉ ΡΡΠΎΠ» (Ρ ΠΏΠΎΠΌΠΎΡΡΡ notify-send), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΡΠ°Π²ΠΈΠ», Π² ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°ΡΡ ΠΈΠΌΠ΅Π½Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ΅Π΄ΠΏΠΎΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ (ΠΎΠΏΡΠΈΡ «—prefer») ΠΈΠ»ΠΈ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΊΠΎΡΠΎΡΡΡ ΡΡΠΎΠΈΡ ΠΈΠ·Π±Π΅Π³Π°ΡΡ (ΠΎΠΏΡΠΈΡ «—avoid»).
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅
- ΠΠ° ΡΡΡΡ
ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π°ΡΡΠΈΠ±ΡΡΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π½Π° 50% ΡΡΠΊΠΎΡΠ΅Π½Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π²ΡΠ±ΠΎΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ; - ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΎ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ Π² Π»ΠΎΠ³Π΅ UID Π·Π°Π²Π΅ΡΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π² Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊ PID ΠΈ ΠΈΠΌΠ΅Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°;
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° ΠΎΡΠ»Π°Π΄ΠΎΡΠ½ΠΎΠ³ΠΎ Π»ΠΎΠ³Π° ΡΠ²Π΅ΡΠ»ΠΎ ΡΠ΅ΡΡΠΌ ΡΠ²Π΅ΡΠΎΠΌ;
- ΠΡΠΎΠ²Π΅Π΄Π΅Π½Π° ΡΠΈΡΡΠΊΠ° ΠΊΠΎΠ΄Π°;
- ΠΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΎ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ Π΄Π»Ρ Π±Π»ΠΎΠΊΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ;
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½Π°ΡΡΡΠΎΠΉΠΊΠ° PATH_LEN Π΄Π»Ρ Π·Π°ΠΌΠ΅Π½Ρ Π²ΡΠΈΡΠΎΠ³ΠΎ Π² ΠΊΠΎΠ΄ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π±ΡΡΠ΅ΡΠ°;
- ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ Π·Π°ΠΏΡΡΠΊ cppcheck ΠΏΡΠΈ Π΅Π³ΠΎ Π½Π°Π»ΠΈΡΠΈΠΈ;
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ ΡΠ΅ΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ «make bench»;
- Π Π°ΡΡΠΈΡΠ΅Π½ Π½Π°Π±ΠΎΡ ΡΠ΅ΡΡΠΎΠ² (make test);
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΡΠ±ΡΠΎΡ ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ root Π² unit-ΡΠ°ΠΉΠ»Π΅ systemd earlyoom.service. ΠΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅
Π»ΠΎΠΌΠ°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ GUI ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ. ΠΠ»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ GUI ΡΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠΉ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ Π²Π΅ΡΠ½ΡΡΡ root ΠΏΡΠ°Π²Π°, ΡΠ°ΡΠΊΠΎΠΌΠΌΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π² «DynamicUser=true». ΠΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ root ΡΠ°ΠΊΠΆΠ΅ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΈ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ /proc Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ hidepid=1 ΠΈΠ»ΠΈ hidepid=2.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru