Ryotta's Linux MM 75๊ฐœ ๋ฌธ์„œ ยท 145๊ฐœ ์ด๋ฏธ์ง€

๋ฆฌ๋ˆ…์Šค ์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์„œ๋ธŒ์‹œ์Šคํ…œ์„ ์†Œ์Šค ์ฝ”๋“œ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ถ„์„ํ•œ ํ•œ๊ตญ์–ด ๊ธฐ์ˆ  ๋ฌธ์„œ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค.

1. ํ•ต์‹ฌ (Core)

๐Ÿ”ง ํ•ต์‹ฌ (Core)

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๊ฐœ์š”

Memory Management Overview โ€” Node/Zone/Page, ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”, ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ๋งต

๐Ÿ”ง ํ•ต์‹ฌ (Core)

Buddy Allocator

Buddy Allocator โ€” 2^n ํŽ˜์ด์ง€ ๋ธ”๋ก ํ• ๋‹น/ํ•ด์ œ, GFP ํ”Œ๋ž˜๊ทธ

๐Ÿ”ง ํ•ต์‹ฌ (Core)

SLUB ํ• ๋‹น์ž

SLUB Allocator โ€” ์ปค๋„ ์˜ค๋ธŒ์ ํŠธ ์บ์‹ฑ, kmem_cache

๐Ÿ”ง ํ•ต์‹ฌ (Core)

VMA / mmap

Virtual Memory Area โ€” ๊ฐ€์ƒ ์ฃผ์†Œ ๊ณต๊ฐ„, ํŽ˜์ด์ง€ ํดํŠธ, COW

๐Ÿ”ง ํ•ต์‹ฌ (Core)

Memblock ํ• ๋‹น์ž

๋ถ€ํŒ… ์ดˆ๊ธฐ ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ โ€” E820/DT โ†’ memblock โ†’ Buddy

2. ํšŒ์ˆ˜ & ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ

โ™ป๏ธ ํšŒ์ˆ˜ & ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ

ํŽ˜์ด์ง€ ํšŒ์ˆ˜ (vmscan)

Page Reclaim โ€” kswapd, LRU/MGLRU, shrinker, direct reclaim

โ™ป๏ธ ํšŒ์ˆ˜ & ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ

vmalloc

๊ฐ€์ƒ ์—ฐ์† ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น โ€” vmap_area, ioremap

โ™ป๏ธ ํšŒ์ˆ˜ & ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ

Swap / zswap

์Šค์™€ํ•‘๊ณผ ์••์ถ• ์Šค์™‘ ์บ์‹œ โ€” swap out/in, zpool

โ™ป๏ธ ํšŒ์ˆ˜ & ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ

OOM Killer

Out-Of-Memory Killer โ€” oom_badness, OOM Reaper, overcommit

โ™ป๏ธ ํšŒ์ˆ˜ & ๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ

Userfaultfd

์œ ์ € ๋ชจ๋“œ ํŽ˜์ด์ง€ ํดํŠธ ์ฒ˜๋ฆฌ โ€” CRIU, KVM post-copy

3. ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

๐Ÿš€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

Huge Pages / THP

Transparent Huge Pages โ€” hugetlbfs, khugepaged, split

๐Ÿš€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

๋ฉ”๋ชจ๋ฆฌ Compaction

์™ธ๋ถ€ ๋‹จํŽธํ™” ํ•ด์†Œ โ€” Two-Scanner, kcompactd

๐Ÿš€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

Folio / Page Cache

struct page โ†’ folio ์ „ํ™˜, ํŽ˜์ด์ง€ ์บ์‹œ, readahead

๐Ÿš€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

NUMA

Non-Uniform Memory Access โ€” pg_data_t, zonelist, CXL ํ‹ฐ์–ด๋ง

๐Ÿš€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

Memory Cgroup

cgroup v2 ๋ฉ”๋ชจ๋ฆฌ ์ปจํŠธ๋กค๋Ÿฌ โ€” charge/uncharge, memcg OOM, PSI

๐Ÿš€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

๋ฉ”๋ชจ๋ฆฌ ์ •์ฑ…

MPOL_BIND/INTERLEAVE/PREFERRED โ€” mbind(), set_mempolicy()

๐Ÿš€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

tmpfs / shmem

๊ณต์œ  ๋ฉ”๋ชจ๋ฆฌ ํŒŒ์ผ์‹œ์Šคํ…œ โ€” /dev/shm, POSIX/SysV IPC, DRM GEM

๐Ÿš€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

zsmalloc

zswap/zram ํ•˜๋ถ€ ํŽ˜์ด์ง€ ํ• ๋‹น๊ธฐ โ€” migrated page, compaction

๐Ÿš€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

folio ๊ด€๋ จ ๋ณ€๊ฒฝ์‚ฌํ•ญ

Linux 6.x~7.0 folio ์ „ํ™˜, FOLIO_MATCH ๊ฒ€์ฆ, folio_queue

๐Ÿš€ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ

MGLRU ๊ฐœ์„ ์‚ฌํ•ญ

Multi-Gen LRU โ€” ์„ธ๋Œ€ ๊ธฐ๋ฐ˜ ํŽ˜์ด์ง€ ํšŒ์ˆ˜, Bloom ํ•„ํ„ฐ, memcg ์—ฐ๋™

4. ํŠน์ˆ˜ & ๋””๋ฒ„๊น…

๐Ÿ” ํŠน์ˆ˜ & ๋””๋ฒ„๊น…

CMA

Contiguous Memory Allocator โ€” ์—ฐ์† ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ, DMA

๐Ÿ” ํŠน์ˆ˜ & ๋””๋ฒ„๊น…

KSM

Kernel Same-page Merging โ€” stable/unstable tree, COW ๋ณ‘ํ•ฉ

๐Ÿ” ํŠน์ˆ˜ & ๋””๋ฒ„๊น…

ํŽ˜์ด์ง€ Migration

ํŽ˜์ด์ง€ ์ด๋™ โ€” ๋ฉ”๋ชจ๋ฆฌ hotplug, NUMA ๋ฐธ๋Ÿฐ์‹ฑ, CMA

๐Ÿ” ํŠน์ˆ˜ & ๋””๋ฒ„๊น…

DAMON

Data Access MONitor โ€” DAMOS ์ž๋™ ํšŒ์ˆ˜/ํ”„๋กœ๋ชจ์…˜

๐Ÿ” ํŠน์ˆ˜ & ๋””๋ฒ„๊น…

๋ฉ”๋ชจ๋ฆฌ Hotplug

๋ฉ”๋ชจ๋ฆฌ ์˜จ๋ผ์ธ/์˜คํ”„๋ผ์ธ โ€” memmap_on_memory, CXL

๐Ÿ” ํŠน์ˆ˜ & ๋””๋ฒ„๊น…

HMM

Heterogeneous Memory Management โ€” GPU/accelerator SVM

๐Ÿ” ํŠน์ˆ˜ & ๋””๋ฒ„๊น…

๋ฉ”๋ชจ๋ฆฌ ํ‹ฐ์–ด๋ง

CXL/PMEM/DRAM ๋ธŒ๋žœ๋“œ์˜ NUMA ํ‹ฐ์–ด ๊ด€๋ฆฌ

๐Ÿ” ํŠน์ˆ˜ & ๋””๋ฒ„๊น…

๋ฉ”๋ชจ๋ฆฌ Sealing

๋ฉ”๋ชจ๋ฆฌ ๋ฐ€๋ด‰ (kernel 7.0 ์‹ ๊ทœ) โ€” mseal() ์‹œ์Šคํ…œ ์ฝœ

๐Ÿ” ํŠน์ˆ˜ & ๋””๋ฒ„๊น…

Secret Memory

๋ณด์•ˆ ๋ฏผ๊ฐ ๋ฉ”๋ชจ๋ฆฌ โ€” swap out ๋ฐฉ์ง€, memfd_secret()

๐Ÿ” ํŠน์ˆ˜ & ๋””๋ฒ„๊น…

๋ฉ”๋ชจ๋ฆฌ ๋””๋ฒ„๊ทธ ๋„๊ตฌ

KASAN/KFENCE/kmemleak/page_owner โ€” ๋ฉ”๋ชจ๋ฆฌ ๊ฒ€์ฆ ๋„๊ตฌ

๐Ÿ” ํŠน์ˆ˜ & ๋””๋ฒ„๊น…

HWPoison

ํ•˜๋“œ์›จ์–ด ์˜ค๋ฅ˜ ์ฃผ์ž…๊ณผ memory_failure ์ฒ˜๋ฆฌ ํ๋ฆ„

๐Ÿ” ํŠน์ˆ˜ & ๋””๋ฒ„๊น…

CMA ๋””๋ฒ„๊น…

CMA DebugFS ์ธํ„ฐํŽ˜์ด์Šค โ€” ๋Ÿฐํƒ€์ž„ ์ƒํƒœ ๊ด€์ฐฐ, ์ˆ˜๋™ ํ• ๋‹น/ํ•ด์ œ ํ…Œ์ŠคํŠธ, ๋น„ํŠธ๋งต ๋คํ”„

5. ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ API

๐Ÿ“ก ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ API

Reverse Mapping

๋ฌผ๋ฆฌ ํŽ˜์ด์ง€ โ†’ ๊ฐ€์ƒ ์ฃผ์†Œ ์—ญ๋ฐฉํ–ฅ ๋งคํ•‘ โ€” ํŽ˜์ด์ง€ ํšŒ์ˆ˜, KSM, ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•ต์‹ฌ

๐Ÿ“ก ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ API

mlock / munlock

๋ฉ”๋ชจ๋ฆฌ ๊ณ ์ • โ€” mlock/mlockall, ์‹ค์‹œ๊ฐ„ ์‹œ์Šคํ…œ, unevictable LRU

๐Ÿ“ก ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ API

madvise

๋ฉ”๋ชจ๋ฆฌ ํžŒํŠธ โ€” MADV_DONTNEED, MADV_SEQUENTIAL, MADV_RANDOM ๋“ฑ

๐Ÿ“ก ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ API

mprotect

๋ฉ”๋ชจ๋ฆฌ ๋ณดํ˜ธ ๋ณ€๊ฒฝ โ€” PROT_READ/WRITE/EXEC, VMA ๋ถ„ํ• /๋ณ‘ํ•ฉ

๐Ÿ“ก ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ API

mremap

๋ฉ”๋ชจ๋ฆฌ ๋ฆฌ๋งคํ•‘ โ€” ๊ฐ€์ƒ ์ฃผ์†Œ ์ด๋™, MADV_DONTFORK

๐Ÿ“ก ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ API

Readahead

ํŒŒ์ผ ์„ ํ–‰ ์ฝ๊ธฐ โ€” posix_fadvise, Readahead ์•Œ๊ณ ๋ฆฌ์ฆ˜, ํŽ˜์ด์ง€ ์บ์‹œ ์›Œ๋ฐ

๐Ÿ“ก ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ API

Workingset

Workingset ํƒ์ง€ โ€” refault distance, ํŽ˜์ด์ง€ ํšŒ์ˆ˜ ์˜์‚ฌ ๊ฒฐ์ •

๐Ÿ“ก ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ API

GUP (Get User Pages)

pin_user_pages โ€” DMA-BUF, RDMA, FOLL ํ”Œ๋ž˜๊ทธ, ์‚ฌ์šฉ์ž ํŽ˜์ด์ง€ ๊ณ ์ •

6. ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ

โš™๏ธ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ

memfd

๋ฉ”๋ชจ๋ฆฌ ํŒŒ์ผ ๋””์Šคํฌ๋ฆฝํ„ฐ โ€” memfd_create, IPC ๊ณต์œ , file sealing

โš™๏ธ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ

Shrinker

์Šฌ๋ž˜๋ธŒ/dcache/icache ํšŒ์ˆ˜ ์ธํ„ฐํŽ˜์ด์Šค โ€” ๋ฉ”๋ชจ๋ฆฌ ์••๋ฐ• ๋Œ€์‘

โš™๏ธ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ

Page Table Walk

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์ˆœํšŒ API โ€” pagewalk ํ”„๋ ˆ์ž„์›Œํฌ, rmap์—์„œ ํ™œ์šฉ

โš™๏ธ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ

vmpressure

๋ฉ”๋ชจ๋ฆฌ ์••๋ ฅ ์•Œ๋ฆผ โ€” PSI ํ†ตํ•ฉ, ์ปจํ…Œ์ด๋„ˆ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

โš™๏ธ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ

List LRU

LRU ๋ฆฌ์ŠคํŠธ ๊ด€๋ฆฌ โ€” dentry/inode ์บ์‹œ ํšŒ์ˆ˜, slab shrinker ์—ฐ๋™

โš™๏ธ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ

Page Owner

ํŽ˜์ด์ง€ ํ• ๋‹น ์ถ”์  โ€” ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ์ง„๋‹จ, ํ• ๋‹น ์ •๋ณด ๊ธฐ๋ก

โš™๏ธ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ

Per-CPU ๋ฉ”๋ชจ๋ฆฌ

Per-CPU ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น โ€” percpu-vm, percpu-km, ์บ์‹œ ๋ผ์ธ ์ตœ์ ํ™”

โš™๏ธ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ

Mempool

๋ฉ”๋ชจ๋ฆฌ ํ’€ ์˜ˆ์•ฝ โ€” OOM ๋ฐฉ์ง€, I/O ๊ฒฝ๋กœ์—์„œ ์•ˆ์ „ํ•œ ํ• ๋‹น

โš™๏ธ ๋ฉ”๋ชจ๋ฆฌ ์‹œ์Šคํ…œ

VM ํ†ต๊ณ„

๊ฐ€์ƒ ๋ฉ”๋ชจ๋ฆฌ ํ†ต๊ณ„ โ€” per-CPU ์นด์šดํ„ฐ, /proc/vmstat, ๋“œ๋ฆฌํ”„ํŠธ ๊ด€๋ฆฌ

7. ํŠน์ˆ˜ ํ• ๋‹น & ๊ฐ€์ƒํ™”

๐Ÿ–ฅ๏ธ ํŠน์ˆ˜ ํ• ๋‹น & ๊ฐ€์ƒํ™”

HugeTLB

HugeTLB ํ• ๋‹น/๊ด€๋ฆฌ โ€” THP์™€ ๋ณ„๋„์˜ ๊ฑฐ๋Œ€ ํŽ˜์ด์ง€, resv_huge_pages

๐Ÿ–ฅ๏ธ ํŠน์ˆ˜ ํ• ๋‹น & ๊ฐ€์ƒํ™”

DMA Pool

DMA ๋ฒ„ํผ ํ’€ ํ• ๋‹น โ€” ๋””๋ฐ”์ด์Šค ๋“œ๋ผ์ด๋ฒ„ DMA ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ

๐Ÿ–ฅ๏ธ ํŠน์ˆ˜ ํ• ๋‹น & ๊ฐ€์ƒํ™”

Virtio Balloon

๊ฐ€์ƒ๋จธ์‹  ๋ฉ”๋ชจ๋ฆฌ ์˜ค๋ฒ„์ปค๋ฐ‹ โ€” virtio-balloon ๋“œ๋ผ์ด๋ฒ„

๐Ÿ–ฅ๏ธ ํŠน์ˆ˜ ํ• ๋‹น & ๊ฐ€์ƒํ™”

Free Page Reporting

๊ฐ€์ƒํ™” ํ™˜๊ฒฝ ๋นˆ ํŽ˜์ด์ง€ ์•Œ๋ฆผ โ€” ํžˆํผ๋ฐ”์ด์ €์— free page ๋ณด๊ณ 

๐Ÿ–ฅ๏ธ ํŠน์ˆ˜ ํ• ๋‹น & ๊ฐ€์ƒํ™”

process_vm_readv/writev

ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๋ฉ”๋ชจ๋ฆฌ ์ง์ ‘ ์ ‘๊ทผ โ€” CRIU, ๋””๋ฒ„๊ฑฐ ํ™œ์šฉ

8. ์•„ํ‚คํ…์ฒ˜ ๋น„๊ต

๐Ÿ—๏ธ ์•„ํ‚คํ…์ฒ˜ ๋น„๊ต

ARM64 vs x86_64 ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ฐจ์ด์ 

์•„ํ‚คํ…์ฒ˜๋ณ„ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ฐจ์ด โ€” ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ”, TLB, ๋ฐฐ๋ฆฌ์–ด, Huge Page, DMA, NUMA

๐Ÿ—๏ธ ์•„ํ‚คํ…์ฒ˜ ๋น„๊ต

Linux 6.x โ†’ 7.0 ๋ณ€๊ฒฝ์  ์š”์•ฝ

Linux 6.x์—์„œ 7.0์œผ๋กœ์˜ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ฃผ์š” ๋ณ€๊ฒฝ์‚ฌํ•ญ ์š”์•ฝ

๐Ÿ—๏ธ ์•„ํ‚คํ…์ฒ˜ ๋น„๊ต

MMU ์—†๋Š” ์‹œ์Šคํ…œ

NOMMU ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ โ€” vm_region, ์ „์—ญ region ํŠธ๋ฆฌ, MMU ๋ฏธ์ง€์› ์‹œ์Šคํ…œ

9. ์‹ค์ „ & ์‹ฌํ™”

๐Ÿ’ก ์‹ค์ „ & ์‹ฌํ™”

BPF ๋ฉ”๋ชจ๋ฆฌ ์ œ์–ด

BPF ํ”„๋กœ๊ทธ๋žจ/๋งต memcg ๊ณ„์ •, kfunc ํ†ต๊ณ„ ์ฝ๊ธฐ

๐Ÿ’ก ์‹ค์ „ & ์‹ฌํ™”

์ปจํ…Œ์ด๋„ˆ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์‹ค์ „

Docker/Kubernetes ๋ฉ”๋ชจ๋ฆฌ ์„ค์ •, cgroup v2 ํ™œ์šฉ

๐Ÿ’ก ์‹ค์ „ & ์‹ฌํ™”

๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜ ์ถ”์  ์‹ค์Šต

kmemleak/page_owner/KASAN ๋ˆ„์ˆ˜ ์ถ”์ 

๐Ÿ’ก ์‹ค์ „ & ์‹ฌํ™”

mTHP (multi-size THP)

๋‹ค์ค‘ ํฌ๊ธฐ ํˆฌ๋ช… ๊ฑฐ๋Œ€ ํŽ˜์ด์ง€, order๋ณ„ ํ• ๋‹น

๐Ÿ’ก ์‹ค์ „ & ์‹ฌํ™”

virtio-mem ๊ฐ€์ƒํ™”

๊ฐ€์ƒ๋จธ์‹  ๋ฉ”๋ชจ๋ฆฌ ํ•ซํ”Œ๋Ÿฌ๊ทธ, SBM/BBM ๋ชจ๋“œ

๐Ÿ’ก ์‹ค์ „ & ์‹ฌํ™”

MMU ์•Œ๋ฆผ

MMU ์•Œ๋ฆผ ๋“ฑ๋ก/ํ•ด์ œ, interval notifier, ๊ฐ€์ƒํ™” ์—ฐ๋™

๐Ÿ’ก ์‹ค์ „ & ์‹ฌํ™”

์‹คํ–‰ ๋ฉ”๋ชจ๋ฆฌ

์‹คํ–‰ ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น, ROX ์บ์‹œ, W^X ๋ณดํ˜ธ

๐Ÿ’ก ์‹ค์ „ & ์‹ฌํ™”

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๊ฒ€์ฆ

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ๋ฌด๊ฒฐ์„ฑ ๊ฒ€์‚ฌ โ€” ์ด์ค‘ ์“ฐ๊ธฐ ๋งคํ•‘, ์ž˜๋ชป๋œ ๊ณต์œ  ํƒ์ง€

๐Ÿ’ก ์‹ค์ „ & ์‹ฌํ™”

๋ฐฑ์—”๋“œ ๋””๋ฐ”์ด์Šค

dirty/writeback ์ธํ”„๋ผ โ€” backing_dev_info, bdi_writeback

๐Ÿ’ก ์‹ค์ „ & ์‹ฌํ™”

์œ ํœด ํŽ˜์ด์ง€

์œ ํœด ํŽ˜์ด์ง€ ์ถ”์  โ€” /sys/kernel/mm/page_idle/bitmap, DAMON ์—ฐ๋™

๐Ÿ’ก ์‹ค์ „ & ์‹ฌํ™”

MMU Gather

TLB ํ”Œ๋Ÿฌ์‹œ ๋ฐฐ์น˜ ์ตœ์ ํ™” โ€” mmu_gather, ์ธ์ฝ”๋”ฉ ํŽ˜์ด์ง€, RCU ํ…Œ์ด๋ธ” ํ•ด์ œ

๐Ÿ’ก ์‹ค์ „ & ์‹ฌํ™”

KMSAN (๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „ ๊ฒ€์ฆ)

์ปค๋„ ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์ „ ๊ฒ€์ฆ โ€” ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ฉ”๋ชจ๋ฆฌ ์ฝ๊ธฐ ํƒ์ง€, ๊ธฐ์› ์ถ”์ 

๐Ÿ’ก ์‹ค์ „ & ์‹ฌํ™”

์‚ฌ์šฉ์ž ๊ณต๊ฐ„ ๋ณต์‚ฌ

์ปค๋„-์‚ฌ์šฉ์ž ๋ฉ”๋ชจ๋ฆฌ ๋ณต์‚ฌ ํ•˜๋“œ๋‹ โ€” ์Šคํƒ/ํžˆํ”„/ํ…์ŠคํŠธ ์˜์—ญ ๊ฒ€์ฆ, ๋ณด์•ˆ ์ทจ์•ฝ์  ์ฐจ๋‹จ

๐Ÿ’ก ์‹ค์ „ & ์‹ฌํ™”

ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์ผ๋ฐ˜

์•„ํ‚คํ…์ฒ˜ ๋…๋ฆฝ ํŽ˜์ด์ง€ ํ…Œ์ด๋ธ” ์กฐ์ž‘ โ€” PTE ๋งคํ•‘/์ž ๊ธˆ, THP ์ฒ˜๋ฆฌ, ๋น„๋™๊ธฐ ํ•ด์ œ

10. ๋‚ด๋ถ€ & ์ดˆ๊ธฐํ™” & ๋„๊ตฌ

๋‚ด๋ถ€ & ์ดˆ๊ธฐํ™” & ๋„๊ตฌ

๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ๋‚ด๋ถ€

MM ๋‚ด๋ถ€ ํ—ค๋” โ€” GFP ๋งˆ์Šคํฌ, ํ• ๋‹น ํ”Œ๋ž˜๊ทธ, PTE ๋ฐฐ์น˜, ๋‚ด๋ถ€ ๊ตฌ์กฐ์ฒด/ํ•จ์ˆ˜ ์„ ์–ธ

๋‚ด๋ถ€ & ์ดˆ๊ธฐํ™” & ๋„๊ตฌ

MM ์ดˆ๊ธฐํ™”

์ปค๋„ ๋ถ€ํŒ… ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ ์ดˆ๊ธฐํ™” โ€” zone/node ์„ค์ •, memmap ์ดˆ๊ธฐํ™”, deferred init

๋‚ด๋ถ€ & ์ดˆ๊ธฐํ™” & ๋„๊ตฌ

๋ฉ”๋ชจ๋ฆฌ ์ •๋ณด ํ‘œ์‹œ

๋ฉ”๋ชจ๋ฆฌ ์ƒํƒœ ์ถœ๋ ฅ ์œ ํ‹ธ๋ฆฌํ‹ฐ โ€” /proc/meminfo, dmesg, panic ์‹œ ๋ฉ”๋ชจ๋ฆฌ ์ •๋ณด ํ‘œ์‹œ