KVM : VM을 더 잘 실행시키는 CPU 기능은 무엇입니까?


21

우리는 다음 매개 변수와 함께 Ubuntu 12.04를 사용하고 있습니다.

  • 델 R910
  • 커널 3.2.0-25 일반 # 40- 우분투 SMP x86_64 x86_64 x86_64 GNU / Linux
  • kvm 1 : 84 + dfsg-0 우분투 16 + 1.0 + noroms + 0 우분투 13
  • qemu-kvm 1.0+ 노롬 -0 우분투 13
  • qemu-common 1.0+ 노롬 -0 우분투 13
  • qemu-kvm 1.0+ 노롬 -0 우분투 13
  • 4 개의 Intel (R) Xeon (R) CPU E7-4870 @ 2.40GHz (각각 10 개의 물리적 코어, HT 및 Intel VT 지원)
  • Windows 게스트에는 현재 VirtIO가 없지만 곧 변경 될 예정입니다.

이 컴퓨터에서 여러 Windows 게스트를 실행하고 있으며 그 중 하나는 Windows 2003 32 비트, 다른 하나는 Windows 2008 (64 비트)입니다. 우리는 현재 성능 문제로 어려움을 겪고 있으며 CPU 모델을 가지고 놀았습니다.

우리는 일반적으로 Windows 32 비트 게스트에 "qemu-system-x86_64"를 사용합니다.

/usr/bin/qemu-system-x86_64 -S -M pc-1.0 -cpu qemu32 -enable-kvm -m 4096 -smp 4,sockets=4,cores=1,threads=1 [...] 

이 게스트의 성능은 약간 낮았습니다. 아직 벤치 마크를 실행하지는 않았지만 CPU 모델을 "-cpu qemu32"에서 "-cpu Nehalem으로 전환하면 한 디렉토리에서 다른 디렉토리로 VM 내부의 많은 양의 데이터 (파일)를 복사하는 것이 훨씬 빠르다고 가정 해 보겠습니다. ". 복사하는 데 약 2:40 시간이 소요 된 파일은 이제 40 분 내에 복사됩니다. 물론 이것은 고품질 테스트가 아니며 더 전문적인 시도를 할 여지가 많습니다. 그러나 이것은 올바른 CPU 모델을 선택하면 게스트의 성능에 큰 영향을 줄 수 있다는 분명한 지표입니다.

이제 나는 궁금해하고 달렸다.

qemu-x86_64 -cpu ?
x86           [n270]
x86         [athlon]
x86       [pentium3]
x86       [pentium2]
x86        [pentium]
x86            [486]
x86        [coreduo]
x86          [kvm32]
x86         [qemu32]
x86          [kvm64]
x86       [core2duo]
x86         [phenom]
x86         [qemu64]

과:

kvm -cpu ?model
 x86       Opteron_G3  AMD Opteron 23xx (Gen 3 Class Opteron)
 x86       Opteron_G2  AMD Opteron 22xx (Gen 2 Class Opteron)
 x86       Opteron_G1  AMD Opteron 240 (Gen 1 Class Opteron)
 x86          Nehalem  Intel Core i7 9xx (Nehalem Class Core i7)
 x86           Penryn  Intel Core 2 Duo P9xxx (Penryn Class Core 2)
 x86           Conroe  Intel Celeron_4x0 (Conroe/Merom Class Core 2)
 x86           [n270]  Intel(R) Atom(TM) CPU N270   @ 1.60GHz
 x86         [athlon]  QEMU Virtual CPU version 1.0
 x86       [pentium3]
 x86       [pentium2]
 x86        [pentium]
 x86            [486]
 x86        [coreduo]  Genuine Intel(R) CPU           T2600  @ 2.16GHz
 x86          [kvm32]  Common 32-bit KVM processor
 x86         [qemu32]  QEMU Virtual CPU version 1.0
 x86          [kvm64]  Common KVM processor
 x86       [core2duo]  Intel(R) Core(TM)2 Duo CPU     T7700  @ 2.40GHz
 x86         [phenom]  AMD Phenom(tm) 9550 Quad-Core Processor
 x86         [qemu64]  QEMU Virtual CPU version 1.0

이 모든 다른 버전에서는 추측하기가 어렵습니다. "네 할렘"은 그 목록에서 가장 성능이 좋은 것으로 보입니다. 이제 게스트에게 가장 적합한 CPU 모델을 확인하는 방법이 궁금합니다. 인터넷을 검색하면서 다음 리소스를 발견했습니다.

해당 사이트를 올바르게 읽으면 "-cpu host"가 최상의 성능을 제공 할 수 있다고 주장합니다. 두 KVM 호스트 모두 동일하게 (정확히 동일한 하드웨어) 장착되어 있기 때문에 아직 마이그레이션에 대해 걱정할 필요가 없습니다.

그렇다면 경험이 풍부한 KVM 관리자가 권장하는 것은 무엇입니까? "이 모델은 해당 게스트 OS에 가장 적합합니다"와 같은 황금률 또는 매트릭스가 있습니까?

본인이 직접이 정보를 찾을 수 있으면 죄송합니다. 다양한 Google 검색을 실행하고 많은 웹 사이트를 탐색했습니다. 내 질문에 대한 답변을 찾을 수 없었습니다.


-cpu 스위치를 전혀 사용하지 않는 이유는 무엇입니까? 그냥 내버려둬
psusi

1
왜 귀찮게하지 않습니까? Afaik은 성능 향상을 가져올 수 있습니다.
Valentin

들어가서 에뮬레이션해야 할 경우 성능이 저하 될 수 있습니다. 없이 시도해보십시오.
psusi

2
방금 libvirt가 "-host qemu32"매개 변수를 자동으로 추가한다는 것을 알았습니다. 왜냐하면 설정하지 않았기 때문입니다.
Valentin

3
@psusi : 방금 오늘 테스트했습니다. -cpu 스위치를 남겨두면 가능한 최고의 CPU 모델을 선택하는 것만 큼 성능이 좋습니다.
Valentin

답변:


13

정말 간단합니다. 동종 클러스터 및 단일 호스트 설정의 경우 host옵션을 사용하십시오 . 혼합 클러스터의 경우 사용 가능한 최저 CPU 버전을 사용하므로 한 호스트가 Penryn이고 다른 호스트는 Nehalem이면 둘 다에 Penryn을 사용하십시오.

RHEV 또는 oVirt를 사용하는 경우 이미 내장되어 있습니다. VMWare에는 "EVC"라는 이름이 있으며이를 거대한 기능으로 배치합니다.

성능으로 돌아가려면 어디에서나 virtio가 필요합니다. 그리고 여전히 성능 병목 현상이 발생하면 발생 위치에 따라 사례별로 해결 될 수 있습니다.

[offtop] 선택하신 배포본에서 이미 다른 스레드에 댓글을 달았습니다. [/ offtop]


고마워 dyasny, 당신이 회신하고 일종의 "황금 규칙"을 제공하길 바라고 있었다!
Valentin

11

Windows 게스트는 현재 VirtIO가 없습니다.

무엇이든 조정할 때 더 이상 시간을 낭비하지 마십시오.
virtIO 드라이버를 설치하고 다시 방문하십시오. 차이점은 너무 커서 현재 찾을 수있는 개선 사항은 virtIO에서 의미가 없습니다.

: 우리의 서버 중 하나를 그냥 예를
W2K3 10 터미널 서버 사용자에 대해 처리 할 수있는 인 virtio없이 -
- 인 virtio와 같은 OS와 같은 시스템은 현재 조금 천천히 아래로 120 125 사용자를 처리 할 수 있습니다. 그리고 동일한 물리적 컴퓨터에서 SQL Server를 실행하기 위해 다른 가상 컴퓨터를 추가했습니다.


힌트 주셔서 감사합니다. 그렇습니다. VirtIO는 방어 적으로 활성화되어야하지만, 먼저 해결해야 할 Windows 2003 게스트에 몇 가지 문제가 있습니다. 그 외에도 CPU 모델 주제에 대해 설명하고 싶습니다.
Valentin

이것이 제가 Hyper-V를 사용하는 이유 중 하나입니다. 2008 년 이후로 이것은 설치 없음을 의미하며 Hyper-V 용 모든 드라이버가 Windows Update로 유지 관리됨을 의미합니다. 호환성 문제는 치명적입니다.
TomTom

@TomTom Hyper-V는 Windows를 실행하도록 인증 된 유일한 하이퍼 바이저가 아닙니다. 이 맥락에서 인증은 SVVP / WHQL을 의미합니다.
dyasny

1
아니요, 그러나 이미 드라이버가 설치되어있는 것과 같이 기본적으로 작동하는 것은 유일합니다.) XEN은 Hyper-V 드라이버에서 피기 백하는 것으로 생각합니다. 외부 적으로 업데이트 된 다른 요소를 유지할 필요가없는 것은 정말 좋은 일입니다. 나는 그들이 서명되었는지 여부를 신경 쓰지 않는다. 모든 것은 Windows 업데이트를 통해 제공되므로 다른 공급자를 보지 않아도된다. MS가 타사 소프트웨어에 대한 Windows Update를 열었 으면 좋겠습니다.)
TomTom

1
슬립 스트림 및 VM 템플릿에 대해 들어 본 적이 있다고 확신하므로 다음 사항에 대해서는 언급하지 않을 것입니다.
dyasny

8

Qemu는 다른 많은 하이퍼 바이저와 같은 방식으로 작동하지 않습니다. 우선, 전체 에뮬레이션을 제공 할 수 있습니다. 즉, 예를 들어 ARM 프로세서에서 x86 코드를 실행할 수 있습니다. KVM 모드에서 사용하면 실제로 그렇게하지 않습니다 ... 프로세서는 무엇에 관계없이 노출되지만 OS 에보 고되는 것은 -cpu플래그에 의해 변경됩니다 .

더 빠른 속도를 원한다면 가상 프로세서의 기능을 실제 프로세서와 최대한 일치시키려는 출발점입니다. 그러면 작업을 실행하기 위해 차선의 opcode가 호출되는 경우가 줄어들고, 하드웨어에서 먼저 다른 것으로 변환 될 수없는 opcode도 줄어 듭니다. Xeon 프로세서 모델은 2011 년 초에 출시되었으므로 대부분 Core i7 시리즈와 인라인으로 지원됩니다. 이를 위해 Nehalem 아키텍처가 최고의 에뮬레이션입니다.

링크 중 하나에서 인용 ( Tuning KVM ) :

사용 가능한 모든 호스트 프로세서 기능을 게스트에게 전달하려면 명령 줄 스위치를 사용하십시오.

 qemu -cpu host

호환성을 유지하려면 선택한 기능을 게스트에게 노출 할 수 있습니다. 모든 호스트에 이러한 기능이있는 경우 호환성이 유지됩니다.

 qemu -cpu qemu64,+ssse3,+sse4.1,+sse4.2,+x2apic

따라서 문제를 일으킬만큼 충분히 움직일 수 있다고 생각되면 현재 지원하거나 향후 지원할 것으로 생각되는 프로세서를 모두 지원하는 명령어 세트를 찾을 수 있습니다.

그러나 대부분의 경우에 고착하고 싶습니다 -cpu host. 사용 가능한 플래그가 적은 CPU를 지정하면 응용 프로그램에서 더 빠른 기능을 사용하지 않아도됩니다.


4
그는 가상화 확장이 필요하고 에뮬레이션을 실행하지 않는 KVM을 사용하고 있습니다. qemu를 기반으로하더라도
Javier

1
-cpu 호스트를 사용하기위한 노력과 추천에 대해 여전히 +1의 투표를 받았습니다!
Valentin

3

'-cpu host'옵션이 혼동되고 있습니다. 이 옵션은 호스트 시스템에 특정한 모든 CPU 기능 만 활성화하지는 않으며 CPU가 지원하지 않는 경우에도 CPU가 지원하는 모든 기능과 에뮬레이션 할 수있는 모든 기능을 활성화합니다.

-cpu host
는 좋은 옵션이지만 가장 효율적인 것은 아닙니다 .cpu 가 지원하지 않는 것으로 에뮬레이트 할 수있는 옵션을 활성화 할 수 있기 때문에 에뮬레이션해야하는 이러한 기능 중 하나를 사용하려고 할 때마다 게스트 시스템이 약간 느려질 수 있습니다. .

출처 : http://wiki.qemu.org/Features/CPUModels


1
처음에는이 답변이 에뮬레이션 할 수있는 SSE 지원과 같은 명령 지원에 대한 것이라고 생각했습니다. 그러나 물론 KVM 모드 또는 TCG에서 실행하고 둘 다 혼합하지 않으면 의미가 없습니다. 그래서 여기에 언급 된 에뮬레이션은 하드웨어 지원이 없지만 커널이 가짜 일 수있는 x2apic과 같은 것일 수 있습니다. 나는 처음에 혼란 스러웠던 위의 내용을 분명히하고 명확하게하기 위해 이것을 언급합니다.
Neil McGill 2016 년

-2

CentOS 6.7은 Dell R910에서 적절한 KVM + Spice 성능을 제공합니다. 일단 당신이 주사를 맞으면 다른 곳으로 돌아 가지 않을 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.