리눅스 커널 메모리 관리(mm) 서브시스템은 mm/ 디렉터리에만 C 파일이 165개 있고, 릴리스마다 340~550개 커밋이 들어온다. 관심 있는 주제의 패치를 쓰려면 먼저 코드가 어느 트리를 거쳐 메인라인에 들어가는지, 누가 리뷰하는지, 지금 무엇이 논의되는지를 알아야 한다. 2026년에는 오랜 메인테이너 Andrew Morton이 물러나기 시작하면서 이 흐름 자체가 바뀌고 있다.
이 시리즈는 2026년 10월 30일 메인라인(7.4 머지 윈도우 2주차)을 기준으로 mm 서브시스템의 현재 상황을 정리한다. 1편인 이 글에서는 mm 트리의 브랜치 구조와 바뀐 메인테이너 체제를 먼저 본다. 이어서 릴리스별 변경량, 리뷰 현황, 커밋에서 토론까지 따라가는 방법을 정리한다. 수치는 모두 아래에 보인 git 명령을 실제로 실행해서 얻었다.
이 시리즈의 다른 글
mm 트리의 브랜치 구조
mm 패치 대부분은 Andrew Morton의 akpm/mm.git을 거친다. 패치는 아래 브랜치를 차례로 통과하며 테스트 기간을 쌓는다.
| 브랜치 | 역할 | linux-next 포함 |
|---|---|---|
mm-new | 새로 받은 패치가 먼저 쌓이는 곳. 리뷰가 덜 끝난 시리즈도 들어온다 | 아니오 |
mm-unstable | 다음 머지 윈도우를 노리는 시리즈. 리뷰 결과에 따라 빠지거나 다시 쓰인다 | 예 |
mm-stable | 머지 윈도우에 리누스에게 보낼 확정본. 이 단계부터는 커밋 해시가 고정된다 | 예 |
mm-hotfixes-unstable / -stable | 현재 rc 사이클에 들어갈 버그 수정 | 예 |
mm-nonmm-unstable / -stable | mm 밖이지만 Morton이 받아주는 패치(lib/, kernel/ 일부 등) | 예 |
메인라인과 mm 브랜치를 함께 받아 두면 각 단계에 무엇이 남아 있는지 바로 셀 수 있다. 커밋 메타데이터만 필요하므로 blob 없는 클론으로 충분하다.
git clone --filter=blob:none --no-checkout \
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
cd linux
git remote add mm https://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm.git
git fetch mm mm-stable mm-unstable mm-new mm-hotfixes-unstable
for b in mm-stable mm-unstable mm-new mm-hotfixes-unstable; do
echo "$b: base=$(git describe --tags --abbrev=0 mm/$b)" \
"ahead_of_master=$(git rev-list --count origin/master..mm/$b)"
donemm-stable: base=v7.3 ahead_of_master=0
mm-unstable: base=v7.3 ahead_of_master=63
mm-new: base=v7.3 ahead_of_master=118
mm-hotfixes-unstable: base=v7.3 ahead_of_master=57
mm-stable이 0인 이유는 7.4 머지 윈도우에서 이미 전부 메인라인에 들어갔기 때문이다. 지금 mm-unstable에 남은 63개는 버그 수정과 작은 개선이 중심이다. 7.5용 기능 시리즈는 rc1 이후에 본격적으로 쌓인다.
2026년 메인테이너 체제 변화
2026년 4월 21일 Andrew Morton은 mm 메인테이너 역할에서 단계적으로 물러나겠다고 밝혔다. 5월 LSFMM+BPF 서밋에서는 통합 트리 관리를 David Hildenbrand가 맡기로 했다. 하위 영역은 별도 트리로 옮겨 가는 방향이다. 7.4 머지 윈도우의 mm 관련 풀 리퀘스트를 보면 이 변화가 이미 드러난다.
git log --merges --format='%h %ci %s' v7.3..origin/master \
| grep -E 'akpm/mm|kernel/git/mm/'8a36f53fd5e 2026-10-27 12:23:17 -1000 Merge tag 'mm-stable-2026-10-25-19-27' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
7d1f84f1b94 2026-10-27 12:08:22 -1000 Merge tag 'mm-nonmm-stable-2026-10-25-14-57' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
394023fbe34 2026-10-25 17:27:19 -1000 Merge tag 'memblock-v7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/mm/memblock
7a78f7ba9f2 2026-10-23 09:51:16 -1000 Merge tag 'slab-for-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/mm/slab
2ee2475e15b 2026-10-23 09:13:11 -1000 Merge tag 'mm-core-7.4-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/mm/core
c5fd5e67c78 2026-10-23 07:42:11 -1000 Merge tag 'mm-stable-2026-10-19-21-33' of git://git.kernel.org/pub/scm/linux/kernel/git/akpm/mm
kernel/git/mm/ 아래의 공동 네임스페이스가 새로 생겼다. 7.2까지 slab은 vbabka/slab, memblock은 rppt/memblock처럼 개인 트리에서 왔다. 7.4에서는 Hildenbrand가 mm/core 트리로 메모리 핫플러그와 GUP 변경을 직접 보냈다.
| 풀 리퀘스트 (7.4) | 보낸 사람 | 규모·내용 |
|---|---|---|
mm-stable-2026-10-19 | Andrew Morton | 539 커밋. mm 본체의 1차분 |
mm-stable-2026-10-25 | Andrew Morton | 213 커밋. 2차분과 버그 수정 65건 |
mm-core-7.4-rc1 | David Hildenbrand | 메모리 핫플러그(MEMHP), GUP |
slab-for-7.4 | Harry Yoo | slab 할당자. sheaf prefill 개선 등 |
memblock-v7.4-rc1 | Mike Rapoport | 부팅 초기 메모리 할당자 |
MAINTAINERS 파일에는 MEMORY MANAGEMENT - * 항목이 22개 있다. 패치를 보낼 때 수신자를 고르는 기준이 되므로 관심 영역의 항목은 미리 읽어 둔다.
git show origin/master:MAINTAINERS > MAINTAINERS.txt
grep -c '^MEMORY MANAGEMENT' MAINTAINERS.txt
awk 'index($0,"MEMORY MANAGEMENT - SWAP")==1{p=1} p&&/^$/{exit} p' MAINTAINERS.txt \
| grep -E '^(M|R|T):'22
M: Andrew Morton <akpm@linux-foundation.org>
M: Chris Li <chrisl@kernel.org>
M: Kairui Song <kasong@tencent.com>
R: Kemeng Shi <shikemeng@huaweicloud.com>
R: Nhat Pham <nphamcs@gmail.com>
R: Baoquan He <baoquan.he@linux.dev>
R: Barry Song <baohua@kernel.org>
R: Youngjun Park <youngjun.park@lge.com>
같은 방법으로 주요 영역의 메인테이너(M)와 트리(T)를 뽑으면 아래와 같다. 리뷰어(R)는 영역마다 5~10명이라 표에서 뺐다.
| MAINTAINERS 항목 | 메인테이너(M) | 트리(T) |
|---|---|---|
| MEMORY MANAGEMENT – CORE | Andrew Morton, David Hildenbrand | akpm/mm |
| MEMORY MANAGEMENT – MEMORY MAP | Muchun Song, Mike Rapoport, David Hildenbrand | mm/core.git memmap |
| MEMORY MANAGEMENT – THP | Andrew Morton, David Hildenbrand | akpm/mm |
| MEMORY MANAGEMENT – SWAP | Andrew Morton, Chris Li, Kairui Song | (명시 없음, akpm/mm 경유) |
| MEMORY MANAGEMENT – RECLAIM | Andrew Morton, Johannes Weiner | (명시 없음) |
| MEMORY MANAGEMENT – PAGE ALLOCATOR | Andrew Morton, Vlastimil Babka | (명시 없음) |
| MEMORY MAPPING | Andrew Morton, Liam R. Howlett, Lorenzo Stoakes | akpm/mm |
| SLAB ALLOCATOR | Vlastimil Babka, Harry Yoo, Andrew Morton | mm/slab.git |
| MEMBLOCK AND MM INITIALIZATION | Mike Rapoport | mm/memblock.git |
| CONTROL GROUP – MEMORY (MEMCG) | Johannes Weiner, Michal Hocko, Roman Gushchin, Shakeel Butt | (명시 없음) |
| DAMON | SJ Park | akpm/mm, sj/linux.git damon/next |
| HUGETLB SUBSYSTEM | Muchun Song, Oscar Salvador | (명시 없음) |
릴리스별 변경량
for r in v6.19..v7.0 v7.0..v7.1 v7.1..v7.2 v7.2..v7.3 v7.3..origin/master; do
printf "%-22s commits=%4d authors=%3d\n" $r \
$(git rev-list --count --no-merges $r -- mm/) \
$(git log --no-merges --format=%ae $r -- mm/ | sort -u | wc -l)
donev6.19..v7.0 commits= 340 authors= 99
v7.0..v7.1 commits= 401 authors= 99
v7.1..v7.2 commits= 341 authors=104
v7.2..v7.3 commits= 547 authors=122
v7.3..origin/master commits= 540 authors=119
7.3부터 mm/ 커밋이 1.5배로 늘었다. 마지막 줄은 아직 rc1 전이라 7.4 최종 수치는 조금 더 늘어난다. 7.4 머지 윈도우에서 mm/에 커밋이 많은 개발자는 아래와 같다.
git shortlog -sn --no-merges v7.3..origin/master -- mm/ | head -10 78 SJ Park
42 Lorenzo Stoakes (ARM)
35 Muchun Song
23 Kairui Song
18 Tal Zussman
17 David Hildenbrand (Arm)
14 Gregory Price
14 Shakeel Butt
13 Kiryl Shutsemau (Meta)
12 Christian Brauner
이름이 곧 주제 지도다. SJ Park은 DAMON, Lorenzo Stoakes는 VMA, Muchun Song은 vmemmap과 HugeTLB, Kairui Song은 스왑과 MGLRU를 주로 고친다.
리뷰 현황과 LLM 도구
Morton은 LSFMM+BPF 2026에서 “소수가 리뷰 대부분을 떠맡는다”고 지적했다. 7.4 머지 윈도우의 Reviewed-by/Acked-by 태그를 세어 보면 그 말이 수치로 보인다.
R=v7.3..origin/master
git log --no-merges --format=%b $R -- mm/ | grep -i '^Reviewed-by:' \
| sed 's/ <.*//' | sort | uniq -c | sort -rn | head -6
git log --no-merges --format=%b $R -- mm/ | grep -i '^Acked-by:' \
| sed 's/ <.*//' | sort | uniq -c | sort -rn | head -3
echo "reviewers=$(git log --no-merges --format=%b $R -- mm/ \
| grep -i '^Reviewed-by:' | sed 's/ <.*//' | sort -u | wc -l)" 55 Reviewed-by: Zi Yan
43 Reviewed-by: Lorenzo Stoakes (ARM)
40 Reviewed-by: SJ Park
35 Reviewed-by: Lance Yang
34 Reviewed-by: Baolin Wang
31 Reviewed-by: Barry Song
135 Acked-by: David Hildenbrand (Arm)
34 Acked-by: Muchun Song
30 Acked-by: Qi Zheng
reviewers=69
작성자는 119명인데 리뷰어는 69명이고, Hildenbrand 혼자 135개 커밋에 Ack를 달았다. 540개 중 111개는 리뷰·Ack 태그가 하나도 없다. Matthew Wilcox는 입문하려는 사람에게 “패치 리뷰부터 시작하라”고 권한다. 리뷰어가 부족한 지금은 그 조언이 더 유효하다.
LLM 도구 사용도 빠르게 늘고 있다. 커널은 LLM 도움을 받은 패치에 Assisted-by: 태그를 붙이게 한다.
for r in v6.19..v7.0 v7.0..v7.1 v7.1..v7.2 v7.2..v7.3 v7.3..origin/master; do
printf "%-22s assisted-by=%3d\n" $r \
$(git log --no-merges --format=%H -i --grep='^Assisted-by:' $r -- mm/ | wc -l)
donev6.19..v7.0 assisted-by= 0
v7.0..v7.1 assisted-by= 3
v7.1..v7.2 assisted-by= 13
v7.2..v7.3 assisted-by= 23
v7.3..origin/master assisted-by= 66
7.4에서는 mm/ 커밋의 12%가 LLM 도움을 받았다. 커뮤니티 반응은 결과물의 품질에 따라 갈린다.
| 사례 | 반응 |
|---|---|
| Kiryl Shutsemau, userfaultfd 기반 VM 작업 집합 추적 (7.3 머지) | 설계를 LLM과 토론하고, 생성 코드를 8~10회 직접 검토했다. 7번 리비전 동안 LLM 사용 자체는 문제가 되지 않았다 |
| Rik van Riel, 1GB 페이지 할당 안정화 40패치 시리즈 | “지금 상태로는 머지 불가”라는 평가를 받았다. 사람 손으로 다시 구현해야 설계 리뷰가 가능하다는 결론이 났다 |
| Sashiko (자동 패치 리뷰 시스템) | Morton은 “또 하나의 방어선”으로 보지만, Hildenbrand는 신규 리뷰어의 의욕을 꺾지 않도록 공개 리스트에 자동 리뷰를 올리지 말자고 주장했다 |
커밋에서 토론까지 따라가기
mm 커밋에는 Link: 트레일러로 lore.kernel.org 주소가 붙는다. 머지된 기능의 설계 논쟁을 보려면 이 링크부터 연다. 7.2에 들어간 khugepaged mTHP collapse 커밋을 예로 든다.
git log --no-merges --format='%h %s' v7.1..v7.2 -- mm/khugepaged.c | grep -i mthp
git log -1 --format='%(trailers)' 90ed32d0005 | grep -vE '^Cc:'5fea7eb1a33 mm/khugepaged: avoid unnecessary mTHP collapse attempts
90ed32d0005 mm/khugepaged: introduce mTHP collapse support
ceaa0b64131 mm/khugepaged: improve tracepoints for mTHP orders
b5b8b329c4b mm/khugepaged: add per-order mTHP collapse failure statistics
3a460f245f0 mm/khugepaged: skip collapsing mTHP to smaller orders
472ebd691d9 mm/khugepaged: generalize hugepage_vma_revalidate for mTHP support
Link: https://lore.kernel.org/20260605161422.213817-1-npache@redhat.com
Link: https://lore.kernel.org/20260605161422.213817-2-npache@redhat.com
Link: https://gitlab.com/npache/khugepaged_mthp_test [1]
Link: https://lore.kernel.org/lkml/20250515033857.132535-1-npache@redhat.com/ [2]
Co-developed-by: Dev Jain <dev.jain@arm.com>
Signed-off-by: Dev Jain <dev.jain@arm.com>
Signed-off-by: Nico Pache <npache@redhat.com>
Reviewed-by: Wei Yang <richard.weiyang@gmail.com>
Reviewed-by: Lance Yang <lance.yang@linux.dev>
Reviewed-by: Baolin Wang <baolin.wang@linux.alibaba.com>
Reviewed-by: Lorenzo Stoakes <ljs@kernel.org>
Reviewed-by: Zi Yan <ziy@nvidia.com>
Acked-by: Usama Arif <usama.arif@linux.dev>
Acked-by: David Hildenbrand (Arm) <david@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
이 커밋에는 Cc:가 50명 넘게 붙어 있다. 그중 리뷰 태그를 단 사람이 THP 영역에서 실제로 코드를 읽는 사람들이다. 메일링 리스트 스레드는 아래 도구로 받는다.
| 목적 | 명령/위치 |
|---|---|
| 시리즈 전체를 로컬 브랜치에 적용 | b4 shazam <message-id> |
| 시리즈를 mbox로 받기 | b4 am <message-id> |
| 리비전 간 차이 비교 | b4 diff <message-id> |
| linux-mm 아카이브 검색 | https://lore.kernel.org/linux-mm/?q=s:"키워드" |
| 주간 mm 패치 목록 | LWN 주간판 “Patches and updates → Memory management” |
| 수신자 결정 | ./scripts/get_maintainer.pl <patch> |
기여를 시작하는 경로
| 경로 | 할 일 | 근거 |
|---|---|---|
| 리뷰 | 관심 영역 시리즈에 테스트 결과나 Reviewed-by를 단다 | 리뷰어 69명 대 작성자 119명. 메인테이너들이 가장 원하는 기여 |
| selftests/mm | 깨진 테스트 수정, 커버리지 추가 | 7.4에서 khugepaged·GUP·NOMMU 테스트 시리즈가 여럿 머지됐다 |
| DAMON | KUnit 테스트, 문서, 작은 버그 수정 | 7.4 mm/ 커밋 1위 영역. 메인테이너 프로필 문서(Documentation/mm/damon/maintainer-profile.rst)가 있다 |
| folio 전환·정리 | 남은 struct page 사용처를 folio API로 바꾼다 | page_swap_entry(), PG_private 제거처럼 7.4에도 계속 머지된다 |
| 회귀 재현 | mm-unstable/mm-new를 빌드해 워크로드로 돌린다 | Morton이 말한 “여러 겹의 방어선” 중 테스트 단계 |
주의사항
- 패치는 메인라인이 아니라 최신
mm-unstable또는mm-new위에서 만든다. mm 트리에는 메인라인에 없는 변경이 수백 개 쌓여 있어 충돌이 흔하다. - 머지 윈도우 중에는 새 기능 시리즈를 보내지 않는다. 메인테이너가 풀 리퀘스트를 처리하는 기간이라 리뷰가 늦어진다.
- LLM이 만든 코드를 검토 없이 대량으로 보내지 말 것. van Riel 사례처럼 아이디어가 좋아도 설계 리뷰가 막힌다. LLM을 썼다면
Assisted-by:태그를 붙인다. - 자동 리뷰 도구의 출력을 linux-mm에 그대로 붙이지 말 것. Hildenbrand가 LSFMM+BPF에서 이를 명시적으로 반대했다.
- 트리 구조는 아직 바뀌는 중이다. 패치를 보내기 전에 MAINTAINERS의
T:항목을 다시 확인한다. Hildenbrand는 개발 모델을 정할 워킹 그룹을 만들겠다고 했다.
마무리
mm 개발은 mm-new → mm-unstable → mm-stable → 메인라인 순서로 흐른다. 2026년부터는 kernel/git/mm/ 아래 하위 트리가 늘고 있다. 변경량은 7.3부터 크게 늘었지만 리뷰어 수는 그만큼 늘지 않았다. 따라서 리뷰와 테스트가 가장 확실한 입문 경로다. 다음 글에서는 7.0부터 7.4까지 실제로 머지된 변화를 주제별로 정리한다.