KVM : VM을 더 잘 실행시키는 CPU 기능은 무엇입니까? 우분투 13 qemu-common

우리는 다음 매개 변수와 함께 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 검색을 실행하고 많은 웹 사이트를 탐색했습니다. 내 질문에 대한 답변을 찾을 수 없었습니다.



답변

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

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

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

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


답변

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

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

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


답변

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를 지정하면 응용 프로그램에서 더 빠른 기능을 사용하지 않아도됩니다.


답변

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

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

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


답변

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


답변