기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AL2023 커널에서 Multi-Gen LRU(MGLRU) 사용
Multi-Gen LRU
기존 LRU 메커니즘은 2개 목록 모델(활성 및 비활성)을 사용하여 페이지 사용량을 추적하므로 대규모 작업 세트가 있는 최신 워크로드에서는 비효율적일 수 있습니다. MGLRU는 이를 여러 페이지의 "세대"로 대체하므로 커널이 더 세분화된 노후화 정보를 기반으로 더 스마트한 결정을 내릴 수 있습니다.
MGLRU의 이점은 다음과 같습니다.
-
더 나은 회수 결정: 콜드(미사용) 페이지를 더 정확하게 식별합니다.
-
지연 시간 단축 및 처리량 향상: 특히 주소 공간이 크거나 동시 프로세스가 많은 워크로드에 적합합니다.
-
캐시 보존 개선: 최근에 사용된 페이지는 조기에 제거될 가능성이 낮습니다.
-
확장 가능하고 잠금 효율적인 설계: CPUs.
구성 및 튜닝
커널 구성CONFIG_LRU_GEN
은 AL2023 커널에서 활성화됩니다. 이렇게 하면 MGLRU에서 컴파일되지만 기본적으로 활성화되지는 않습니다.
/sys/kernel/mm/lru_gen/enabled
파일을 사용하여 MGLRU를 활성화하고 조정할 수 있습니다. 값은 비트 마스크입니다. 일부 구성 요소에 바람직하지 않은 부작용이 없는 한 모든 구성 요소를 활성화하는 것이 좋습니다.
Bit | Components |
---|---|
0 |
다중 생성 LRU의 기본 스위치입니다. |
1 |
MMU가 설정할 때 리프 페이지 테이블 항목의 액세스된 비트를 큰 배치로 지웁니다(예: x86). 이 동작은 이론적으로 잠금 경합()을 악화시킬 수 있습니다mmap_lock . 비활성화된 경우 멀티세대 LRU는 핫 페이지를 연속적으로 매핑하는 워크로드에서 약간의 성능 저하를 겪게 되며, 액세스한 비트는 더 적은 수의 더 큰 배치로 지울 수 있습니다. |
2 |
MMU가 설정할 때(예: x86) 리프가 아닌 페이지 테이블 항목에서도 액세스된 비트를 지웁니다. 이 동작은 Intel 및 AMD 이외의 x86 품종에서는 확인되지 않았습니다. 비활성화되면 다중 세대 LRU의 성능이 무시할 수 있는 수준으로 저하됩니다. |
[yYnN] |
위의 모든 구성 요소를 활성화/비활성화합니다. |
MGLRU를 활성화하는 방법의 예:
[ec2-user ~]$
echo y >/sys/kernel/mm/lru_gen/enabled
이렇게 하면 모든 구성 요소가 활성화됩니다.
[ec2-user ~]$
cat /sys/kernel/mm/lru_gen/enabled
0x0007