๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ํ•ธ๋“ค๋Ÿฌ ๋ฆด๋ฆฌ์Šค earlyoom 1.4

XNUMX๊ฐœ์›”๊ฐ„์˜ ๊ฐœ๋ฐœ ๋์— ์ถœํŒ ๋œ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ํ”„๋กœ์„ธ์Šค ๋ฆด๋ฆฌ์Šค ์–ผ๋ฆฌ๋ฃธ 1.4, ์ฃผ๊ธฐ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ ์–‘(MemAvailable, SwapFree)์„ ํ™•์ธํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ๋ฐœ์ƒ ์‹œ ์กฐ๊ธฐ ๋Œ€์‘์„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ ์ฝ”๋“œ๋Š” C์–ธ์–ด๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ, ๋ฐฐํฌ์ž MIT ๋ผ์ด์„ผ์Šค์— ๋”ฐ๋ผ.

์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ ์–‘์ด ์ง€์ •๋œ ๊ฐ’๋ณด๋‹ค ์ ์œผ๋ฉด earlyoom์€ ์‹œ์Šคํ…œ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ์•Š๊ณ  ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ฐ€์žฅ ์ ๊ทน์ ์œผ๋กœ ์†Œ๋น„ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค(๊ฐ€์žฅ ๋†’์€ /proc/*/oom_score ๊ฐ’์„ ๊ฐ€์ง)๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค(SIGTERM ๋˜๋Š” SIGKILL ์ „์†ก). ์‹œ์Šคํ…œ ๋ฒ„ํผ๋ฅผ ์ง€์šฐ๊ณ  ์ž‘์—… ๊ตํ™˜์„ ๋ฐฉํ•ดํ•ฉ๋‹ˆ๋‹ค(๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ์ƒํƒœ๊ฐ€ ์ด๋ฏธ ์ž„๊ณ„ ๊ฐ’์— ๋„๋‹ฌํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ์ด ์ˆœ๊ฐ„ ์‹œ์Šคํ…œ์ด ๋” ์ด์ƒ ์‘๋‹ตํ•˜์ง€ ์•Š์„ ๋•Œ ์ปค๋„์˜ OOM(Out Of Memory) ์ฒ˜๋ฆฌ๊ธฐ๊ฐ€ ํŠธ๋ฆฌ๊ฑฐ๋ฉ๋‹ˆ๋‹ค) ์‚ฌ์šฉ์ž ์ž‘์—…).

Earlyoom์€ ๊ฐ•์ œ ์ข…๋ฃŒ๋œ ํ”„๋กœ์„ธ์Šค์— ๋Œ€ํ•œ ์•Œ๋ฆผ์„ ๋ฐ์Šคํฌํƒ‘์œผ๋กœ ๋ณด๋‚ด๋Š” ๊ฒƒ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค(notify-send ์‚ฌ์šฉ). ๋˜ํ•œ ์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ์ข…๋ฃŒํ•˜๊ธฐ๋ฅผ ์›ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ ์ด๋ฆ„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๊ทœ์น™์„ ์ •์˜ํ•˜๋Š” ๊ธฐ๋Šฅ๋„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค(์˜ต์…˜ "- -prefer") ๋˜๋Š” ์ค‘์ง€๋ฅผ ํ”ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค(์˜ต์…˜ "--avoid").

์ฃผ์š” ๋ณ€๊ฒฝ ์ƒˆ ๋ฆด๋ฆฌ์Šค์—์„œ๋Š”:

  • ์˜ ๋น„์šฉ์œผ๋กœ ๊ฒŒ์œผ๋ฅธ ๋กœ๋”ฉ ํ”„๋กœ์„ธ์Šค ์†์„ฑ ์™„๋ฃŒ๋ฅผ ์œ„ํ•œ ํ”„๋กœ์„ธ์Šค ์„ ํƒ ๋กœ์ง์ด 50% ๋” ๋นจ๋ผ์กŒ์Šต๋‹ˆ๋‹ค.
  • PID ๋ฐ ํ”„๋กœ์„ธ์Šค ์ด๋ฆ„ ์™ธ์—๋„ ์ข…๋ฃŒ๋˜๋Š” ํ”„๋กœ์„ธ์Šค์˜ UID๊ฐ€ ๋กœ๊ทธ์— ๋ฐ˜์˜๋˜๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ฐ์€ ํšŒ์ƒ‰์œผ๋กœ ๋””๋ฒ„๊ทธ ๋กœ๊ทธ ๊ฐ•์กฐ ํ‘œ์‹œ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ๋ฅผ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋ธ”๋ก์— ๋กœ์ปฌ์ธ ๋ณ€์ˆ˜ ์„ ์–ธ์ด ์‚ฌ์šฉ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ฝ”๋“œ์— ํฌํ•จ๋œ ๋ฒ„ํผ ํฌ๊ธฐ ๊ฐ’์„ ๋Œ€์ฒดํ•˜๊ธฐ ์œ„ํ•ด PATH_LEN ์„ค์ •์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ cppcheck๊ฐ€ ์‹คํ–‰๋˜๋Š”์ง€ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
  • "๋ฒค์น˜ ๋งŒ๋“ค๊ธฐ" ์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํ™•์žฅ๋œ ํ…Œ์ŠคํŠธ ์„ธํŠธ(ํ…Œ์ŠคํŠธ ์ˆ˜ํ–‰)
  • systemd earlyoom.service ๋‹จ์œ„ ํŒŒ์ผ์—์„œ ๋ฃจํŠธ ๊ถŒํ•œ ์žฌ์„ค์ •์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ณ€ํ™” ํœด์‹ GUI ์•Œ๋ฆผ ๊ฐ€๋Šฅ์„ฑ. GUI ์•Œ๋ฆผ์„ ํ™œ์„ฑํ™”ํ•˜๋ ค๋ฉด "DynamicUser=true"์˜ ์ฃผ์„ ์ฒ˜๋ฆฌ๋ฅผ ์ œ๊ฑฐํ•˜์—ฌ ๋ฃจํŠธ ๊ถŒํ•œ์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ๋ฃจํŠธ๋„ ๋น„ํ™œ์„ฑํ™” ะฟั€ะธะฒะพะดะธั‚ hidepid=1 ๋˜๋Š” hidepid=2 ๋ชจ๋“œ์—์„œ /proc๋ฅผ ๋งˆ์šดํŠธํ•  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€