요약 : KVM/Qemu Virtualization Tuning Guide on 3rd Generation Intel® Xeon® Scalable Processors Based Platform

KVM/QEMU 환경 튜닝과 관련해서 Intel 사의 문서가 하나 보여서 정리해 봤습니다.

https://www.intel.com/content/www/us/en/developer/articles/guide/kvm-tuning-guide-on-xeon-based-systems.html

Xeon Scalable 3세대 기준으로 작성된 문서이고, 이후 업데이트 버전은 아직 발견하지 못했습니다. 혹시 아시는 분 계시면 정보 공유 부탁드립니다. ^^

BIOS 설정 권장 항목

  • Advanced/Processor Configuration/Intel(R) Virtualization Technology : Enabled
  • Advanced/PCI Configuration/Integrated IO Configuration/Intel® VT for Directed I/O : Enabled
  • Advanced/Processor Configuration/Intel(R) Hyper-Threading Tech : Enabled
  • Advanced/Memory Configuration/Memory RAS and Performance Configuration/NUMA optimized : Enabled
  • Advanced/Power & Performance/CPU Power and Performance Policy : Performance
  • Advanced/Power & Performance/CPU P State Control/CPU P State Control/Enhanced Intel SpeedStep® Tech : Enabled
  • Advanced/Power & Performance/CPU P State Control/CPU P State Control/Intel® Turbo Boost Technology : Enabled
  • Advanced/Power & Performance/CPU P State Control/CPU P State Control/Energy Efficient Turbo : Disabled
  • Advanced/Power & Performance/Hardware P States : Native Mode
  • Advanced/Power & Performance/CPU C State Control/C1E : Disabled
  • Advanced/Power & Performance/CPU C State Control/Processor C6 : Disabled

Linux Kernel & KVM 튜닝

  • numactl -H 명령으로 현재 NUMA 구성 파악
  • 일반적으로 패스스루 장치가 없는 경우 워크로드 특성에 따라 Automatic NUMA Balancing, 패스스루가 있는 경우 Manual 고정 고려
  • 같은 NUMA 노드에 IRQ 바인딩
  • 성능 중심이라면 scaling_governor는 performance
  • 메모리 액세스가 많은 경우 Huge Page 사용
  • Transparent Huge Page는 일반적으로 KVM이 자동으로 활성화
  • 워크로드 따라 idle=poll 고려
  • 워크로드 따라 Pause Loop Exiting(PLE) 비활성화 고려
  • Kernel Samepage Merging(KSM) 설정 고려. 일반적인 경우 ksmtuned 서비스로 대응 가능
  • nohz_full 명령 사용해서 NUMA 노드마다 하우스키핑 CPU 지정

QEMU 튜닝

  • MWAIT/HTL/PAUSE VMExit를 비활성화해서 레이턴시를 향상시킬 수 있으나 반대급부가 있을 수 있음
  • 호스트 메모리가 오버커밋되지 않은 경우에 --overcommit mem-lock=on 옵션을 이용해서 최악의 대기시간을 줄일 수 있음
  • vhost-net 활성화
  • vhost-net에서 Zero Copy Transmission 활성화
  • vhost-net에서 Queue Polling 활성화
  • vCPU가 충분한 경우 멀티큐 활성화
  • Packed virtqueues 활성화
  • Virtio-blk에 적절한 캐시 모드 사용
  • Virtio-blk에 IO Mode 설정 : 일반적으로 aio=io_uringaio=native 보다 나은 성능을 보임
  • Virtio-blk에서 multi-queue 활성화
  • Virtio-blk에서 packed virtqueues 활성화
  • Virtio-blk에서 IOthread 활성화

Kernel 튜닝

  • Request Queue Affinity(“rq_affinity”) 활성화
  • Guest Halt Polling 활성화
답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like
Read More

libvirt: Guest migration

출처 : https://libvirt.org/migration.html 호스트 간 게스트 마이그레이션은 여러 가지 가능한 솔루션이 있는 복잡한 문제이며, 각 솔루션에는 장점과 단점이…