내 데스크탑에 다세대 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 사이의 값입니다. 예상 값은 커널 구성에 따라 다릅니다.