이 기사는 인텔의 KVM 가상화에서 발생한 심각한 성능 저하 문제, 특히 에메랄드 래피드(Emerald Rapids) CPU와 관련된 내용을 다룹니다. 이 성능 저하는 CPUID 작업에 기인하며, 에메랄드 래피드에서 이 작업이 스카이레이크(Skylake)와 같은 이전 세대에 비해 현저히 느립니다. 성능 저하는 특히 중첩 가상화 전환 중에 두드러지며, KVM이 불필요한 런타임 CPUID 업데이트를 여러 번 수행하여 지연 시간이 증가합니다.
이를 해결하기 위해 일련의 패치가 제안되었습니다. 첫 번째 패치는 모듈 초기화 중 CPUID 출력을 캐시하여 오버헤드를 크게 줄이는 것을 목표로 합니다. 예를 들어, 서로 다른 CPU에서 중첩 VM-Enter 및 VM-Exit 전환의 지연 시간이 강조됩니다: 스카이레이크(Skylake)는 11,650 사이클, 아이스레이크(Icelake)는 22,350 사이클, 에메랄드 래피드(Emerald Rapids)는 캐시 없이 28,850 사이클이 소요됩니다. 캐시를 사용하면 이러한 지연 시간이 크게 감소하여 제안된 변경 사항의 성능 이점을 보여줍니다.
추가 패치는 코드 정리 및 CPUID 에뮬레이션 최적화에 중점을 두어 불필요한 업데이트를 피하도록 합니다. 기사는 성능 문제가 XSAVES 및 XSAVEC를 지원하는 CPU에서 더욱 악화된다고 강조하며, KVM이 xstate_required_size() 함수를 여러 번 호출하여 지연 시간이 더욱 증가합니다. 전반적으로 이러한 변경 사항은 인텔의 최신 CPU 아키텍처에서 KVM 가상화의 효율성을 향상시킬 것으로 기대됩니다.
* 이 글은
phoronix.com의 기사를 요약한 것입니다. 전체 기사의 내용은
이곳에서 확인하실 수 있습니다.