/sys/kernel/mm/lru_gen/enabled의 다양한 값은 무엇을 의미합니까?

/sys/kernel/mm/lru_gen/enabled의 다양한 값은 무엇을 의미합니까?

내 데스크탑에 다세대 LRU가 활성화되어 있는지 확인하고 싶어서 /sys/kernel/mm/lru_gen/enabled. 로 설정되어 있었는데 0x0007이 값을 어떻게 활용해야 할지 몰라서 다른 장치에서 값을 확인해 봤는데 거기에서 커널을 직접 구성하고 값을 주었기 때문에 활성화한 것이 확실합니다 0x0001. 이 두 값은 무엇을 의미합니까? 다세대 LRU를 활성화하고 비활성화할 경우 예상되는 값은 무엇입니까? 이 파일에 다른 유효한 값이 있습니까?

답변1

커널의 다중 세대 LRU 문서값은 다음과 같이 설명됩니다.

가치 요소
0x0001 다세대 LRU용 메인 스위치입니다.
0x0002 MMU가 이를 설정하면(예: x86에서) 리프 페이지 테이블 항목의 액세스 비트를 대량으로 지웁니다. 이론적으로 이 동작은 잠금 경합(mmap_lock)을 악화시킬 수 있습니다. 이를 비활성화하면 다중 세대 LRU는 핫 페이지를 연속적으로 매핑하는 작업 부하에 대해 약간의 성능 저하를 겪게 되지만, 그렇지 않으면 더 적은 수의 더 큰 배치로 액세스된 비트를 지울 수 있습니다.
0x0004 MMU가 이를 설정하면(예: x86에서) 리프가 아닌 페이지 테이블 항목의 액세스 비트도 지워집니다. 이 동작은 Intel 및 AMD 이외의 x86 변종에서는 검증되지 않았습니다. 비활성화되면 다중 세대 LRU의 성능 저하가 무시할 수 있습니다.

값은 함께 OR로 연결되므로 0x0007은 모든 기능을 활성화한다는 의미이고 0x0001은 다중 세대 LRU를 활성화하지만 대량 액세스 비트를 지우지 않음을 의미합니다.

어떤 조합이든 유효합니다.0x0000에서 0x0007 사이의 값입니다. 예상 값은 커널 구성에 따라 다릅니다.

관련 정보