AMD INVLPGB 명령어를 구현한 최근 리눅스 커널 패치가 AMD EPYC 7003 "Milan" 프로세서에서 특히 눈에 띄는 성능 향상을 보여주었습니다. 테스트 결과, 불필요한 lru_add_drain 호출을 제거하고 INVLPGB 명령어를 활용한 조합이 TLB 플러시 작업의 성능을 크게 향상시켰습니다.
벤치마크 테스트에서 기본 커널은 초당 527,000 루프를 기록했으며, lru_add_drain 호출을 제거했을 때 성능이 731,000 루프로 향상되었습니다. INVLPGB 명령어를 단독으로 사용했을 때는 초당 527,000 루프를 유지했습니다. 그러나 두 가지 최적화를 모두 적용했을 때 성능은 1,157,000 루프로 급증했습니다. 이는 INVLPGB 명령어가 TLB 무효화 시간을 크게 줄일 수 있음을 나타내며, 이 시간은 전체 CPU 시간의 40%에서 단 4%로 감소했습니다. 발생한 경합은 LRU 잠금으로 전이되었지만, 전반적으로 이러한 변화는 테스트된 시나리오에서 초당 반복 횟수를 두 배로 증가시켰습니다.
이러한 향상은 AMD의 아키텍처 기능이 리눅스 커널 성능을 최적화할 수 있는 잠재력을 강조하며, 특히 다중 코어 환경에서 더욱 큰 효율성 향상을 위한 추가 최적화가 향후 커널 업데이트에서 기대될 수 있음을 시사합니다.
* 이 글은
phoronix.com의 기사를 요약한 것입니다. 전체 기사의 내용은
이곳에서 확인하실 수 있습니다.