MGLRU-FG가 일부 테스트에서 Linux 성능을 최대 10~40% 향상시킵니다
요약
Linux 개발자가 MGLRU의 주파수 기반 승격(MGLRU-FG) 최신 패치를 배포하여 Linux 커널 빌드 벤치마크 성능을 향상시켰습니다. 이 개선은 폴리오 참조 횟수를 기반으로 한 선제적 승격을 도입하고, 기존 LRU 메커니즘의 비트 사용량을 줄여 메모리 관리 효율성을 높였습니다. 다양한 테스트에서 최대 40%의 성능 향상과 낮은 재실패율을 보였으며, 특히 zRAM 스왑 환경에서 큰 개선 효과를 나타냈습니다.
핵심 포인트
- MGLRU-FG는 주파수 기반 승격을 통해 메모리 관리 효율성을 높였습니다.
- 다양한 워크로드 테스트에서 최대 40%의 성능 향상을 기록했습니다.
- zRAM 사용 시 Chromium 및 Node.js 등에서 76% 개선 효과를 보였습니다.
- 메모리 플래그 사용량을 줄여 LRU 계층 구조를 더 정확하게 만들었습니다.
MGLRU-FG가 일부 테스트에서 Linux 성능을 최대 10~40% 향상시킵니다

Linux 개발자 Kairui Song이 이번 주말에 MGLRU의 주파수 기반 승격(frequency guided promotion)인 MGLRU-FG에 대한 최신 패치를 배포했습니다. 이 최신 패치로 Linux 커널 빌드 벤치마크 성능이 더욱 향상되었으며 전반적으로 좋은 결과를 보여주고 있습니다. Song은 이번 패치에서 MGLRU에 주파수 기반 승격을 적용한 내용에 대해 다음과 같이 설명합니다:
"MGLRU의 제거 시간 계층-PID 보호 기능에 접근 시간 주파수 기반 승격 기능을 보완했습니다. 폴리오(folio)의 참조(접근) 횟수를 기반으로 구축된 통일된 일련의 헬퍼들을 도입했습니다.
접근이 발생할 때마다 폴리오 플래그(refs)에 저장된 폴리오의 참조 횟수가 증가합니다. refs는 이전과 마찬가지로 로그 계층(logarithmic tier)에 매핑되지만, 더 공식적인 비트 정의를 사용하며 몇 가지 특별한 임계값들이 도입되었습니다: LRU_REFS_REFERENCED (1), LRU_REFS_WORKINGSET (2), LRU_REFS_PROTECTED (3), 그리고 LRU_REFS_MAX (7). refs가 특정 임계값에 도달하면, PID 컨트롤러가 작동하기를 기다리는 대신 폴리오가 선제적으로 승격됩니다.
또한 PG_workingset과 PG_referenced의 MGLRU 사용을 단순화했습니다. 이들은 refs 카운트의 낮은 두 비트가 되며, 높은 비트는 LRU_REFS_MASK에서 제공합니다. 이는 최대 참조 횟수 7을 기록하는 데 추가로 필요한 비트가 단 하나이므로, MGLRU의 원래 refs 카운트 비트 사용량을 줄이고 MGLRU의 refs 회계(accounting)를 더 정확하게 만듭니다."
최종 사용자에게 중요한 그리고 가장 주목할 만한 것은 최종 결과입니다:
요약하자면, 다양한 테스트에서 10~40% 더 높은 성능 또는 낮은 재실패율을 확인할 수 있으며, 특정 워크로드는 실행 시간이 극적으로 단축되는 동시에 페이지 플래그 사용량을 1비트 줄입니다. 이러한 개선은 주로 LRU가 더 뜨거운 작업 집합(hotter workingset)을 구별하는 능력의 실제적인 향상에서 비롯됩니다. 다양한 아키텍처, 데스크톱 및 Android의 여러 서버에 걸쳐 테스트한 결과 모두 매우 유망한 결과를 보여줍니다. V2와 비교했을 때, V3는 anon 오버-재할당(over-reclaim)의 영향을 더 많이 받지만, 전반적으로 더 나은 결과를 제공하며, 이는 나중에 또는 별도로 수정되어야 할 문제입니다.
이미 사용하기 매우 편리하고 안정적이며 성능도 좋지만, Active/Inactive 읽기 변경을 포함하는 LRU에 대한 주요 변경 사항이므로 RFC(Request for Comments)로 유지할 것입니다. 좋은 방향이라고 생각합니다.
Linux 커널 빌드 테스트는 96개의 작업을 사용하여 메모리 재할당 압력을 높일 때 약 1초 더 빠르거나 거의 10초 더 빨라졌습니다. MongoDB는 MGLRU-FG를 사용했을 때 13.5% 더 빨랐습니다. zRAM을 스왑으로 사용하는 Chromium 및 Node.js 테스트에서는 76%의 개선을 보였습니다. FIO는 최대 11% 높은 처리량(throughput)을 기록했습니다.
Linux 커널용 MGLRU-FG 작업에 대한 자세한 내용은 이 LKML 패치 시리즈를 통해 확인할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Phoronix의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기