cgroup ๋ฉ๋ชจ๋ฆฌ
๊ฐ์
cgroup ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ๋ Linux ์ปค๋์์ ํ๋ก์ธ์ค ๊ทธ๋ฃน๋ณ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ธก์ ํ๊ณ ์ ํํ๋ ๋ฆฌ์์ค ๊ด๋ฆฌ ๋ฉ์ปค๋์ฆ์ ๋๋ค. ์ปจํ ์ด๋, VM, ๋ถ๋ฆฌ๋ ์ํฌ๋ก๋ ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฒฉ๋ฆฌํ๊ณ ํ ๋นํ์ฌ, ํน์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์์คํ ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
cgroup v2์์๋ ๋จ์ผ ๊ณ์ธต ๊ตฌ์กฐ๋ก ํตํฉ๋์ด memory.min, memory.low, memory.high, memory.max ๊ฐ์ ์ ์ด ํ์ผ์ ํตํด ๋ณดํธ(protection)์ ์ ํ(limit)๋ฅผ ๋์์ ์ค์ ํ ์ ์์ต๋๋ค. ๋ณธ ๋ฌธ์์์๋ cgroup ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ์ ์ค๊ณ ์๋ฆฌ, ์ ์ด ์ธํฐํ์ด์ค, ํต๊ณ ๋ชจ๋ํฐ๋ง, ๊ทธ๋ฆฌ๊ณ ์ปจํ ์ด๋ ํ๊ฒฝ์์์ ์ด์ ๊ด์ ์ ๋ถ์ํฉ๋๋ค.
๊ทธ๋ฆผ 1. cgroup ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ์ ๊ณ์ธต ๊ตฌ์กฐ์ ๋ฆฌ์์ค ๋ฐฐ๋ถ ๋ชจ๋ธ
ํต์ฌ ๊ฐ๋
๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ ์ค๊ณ
cgroup ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ์ ํต์ฌ์ page_counter๋ผ๋ ์นด์ดํฐ์
๋๋ค. ๊ฐ cgroup์ mem_cgroup ๊ตฌ์กฐ์ฒด๋ฅผ ๊ฐ์ง๋ฉฐ, ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ ๋ ํด๋น cgroup์ ์๊ธ์ด ๋ถ๊ณผ๋ฉ๋๋ค.
- charge/uncharge: ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ฉด ํด๋น cgroup์ charge๋๊ณ , ํด์ ๋๋ฉด uncharge๋ฉ๋๋ค.
- LRU ๊ด๋ฆฌ: ๊ฐ cgroup์ ์์ฒด LRU ๋ฆฌ์คํธ๋ฅผ ๊ฐ์ง๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ ์๋ฐ ์ ํด๋น cgroup ๋ด์์ ํ์ด์ง๋ฅผ ๊ต์ฒดํฉ๋๋ค.
- ๊ณ์ธต์ ํ๊ณ: ๋ถ๋ชจ cgroup์ ์ฌ์ฉ๋์ ๋ชจ๋ ์์ cgroup์ ์ฌ์ฉ๋์ด ํฉ์ฐ๋ฉ๋๋ค.
- ๊ณต์ ํ์ด์ง: ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ ์ต์ด ์ ๊ทผํ cgroup์ ๋ถ๊ณผ๋ฉ๋๋ค.
v1๊ณผ v2์ ์ฐจ์ด
cgroup v1๊ณผ v2๋ ๋ฉ๋ชจ๋ฆฌ ์ ์ด ์ธํฐํ์ด์ค์ ๋์ ๋ฐฉ์์์ ์ฐจ์ด๊ฐ ์์ต๋๋ค.
| ํญ๋ชฉ | cgroup v1 | cgroup v2 |
|---|---|---|
| ๊ณ์ธต ๊ตฌ์กฐ | ๋ณต์ ๊ณ์ธต ๊ฐ๋ฅ | ๋จ์ผ ํตํฉ ๊ณ์ธต |
| ์ ์ด ํ์ผ | memory.limit_in_bytes | memory.max |
| ๋ณดํธ ๋ฉ์ปค๋์ฆ | ์์ | memory.min, memory.low |
| ๋ฉ๋ชจ๋ฆฌ+์ค์ | memory.memsw.limit_in_bytes | memory.swap.max |
| OOM ์ ์ด | memory.oom_control | memory.oom.group |
| ํต๊ณ | memory.stat | memory.stat (ํ์ฅ) |
| ์ปค๋ ๋ฉ๋ชจ๋ฆฌ | memory.kmem.limit_in_bytes | ๊ธฐ๋ณธ ํฌํจ |
์ ์ด ์ธํฐํ์ด์ค
cgroup v2 ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ๋ ๋ค์๊ณผ ๊ฐ์ ์ ์ด ํ์ผ์ ์ ๊ณตํฉ๋๋ค:
- memory.min: ์ ๋ ๋ณดํธ๋. ์ด ๊ฐ ์ดํ๋ก๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์๋์ง ์์ต๋๋ค.
- memory.low: ์ต์ ๋ ธ๋ ฅ ๋ณดํธ๋. ๋ค๋ฅธ cgroup์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ ๋๊น์ง ๋ณดํธ๋ฉ๋๋ค.
- memory.high: ๋ถ๋๋ฌ์ด ์ ํ. ์ด ๊ฐ์ ์ด๊ณผํ๋ฉด ๋ฉ๋ชจ๋ฆฌ ํ์๊ฐ ํ์ฑํ๋ฉ๋๋ค.
- memory.max: ํ๋ ์ ํ. ์ด ๊ฐ์ ์ด๊ณผํ๋ฉด OOM์ด ๋ฐ์ํฉ๋๋ค.
- memory.swap.high: ์ค์ ์ฌ์ฉ๋์ด ๊ณผ๋ํ๊ฒ ๋์ด๋ ๋ ์ฐ๋กํ์ ๊ฑฐ๋ ๊ฒฝ๊ณ์ ๋๋ค.
- memory.swap.max: ์ค์ ์ฌ์ฉ๋ ํ๋ ์ ํ์ ๋๋ค.
- memory.oom.group: OOM ๋ฐ์ ์ ๊ทธ๋ฃน ์ ์ฒด๋ฅผ ์ข ๋ฃํ ์ง ๊ฒฐ์ ํฉ๋๋ค.
๊ณ์ธต ํ์ฑํ์ ์์
cgroup v2์์ ๋ฉ๋ชจ๋ฆฌ ์ ์ด๋ memory.* ํ์ผ๋ง ์ฐ๋ ๊ฒ์ผ๋ก ๋๋์ง ์์ต๋๋ค. ์์ cgroup์์ cgroup.subtree_control์ +memory๋ฅผ ์ผ์ผ ํ์ cgroup์ ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ ์ธํฐํ์ด์ค๊ฐ ๋ํ๋๋ฉฐ, ๋ถ๋ชจ๊ฐ ํ์ฉํ ๋ฒ์ ์์์๋ง ์์์ด ๋ค์ ์์์ ๋ถ๋ฐฐํ ์ ์์ต๋๋ค.
๋ํ non-root cgroup์ ๋ด๋ถ์ ํ๋ก์ธ์ค๋ฅผ ๋ ์ํ์์ ๋๋ฉ์ธ ์ปจํธ๋กค๋ฌ๋ฅผ ์์์๊ฒ ๋ฐฐ๋ถํ ์ ์๋ค๋ no internal process ์ ์ฝ์ ๋ฐ์ต๋๋ค. ์ค๋ฌด์์๋ system.slice, kubepods.slice, ์ปจํ
์ด๋ leaf cgroup์ฒ๋ผ ๋ฆฌํ์ ์ํฌ๋ก๋๋ฅผ ๋ชจ์ ๋๊ณ , ์ค๊ฐ ๋
ธ๋๋ ๋ฐฐ๋ถ ์ ์ฉ ๊ณ์ธต์ผ๋ก ๋๋ ๊ตฌ์ฑ์ด ํํฉ๋๋ค.
ํต๊ณ ๋ชจ๋ํฐ๋ง
memory.stat ํ์ผ์ cgroup์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ๋ํ ์์ธํ ํต๊ณ๋ฅผ ์ ๊ณตํฉ๋๋ค:
- anon: ์ต๋ช ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋
- file: ํ์ผ ๊ธฐ๋ฐ ์บ์ ์ฌ์ฉ๋
- slab: ์ปค๋ slab ํ ๋น๋
- sock: ์์ผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋
- pgfault/pgmajfault: ํ์ด์ง ํดํธ ํ์
- workingset_refault: ์์ ์ธํธ ์ฌ์ ๊ทผ ํ์
์ด์ ์์๋ memory.stat๋ง ๋ณด์ง ์๊ณ ๋ค์ ํ์ผ์ ํจ๊ป ๋ณด๋ ํธ์ด ์ ์ฉํฉ๋๋ค.
- memory.current / memory.peak: ํ์ฌ ์ฌ์ฉ๋๊ณผ ์ต๊ณ ์ฌ์ฉ๋์ ํ์ธํฉ๋๋ค.
- memory.events / memory.events.local:
high,max,oom,oom_kill์นด์ดํฐ๋ก ์ ํ ์ด๊ณผ๊ฐ ์ด๋ ๋จ๊ณ๊น์ง ์งํ๋๋์ง ๋ด ๋๋ค. - memory.pressure: PSI(Pressure Stall Information)๋ก ํ์ ์๋ฐ์ด ์ค์ ์ง์ฐ ์๊ฐ์ผ๋ก ์ด์ด์ง๋์ง ํ์ธํฉ๋๋ค.
- memory.swap.events: ์ค์ high/max ์ด๊ณผ๊ฐ ๋ฐ๋ณต๋๋์ง ๊ตฌ๋ถํฉ๋๋ค.
๋น๊ต/๋ถ์
๋ฉ๋ชจ๋ฆฌ ์ ์ด ๋ชจ๋ธ ๋น๊ต
| ๋ชจ๋ธ | ๋์ ๋ฐฉ์ | ์ง์ฐ ์๊ฐ ์ํฅ | ์ ํฉํ ์ํฌ๋ก๋ |
|---|---|---|---|
| hard limit (memory.max) | ์ด๊ณผ ์ ์ฆ์ ํ์ ๋๋ OOM | ๋์ | ์์ ํ ๊ฒฉ๋ฆฌ๊ฐ ํ์ํ ๊ฒฝ์ฐ |
| soft limit (memory.high) | ์ด๊ณผ ์ ์ ๊ทน์ ํ์ | ์ค๊ฐ | ์ผ๋ฐ์ ์ธ ์ํฌ๋ก๋ ๊ฒฉ๋ฆฌ |
| protection (memory.min/low) | ๋ณดํธ ์์ญ ์ค์ | ์์ | ์ค์ ์๋น์ค ๋ณดํธ |
| swap limit (memory.swap.max) | ์ค์ ์ฌ์ฉ๋ ์ ํ | ์ค๊ฐ | ์ค์ ์์กด๋ ์ ์ด |
OOM ๋์ ๋น๊ต
| ์ค์ | v1 ๋์ | v2 ๋์ |
|---|---|---|
| OOM ํฌ๋ฌ ๊ธฐ๋ณธ | ๊ฐ๋ณ ํ๋ก์ธ์ค ์ข ๋ฃ | ๊ฐ๋ณ ํ๋ก์ธ์ค ์ข ๋ฃ |
| ๊ทธ๋ฃน ์ข ๋ฃ | memory.oom_control์์ ๋นํ์ฑํ ๋ถ๊ฐ | memory.oom.group=1๋ก ๊ทธ๋ฃน ์ ์ฒด ์ข ๋ฃ |
| ์๋ฆผ | eventfd๋ก ์๋ฆผ | eventfd๋ก ์๋ฆผ |
| ๋ฃจํธ cgroup | OOM ์๋ฆผ ์์ | OOM ์๋ฆผ ์์ |
์ด์ ์ค์ ๊ด์ ๋น๊ต
| ์ด์ ๋ชฉํ | ์ฐ์ ์ค์ | ํจ๊ป ๋ณผ ์งํ | ์ฃผ์ํ ์ |
|---|---|---|---|
| ์ค์ ์๋น์ค ๋ณดํธ | memory.min, memory.low |
memory.events:low, memory.pressure |
๋ณดํธ๋์ ๊ณผ๋ํ๊ฒ ์ก์ผ๋ฉด ๋ค๋ฅธ cgroup์ด ๊ณ์ ์๋ฐ์ ๋ฐ์ต๋๋ค. |
| ๊ณผ์๋น ์ํ | memory.high |
memory.events:high, PSI |
memory.high๋ ์ฆ์ ์ข
๋ฃ๊ฐ ์๋๋ผ ์ฐ๋กํ๊ณผ ์ง์ ํ์๋ฅผ ์ ๋ฐํฉ๋๋ค. |
| ๊ฐํ ๊ฒฉ๋ฆฌ | memory.max, memory.oom.group |
memory.events:max, oom_kill |
ํ๋ ์ ํ์ด ๋๋ฌด ๋ฎ์ผ๋ฉด ์งง์ ๋ฒ์คํธ์๋ OOM์ด ๋ฐ์ํฉ๋๋ค. |
| ์ค์ ์ ์ด | memory.swap.high, memory.swap.max |
memory.swap.events, ์ง์ฐ ์๊ฐ |
swap.high๋ ์ ์ ์ด์ ํ๋๊ฐ ์๋๋ผ ๋น์ ์ ๊ธ์ฆ ๊ฒฝ๊ณ์ ๊ฐ๊น์ต๋๋ค. |
๋์ ์๋ฆฌ
๋ฉ๋ชจ๋ฆฌ ํ์ ํ๋ฆ
- ํ๋ก์ธ์ค๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ฉด ํด๋น cgroup์ ํ๋๋ฅผ ์ด๊ณผํ๋์ง ํ์ธํฉ๋๋ค.
memory.high๋ฅผ ์ด๊ณผํ๋ฉด ์ปค๋์ ํด๋น cgroup์ ํ์คํฌ๋ฅผ ์ฐ๋กํํ๊ณ ์ง์ ํ์(direct reclaim)๋ฅผ ์ ๋ํฉ๋๋ค.- ํ์๋ per-cgroup LRU์์ Least Recently Used ํ์ด์ง๋ฅผ ์ฐ์ ์ ํํ๋ฉฐ, ํ์ผ ์บ์์ ์ต๋ช ๋ฉ๋ชจ๋ฆฌ์ ๋น์ค์ ๋ฐ๋ผ reclaim ๊ฒฝ๋ก๊ฐ ๋ฌ๋ผ์ง๋๋ค.
- ํ์ ๊ณผ์ ์์
memory.events์high์max์นด์ดํฐ๊ฐ ์ฆ๊ฐํด ์ด์์๊ฐ ์๋ฐ ์์ค์ ์ถ์ ํ ์ ์์ต๋๋ค. memory.max๋ฅผ ๋๋ ์ํ๊ฐ ํด์๋์ง ์์ผ๋ฉด memcg OOM์ด ๋ฐ์ํ๊ณ ,memory.oom.group=1์ด๋ฉด ํด๋น ์ํฌ๋ก๋๋ฅผ ๊ทธ๋ฃน ๋จ์๋ก ์ข ๋ฃํ ์ ์์ต๋๋ค.
์ด์์๊ฐ ํ์๋ฅผ ์ ์ ์ ์ผ๋ก ์ ๋ํด์ผ ํ ๋๋ memory.reclaim์ ๋ฐ์ดํธ ์๋ฅผ ์จ์ ํน์ cgroup๋ง ๋์์ผ๋ก proactive reclaim์ ๊ฑธ ์ ์์ต๋๋ค. ๋ค๋ง ์ด๋ ์ผ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์๋ฐ๊ณผ ๋์ผํ ์ ํธ๋ ์๋๋ฏ๋ก ๋คํธ์ํฌ ์์ผ ๋ฐธ๋ฐ์ฑ๊น์ง ์์ ํ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ ๋๋์ง๋ ์์ต๋๋ค.
๊ทธ๋ฆผ 2. memory.high ์ด๊ณผ๋ถํฐ OOM๊น์ง์ ๋ฉ๋ชจ๋ฆฌ ํ์ ๋์ ํ๋ฆ
์ปค๋ ๋ฉ๋ชจ๋ฆฌ ํ์
cgroup v2์์๋ ์ปค๋ ๋ฉ๋ชจ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์๋ฉ๋๋ค:
- slab ๋ฉ๋ชจ๋ฆฌ: SLAB/SLUB ํ ๋น๊ธฐ์์ ํ ๋น๋ ์ปค๋ ๋ฉ๋ชจ๋ฆฌ
- ์คํ ํ์ด์ง: ํ๋ก์ธ์ค๋น ์ปค๋ ์คํ
- ์์ผ ๋ฉ๋ชจ๋ฆฌ: ๋คํธ์ํฌ ์์ผ ๋ฒํผ
์ปค๋ ๋ฉ๋ชจ๋ฆฌ ํ์๋ ์ฌ์ฉ์ ๋ฉ๋ชจ๋ฆฌ ํ์์ ํจ๊ป ์ํ๋๋ฉฐ, ์ปค๋ ๋ฉ๋ชจ๋ฆฌ ๋ ๋ฆฝ ์ ํ์ ์ง์ํ์ง ์์ต๋๋ค.
์ค์ ํตํฉ
memory.swap.max์ memory.swap.high๋ฅผ ํตํด ์ค์ ์ฌ์ฉ๋์ ์ ํํ ์ ์์ต๋๋ค:
- ์ค์์ด ์ ํ๋๋ฉด ๋ถํ์ํ ์ค์ ์์์ด ์ค์ด๋ค์ด ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
- ์ค์ ์ ํ์ ๋ฉ๋ชจ๋ฆฌ ํ์ ๋์์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
- ๋ฉ๋ชจ๋ฆฌ+์ค์ ํฉ๊ณ ์ ํ์ด ํ์ํ ๊ฒฝ์ฐ ๋ฉ๋ชจ๋ฆฌ ์ ํ๊ณผ ์ค์ ์ ํ์ ํจ๊ป ์ค์ ํฉ๋๋ค.
์ฅ๋จ์
์ฅ์
- ํ๋ก์ธ์ค ๊ทธ๋ฃน๋ณ๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ๋ฐํ๊ฒ ์ ์ดํ ์ ์์ต๋๋ค.
- ์ปจํ ์ด๋์ VM ํ๊ฒฝ์์ ๋ฉ๋ชจ๋ฆฌ ๊ฒฉ๋ฆฌ๋ฅผ ๋ณด์ฅํฉ๋๋ค.
- ๋ณดํธ(protection)์ ์ ํ(limit)๋ฅผ ๋์์ ์ค์ ํ์ฌ ์ ์ฐํ ๋ฆฌ์์ค ๊ด๋ฆฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ์ค์๊ฐ ๋ฉ๋ชจ๋ฆฌ ํต๊ณ๋ฅผ ํตํด ์ฌ์ฉ๋์ ๋ชจ๋ํฐ๋งํ ์ ์์ต๋๋ค.
- ๊ณ์ธต์ ๊ตฌ์กฐ๋ก ๋ณต์กํ ๋ฆฌ์์ค ๋ฐฐ๋ถ์ด ๊ฐ๋ฅํฉ๋๋ค.
๋จ์
- ๋ฉ๋ชจ๋ฆฌ ํ์ ์ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- OOM ํฌ๋ฌ๊ฐ ์๊ธฐ์น ์๊ฒ ์ค์ ํ๋ก์ธ์ค๋ฅผ ์ข ๋ฃํ ์ ์์ต๋๋ค.
- ์ปค๋ ๋ฉ๋ชจ๋ฆฌ ๋ ๋ฆฝ ์ ํ์ด ์ ํ์ ์ ๋๋ค.
- ๊ณต์ ๋ฉ๋ชจ๋ฆฌ ํ์๋ ๋ณต์กํ๋ฉฐ ์ ํํ ํ๊ณ๊ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค.
- ์์ cgroup์ ๋๋ฌด ๋ง์ด ์์ฑํ๋ฉด ๋ฉํ๋ฐ์ดํฐ ์ค๋ฒํค๋๊ฐ ์ฆ๊ฐํฉ๋๋ค.
๊ด๋ จ ๊ธฐ์
- Linux ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ์ด: ๋ฆฌ๋ ์ค ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ณธ ๊ฐ๋
- Linux ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ: ๋ฉ๋ชจ๋ฆฌ ์ต์ ํ ๊ธฐ๋ฒ
- ์ค์/zRAM: ์ค์๊ณผ zRAM ๊ธฐ์
- ํฌ๋ช ๊ฑฐ๋ ํ์ด์ง: THP/mTHP ๊ธฐ์
- Linux Kernel Documentation: Control Group v2 (https://docs.kernel.org/admin-guide/cgroup-v2.html)
- Linux Kernel Documentation: Memory Resource Controller (Documentation/admin-guide/cgroup-v1/memory.rst)
ํต์ฌ ์ ๋ฆฌ
cgroup ๋ฉ๋ชจ๋ฆฌ ์ปจํธ๋กค๋ฌ๋ Linux์์ ํ๋ก์ธ์ค ๊ทธ๋ฃน๋ณ ๋ฉ๋ชจ๋ฆฌ ๊ฒฉ๋ฆฌ์ ์ ํ์ ์ํ ํต์ฌ ๋ฉ์ปค๋์ฆ์ผ๋ก, ์ปจํ ์ด๋์ ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ํ์์ ์ ๋๋ค. cgroup v2์์๋ ๋จ์ผ ๊ณ์ธต ๊ตฌ์กฐ์ memory.min/low/high/max ์ ์ด ํ์ผ์ ํตํด ๋ณดํธ์ ์ ํ์ ์ ์ฐํ๊ฒ ์ค์ ํ ์ ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ ํ์๋ per-cgroup LRU๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๋ฉฐ, OOM ํฌ๋ฌ๋ ์ตํ์ ์๋จ์ผ๋ก ๋์ํฉ๋๋ค. ์ด์ ํ๊ฒฝ์์๋ ๋ฉ๋ชจ๋ฆฌ high๋ฅผ ํตํ ๋ถ๋๋ฌ์ด ์ ํ๊ณผ min/low๋ฅผ ํตํ ์ค์ ์๋น์ค ๋ณดํธ๋ฅผ ์ ์ ํ ์กฐํฉํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ๊ถ์ฅ๋ฉ๋๋ค.