두 개의 노드로 구성된 하트 비트 / DRBD / 페이스 메이커 / KVM / Qemu / libvirt 클러스터가 있습니다. 각 노드는 다음 패키지 / 버전으로 Ubuntu 12.04 64 비트를 실행합니다.
- 커널 3.2.0-32 일반 # 51- 우분투 SMP
- DRBD 8.3.11
- qemu-kvm 1.0+ 노롬 -0 우분투 14.3
- libvirt 0.9.13
- 맥박 조정기 1.1.7
- 하트 비트 3.0.5
가상 게스트는 Ubuntu 10.04 64 비트 및 Ubuntu 12.04 64 비트를 실행합니다. 우리는 libvirt 기능을 사용하여 최상의 CPU 성능을 달성하기 위해 호스트 CPU의 기능을 가상 게스트로 전달합니다.
다음은이 클러스터에 대한 일반적인 설정입니다.
- VM "모니터링"에는 4 개의 vCPU가 있습니다.
- VM "모니터링"은 디스크 인터페이스로 ide를 사용합니다 (현재 명백한 이유로 VirtIO로 전환하고 있습니다)
최근 몇 가지 간단한 테스트를 수행했습니다. 나는 그들이 전문적이지 않고 높은 표준에 도달하지 못한다는 것을 알고 있지만 이미 강한 추세를 보이고 있습니다.
노드 A가 VM "bla"을 실행 중 노드 B가 VM "모니터링"을 실행 중
VM "bla"에서 VM "monitoring"으로 파일을 재 동기화하면 12MB / s 만 달성됩니다. VM "모니터링"내부에서 간단한 dd if = / dev / null of = / tmp / blubb를 수행하면 약 30MB / s를 달성합니다.
그런 다음 VM "모니터링"에 vCPU 4 개를 추가하고 다시 시작했습니다. VM "모니터링"에는 이제 8 개의 vCPU가 있습니다. 다음 결과로 테스트를 다시 실행합니다. 파일을 VM "bla"에서 VM "monitoring"으로 재 동기화하면 36MB / s를 달성합니다. VM "모니터링"내부에서 간단한 dd if = / dev / null of = / tmp / blubb를 수행하면 이제 약 61MB / s를 달성합니다.
저에게이 효과는 정말 놀랍습니다. 이 가상 게스트에 더 많은 가상 CPU를 추가하는 것이 VM 내부에서 더 많은 디스크 성능을 자동으로 의미하는 이유는 무엇입니까?
이에 대한 설명이 없으며 귀하의 의견에 진심으로 감사드립니다. 이 동작을 100 % 재현 할 수 있기 때문에이 성능 향상의 원인을 이해하고 싶습니다.
kvm_trace
횟수를 확인 하려면 실행 하십시오 IO_Exits
. 게스트 CPU로 예약 된 IDE를 사용하고 있기 때문일 것입니다. virtio를 사용하면 성능이 일관되어야하고 데이터 플레인이 qemu 인 경우 성능이 크게 향상됩니다. 버그가있는 가상화 스택으로 알려진 배포판을 사용하고 있다는 사실도 추측 할 수 있습니다.