free ๋ช ๋ น์ด๋ ๋ฆฌ๋ ์ค ์์คํ ์์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฒด์ ์ธ ํํฉ์ ๋น ๋ฅด๊ฒ ์ดํด๋ณด๋ ๋ช ๋ น์ด. ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ, ์ฌ์ฉ์ค์ธ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ, ๊ณต์ ๋ฉ๋ชจ๋ฆฌ, buffer, cache ๋ฉ๋ชจ๋ฆฌ ๋ฐ Swap์ ํฌ๊ธฐ ํ์ธ ๊ฐ๋ฅ
# free -h
total used free shared buffers
Mem: 1.8G 1.7G 104M 11M 4.6M
-/+ buffers/cache: 1.7G 109M
Swap: 951M 2.2M 948M- total : ํ์ฌ ์์คํ ์ ์ค์น๋์ด์๋ ์ ์ฒด ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ
- used : ํ์ฌ ์ฌ์ฉ์ค์ธ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ. (total - free - buffer/cache)
- free : ์์คํ ์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์์ฌ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ
- shared : ํ๋ก์ธ์ค ์ฌ์ด์์ ๊ณต์ ๋๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ. (์ฃผ๋ก ํ๋ก์ธ์ค ๋๋ ์ค๋ ๋ ๊ฐ ํต์ ์ฌ์ฉ)
- buffer/cache : ์ปค๋ ์ฑ๋ฅ ํฅ์์ ์ํด ์บ์ ์์ญ์ผ๋ก ์ฌ์ฉ๋๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ.
buffer : buffer cache์ ํฌ๊ธฐ
cache : page cache + slabs ํฌ๊ธฐ
์ ๋์ค์ ํ์ผ ์์คํ
์ ๋๋ ํ ๋ฆฌ์ ๋ด๋ถ์ ํ์ผ์ ์ฐพ๊ธฐ ์ฝ๋๋ก ์ ์ง ๋ฐ ๊ด๋ฆฌ ํ๋ ์์คํ
.
๋ค์๊ณผ ๊ฐ์ด 4๊ฐ์ง์ ๋ธ๋ก์ผ๋ก ๊ตฌ์ฑ.
-
Boot Block
๋ถํ ์ ํ์ํ ์ ๋ณด ์ ์ฅ. -
Super Block
ํ์ผ์์คํ ์ ๋ํ ์ถฉ์ฒด์ ์ธ ์ ๋ณด ์ ์ฅ.
์ด๋์๋ถํฐ Inode block ์ธ์ง, data block ์ธ์ง, ํ์ผ ์์คํ ์ ํฌ๊ธฐ ๋ฑ์ ์ ์ฅ. -
Inode(index node)list
ํ์ผ ํ๋๋น inode ๊ฐ ํ ๋น, ํด๋น inode ๋ ํ์ผ์ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์.
์ด๋ฌํ inode์ ๋ฌถ์์ผ๋ก ๋ณด๋ฉด ๋จ. inode๋ ํ์ผ์ ์ ๋ณด์ธ ์ ๊ทผ ๊ถํ, ์์ ์ฃผ, ํ์ผ ํฌ๊ธฐ, inode ๋ฒํธ ๋ฑ์ ์ ์ฅํ๋ ๋ถ๋ถ. -
Data Block
์ค์ ๋ก ๋ฐ์ดํฐ์ ๋ด์ฉ์ด ์ ์ฅ๋๋ ๋์คํฌ ์์ญ,
๊ฐ๊ฐ ๋ฐ์ดํฐ ๋ธ๋ก์ ํ๋ฒ์ ํ๋์ ํ์ผ๋ง ํ ๋น ๊ฐ๋ฅ.
4๊ฐ์ง ๋ธ๋ก์ ์ค๋ช
ํ ์ด์ ๋ buffer์ cache๋ฅผ ๋ถ๋ฆฌํด์ ์ด์ ํ๊ธฐ ์ํจ.
buffer๋ buffer cache๋ก ์ค๋ช
ํ์ผ๋ฉฐ, cache ๋ page cache + slabs ๋ผ๊ณ ํํ ํ์.
๊ทธ๋ฌ๋ฉด page cache, buffer cache, slabs๊ฐ ๋ฌด์์ธ์ง ์์๋ณด์.
page cache ๋ ๋ฆฌ๋
์ค ์ปค๋์ด I/O ์ฑ๋ฅ ํฅ์์ ์ํด ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ์ํฅ.
๋๋ฆฐ ๋์คํฌ ์ ๊ทผ์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ํ๋ฒ ์ฝ์ ํ์ผ์ ๋ด์ฉ์ ์ปค๋ ๋ฉ๋ชจ๋ฆฌ์ ์ผ๋ถ์ธ page cache ์์ญ์ ์ ์ฅ
์ดํ ์ฌ ์ ๊ทผ์ด ์ผ์ด๋๊ฒ ๋๋ ๊ฒฝ์ฐ, ๋์คํฌ์ ๋ด์ฉ์ ์ ๋ฌํ๋ ๊ฒ์ด ์๋ ๋ฉ๋ชจ๋ฆฌ์ page cache ์์ญ์ ์ ์ฅ๋ ๋ด์ฉ์ ์ ๋ฌํจ์ผ๋ก์จ ๋น ๋ฅธ ์ ๊ทผ์ ๊ฐ์ผํ๊ฒ ํ๋ค.
์ด๋ฅผ page๋ผ๋ ๋จ์๋ก ๊ด๋ฆฌํ๋ฉฐ, page cache๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ํ๋ก์ธ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ํ์ผ์ ์ฐ๋ฉด ์ปค๋์ page cache์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ณ , ์ด๋ ํด๋นํ๋ ํ์ด์ง ํ
์ด๋ธ์ '์์ ๋ ๊ฒ' ์ด๋ผ๋ ์๋ฏธ๋ก dirty flag๋ฅผ ๋ถ์ธ๋ค.
์ด flag๊ฐ ๋ถ์ ํ์ด์ง๋ฅผ dirty page๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ด๋ฌํ dirty page ์ ๋ด์ฉ์ ๋์ค์ ์ปค๋์ ๋ฐฑ๊ทธ๋ผ์ด๋ ์ฒ๋ฆฌ๋๋ฉฐ, ์คํ ๋ฆฌ์ง ๋ด์ ํ์ผ์ ๋ฐ์ํ๊ณ ํด๋น flag๋ฅผ ์ง์ด๋ค.
page cache์ฌ์ด์ฆ๋ ์์คํ
์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋น์ด์๋ ์ํ์์ ํ๋ก์ธ์ค๊ฐ ์บ์์ ์๋ ํ์ผ์ ์ฝ์ ๋๋ง๋ค ์ ์ ์ฆ๊ฐํ๋ค.
์ดํ ์์คํ
๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด์ง๋ฉด dirty page๊ฐ ์๋ ๊ฒ๋ค ๋ถํฐ ํ๊ธฐ์์ผ, ๋ฉ๋ชจ๋ฆฌ ํ๋ณด๋ฅผ ํ๊ณ , ๊ทธ๋๋ ๋ถ์กฑํ๋ฉด dirty page ๋ค์ write back ํ ๋ค ํ๊ธฐ์์ผ ํ๋ณดํ๋ค.
- ๊ด๋ จ ์ปค๋ ํ๋ผ๋ฏธํฐ vm.dirty_writeback_centisecs : dirty page ์ write back์ด ๋ฐ์ํ๋ ์ฃผ๊ธฐ๋ฅผ ๋ณ๊ฒฝ. ๋จ์๋ 1/100์ด๋ก default๋ 5์ด์ 1๋ฒ write back ํ๋ค.
buffer cache ๋ page cache์ ๋์ผํ๊ฒ ๋ฆฌ๋
์ค ์ปค๋์ด I/O ์ฑ๋ฅ ํฅ์์ ์ํ์ฌ ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ.
page cache๋ ํ์ผ์ ๋ด์ฉ์ ์ ์ฅํ๋ค๋ฉด buffer cache๋ ํ์ผ์ ๋ด์ฉ์ด ์๋ UFS ๊ธฐ์ค์ผ๋ก
Super Block๊ณผ Inode Block์ ํด๋นํ๋ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ ํ๋ค.
๋๋ ํ ๋ฆฌ๋ฅผ ์ฝ๊ณ ์ ํ๋ ๊ฒฝ์ฐ์๋ ๋๋ ํ ๋ฆฌ์ ํฌํจ๋ ํ์ผ๋ค์ inode block๋ค์ ๋ฒํผ ์บ์์ ์ ์ฅํ๋ค.
์ดํ ์ ๊ทผ ์, buffer cache์ ์กด์ฌํ๋ ๊ฐ์ ๊ฐ์ ธ๋ค ๋ณด์ฌ์ค๋ค.
์ค์ ๋ก ls ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ฉด free ๋ช
๋ น์ด์ buffers ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง์ ํ์ธ ํ ์ ์๋ค.
์ปค๋ ์ญ์ ํ๋ก์ธ์ค์ด๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๋ค.
์ฆ, slab ์์ญ์ด๋ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์บ์ํ๋ dentry cache์ ํ์ผ์ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์๋ inode cache ๋ฑ ์ปค๋์ด ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ ๋งํ๋ค.
์ฝ๊ฒ ๋งํ๋ฉด ์ปค๋์ด ๋ด๋ถ์ ์ผ๋ก ์ฌ์ฉํ๋ ์บ์ ๋ผ๊ณ ํ ์ ์๋ค.
inode ์ dentry๋ ํ์ผ ์๋ฃ ๊ตฌ์กฐ๋ฅผ ์๋ฏธํ๋ค.
VFS(Virtual File System)์ ๊ด๋ จ๋ ๋ถ๋ถ์ ๊ณต๋ถํ๋ค ๋ณด๋ฉด ์์ฃผ ๋ง๋๊ฒ ๋๋ dentry๋ ๊ฒฝ๋ก๋ช
ํ์์ ์ํ ์บ์ ์ญํ ๋ ์ํํ๋ค๊ณ ์๋ ค์ ธ ์์.
๊ฐ๋จํ ์ด์ผ๊ธฐ ํ๋ฉด ์ด๋ ํ ํ์ผ์ ์์ฑํ ๋, ํ์ผ์ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ inode์ dentry๋ ๋ณด๋ค ๋น ๋ฅธ ๋ฐ์ดํฐ ์ ๊ทผ์ ์ํด์ ์ปค๋์ slab ์๋ฃ๊ตฌ์กฐ์ ์ถ๊ฐ๋๋ค๊ณ ์ดํดํ๋ฉด ๋๋ค.
# cat /proc/meminfo ๋ช
๋ น์ด ์
๋ ฅ ์, ์๋์ ๊ฐ์ ํญ๋ชฉ์ ํ์ธ ๊ฐ๋ฅ.
# cat /proc/meminfo
Slab: 110864 kB
SReclaimable: 47152 kB
SUnreclaim: 63712 kBSlab : ์ปค๋์ด ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ์ ํฌ๊ธฐ.
SReclaimable : Slab Recaimable ๋ก, ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์, ํ๋ก์ธ์ค๋ก ํ ๋นํจ์ผ๋ก์จ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ slab์์ญ ํฌ๊ธฐ.
๋๋ถ๋ถ์ slab ์บ์ฑ ์์ญ์ด ํฌํจ.
SUnreclaim : Slab Unreclaim ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํ์ฌ๋ ์ฌ ํ ๋น ๋์ง ์๋ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ๋ํ๋.
์ปค๋์ด ํ์ฌ ์ฌ์ฉ์ค์ธ ์์ญ์ ํฌ๊ธฐ, ํด์ ํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
slabtop์ด๋ผ๋ ๋ช ๋ น์ด๋ฅผ ํตํด ์์ธํ ํ์ธ ๊ฐ๋ฅ
used ์๋ buffers, cache(page, slab)์ด ํฌํจ๋์ง ์๋๋ค.
๋ณ๊ฐ๋ก ํํํ๋ ๊ฒ์ฒ๋ผ free ์๋ ํฌํจ๋์ง ์๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๋ชจ๋ํฐ๋ง์ ํตํด ์์ผ ๋ถ์. ๋ฉ๋ชจ๋ฆฌ์ ๋น์ ์์ ์ธ ์ํ๊ฐ ํ์ธ๋์์ ๊ฒฝ์ฐ, free๋ช ๋ น์ผ๋ก๋ ์์ธํ ๋ด์ฉ์ ๋ณด๋๋ฐ ํ๊ณ๊ฐ ์์.
์ด๋ฌํ ํ๊ณ์ ์ ์์ ์ค๋ช ํ ํ์ผ์ธ /proc/meminfo ์ ํตํด์ ์ถ๊ฐ๋ก ํ์ธ ํ ์ ์๋ค.
๋ฆฌ๋ ์ค์์๋ /proc/meminfo ๋ช ๋ น์ ํตํด ๋ฉ๋ชจ๋ฆฌ ํํฉ์ ๋ณผ์ ์๋ค.
# cat /proc/meminfo
MemTotal: 1946940 kB
MemFree: 113688 kB
MemAvailable: 946356 kB
Buffers: 4712 kB // ํ์ผ์์คํ
์์ ๋ฉํ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ Buffer cache์ ํฌ๊ธฐ.
Cached: 962124 kB // Page cache ์ ํฌ๊ธฐ๋ฅผ ๋ํ๋จ.
SwapCached: 0 kB // ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ์ผ๋ก ์ธํ์ฌ swap์ด ๋์๋ค๊ฐ ๋ค์ ๋์์์๋, swap ์์ญ์์๋ ํด๋น ๊ณต๊ฐ์ ์ง์ฐ์ง ์๋๋ค. ์ถํ์ ๋ค์ ๋ถ์กฑํ๊ฒ ๋ ๊ฒฝ์ฐ I/O ๋ถํ๋ฅผ ์ค์ด๊ฒ ํ๊ธฐ ์ํด์์ด๋ค.
Active: 793564 kB // ๋น๊ต์ ์ต๊ทผ์ ์ฌ์ฉ๋ ์์ญ์ผ๋ก์จ, Action(file)๊ณผ action(anon)์ ํฉ์น ํฌ๊ธฐ.
Inactive: 478884 kB // ๋น๊ต์ ์ฐธ์กฐ/์ฌ์ฉ์ด ์ค๋๋ ์์ญ์ผ๋ก์จ Swap ์์ญ์ผ๋ก ์ด๋๋ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ. Inaction(file)๊ณผ Inaction(anon)์ ํฉ์น ํฌ๊ธฐ.
Active(anon): 326400 kB // anonymous ์ ์ค์๋ง์ผ๋ก page cache๋ฅผ ์ ์ธํ ๋น๊ต์ ์ต๊ทผ์ ์ฌ์ฉ๋ ํ๋ก์ธ์ค๋ค์ด ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ.
Inactive(anon): 112412 kB // Actin(anon)๊ณผ ๋์ผํ๊ฒ ํ๋ก์ธ์ค๋ค์ด ์ฌ์ฉ๋๋ ์ญ์ญ์ด์ง๋ง, ์ฐธ์กฐ๊ฐ ์ค๋๋์ด Swap์์ญ์ผ๋ก ์ด๋ํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ.
Active(file): 467164 kB // ์ปค๋์ด I/O ์ฑ๋ฅ ํฅ์์ ์ํด ์ฌ์ฉํ๋ page cache, buffer cache์์ญ์ ํฌ๊ธฐ. ์ด๋ฆ์ฒ๋ผ ์ต๊ทผ์ ์ฐธ์กฐ๋์ด swap ์์ญ์ผ๋ก ์ด๋๋์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์์ญ.
Inactive(file): 366472 kB // page cache, buffer cache๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ ์์ญ์ด์ง๋ง, ์ฐธ์กฐ๋์ง ์ค๋๋์ด swap ์์ญ์ผ๋ก ์ด๋๋ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ ์์ญ.
Unevictable: 130320 kB
Mlocked: 122220 kB
SwapTotal: 973464 kB
SwapFree: 971160 kB
Dirty: 20 kB // page cache๋ฅผ ํตํด ์ ์ฅ๋ ํ์ผ ๋ด์ฉ์ ์ฌ์ฉํ๋ ๊ณผ์ ์์ ์ฐ๊ธฐ ์์
์ด ์ด๋ฃจ์ด์ง ๊ฒฝ์ฐ, ๋์คํฌ์ ์๋ ๋ด์ฉ๊ณผ page cache์ ์๋ ๋ด์ฉ์ ์๋ก ๋ค๋ฅด๊ฒ ๋๋ค. ์ด๋ ์ปค๋์ ๋ฌ๋ผ์ก์์ ํ์ํ๋ dirty bit๋ฅผ ์ผ๊ณ ํด๋น ์์ญ์ dirty page๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ดํ '์ผ์ ์ฃผ๊ธฐ, ์ผ์ ํฌ๊ธฐ' ๋จ์๋ก ๋์คํฌ์ ๋๊ธฐํ๋ฅผ ํ๋ค. ์ด๋ฌํ ์์ญ์ ํฌ๊ธฐ๋ฅผ ๋งํ๋ค.
Writeback: 0 kB
AnonPages: 435984 kB
Mapped: 536344 kB
Shmem: 11748 kB
KReclaimable: 92896 kB
Slab: 110864 kB
SReclaimable: 47152 kB
SUnreclaim: 63712 kB
KernelStack: 14192 kB
PageTables: 31844 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 1946932 kB
Committed_AS: 25886344 kB
VmallocTotal: 263061440 kB
VmallocUsed: 26276 kB
VmallocChunk: 0 kB
Percpu: 3616 kB
CmaTotal: 65536 kB
CmaAllocated: 1392 kB
CmaReleased: 64144 kB
CmaFree: 0 kB