Linux 7.2의 MGLRU 개선으로 인한 성능 향상: MongoDB 처리량 30~100% 증가
요약
Linux 7.2 커널의 메모리 관리(MM) 기능 개선을 통해 MongoDB와 같은 워크로드의 처리량을 최대 100%까지 향상시켰습니다. MGLRU 개선, 0차 페이지 해제 효율화, DAMON 확장 등 다양한 시스템 성능 최적화 내용을 다룹니다.
핵심 포인트
- MGLRU 개선으로 MongoDB 처리량 30~100% 향상
- 0차 페이지 일괄 해제를 통한 vmalloc 성능 저하 해결
- DAMON의 일시 중지/재개 및 데이터 속성 모니터링 기능 추가
- KASAN 속도 향상을 위한 비효율적 태깅 제거
- mmap 미스 히트 계측 강화를 통한 I/O 및 실행 시간 단축
Linux 7.2의 MGLRU 개선으로 인한 성능 향상: MongoDB 처리량 30~100% 증가

Linux 7.2 커널의 MM (Memory Management) 기능 변경 사항 중 제가 가장 흥미롭다고 느낀 항목들은 다음과 같습니다:
-
MGLRU의 reclaim loop (회수 루프) 및 dirty writeback (더티 쓰기백) 처리 개선. 이 패치 시리즈는 YCSB를 사용하는 MongoDB와 같은 일부 워크로드에서 최대 30%의 성능 향상을 가져옵니다. 느린 I/O 환경에서는 MongoDB와 같은 일부 벤치마크에서 최대 100%의 이득을 볼 수 있는 반면, 30%의 향상은 NVMe 스토리지 환경에서의 결과였습니다. MGLRU의 reclaim loop 및 dirty folio (더티 폴리오) 처리를 개선하는 패치 시리즈의 벤치마크 결과는 매우 놀랍습니다. 다른 어떤 워크로드들이 이 개선의 혜택을 받을 수 있을지 지켜보는 것도 흥미로울 것입니다.
-
0-order pages (0차 페이지)를 일괄적으로 연속된 세트로 해제함으로써 더 효율적으로 처리하여 더 빠르게 해제합니다. 결과적으로 이는 작년에 vmalloc 성능에서 나타났던 일부 성능 저하 문제를 해결합니다. 이는 주로 vfree() 및 frozen pages (동결된 페이지)의 해제에 이점을 제공합니다.
-
현재 상태를 잃지 않고 DAMON을 일시 중지 및 재개할 수 있는 기능 지원.
-
단순한 액세스(accesses) 외에 일반적인 데이터 속성을 모니터링할 수 있도록 DAMON 확장.
-
스택 및 페이지 테이블에 대한 비효율적인 태깅을 제거하여 Kernel Address Sanitizer (KASAN) 속도 향상.
-
mmap_miss hit (mmap 미스 히트) 계측을 강화하여 동기식 mmap readahead (mmap 리드어헤드) I/O를 크게 줄이고, sparse random (희소 랜덤) 및 strided (스트라이드) 메모리 액세스 워크로드의 실행 시간과 읽기 기가바이트 수를 단축합니다. 이는 꽤 괜찮은 개선을 보여주고 있습니다.
-
더 나은 동기화와 향상된 성능을 제공하기 위해 folio 내에서 anon (익명) 및 shared memory (공유 메모리) swap 할당과 charging (청구)을 통합.
이미 Git에 병합된 메인 MM pull request를 통해 Linux 7.2의 다양한 MM 변경 사항에 대한 더 자세한 내용을 확인할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Phoronix의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기