Ryotta's Linux 7.0 MM

메모리 관리 서브시스템 완전 분석

Ryotta's Linux 7.0 MM 64개 문서 · 130개 이미지

리눅스 커널 메모리 관리 서브시스템을 소스 코드 기반으로 분석한 한국어 기술 문서 저장소입니다.

64 문서
8 카테고리
130 이미지
64 검증완료
0 추가됨
3 계획

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 처리 흐름

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 경로에서 안전한 할당

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으로의 메모리 관리 주요 변경사항 요약

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 연동