Mamy klaster Heartbeat / DRBD / Pacemaker / KVM / Qemu / libvirt składający się z dwóch węzłów. Na każdym węźle działa Ubuntu 12.04 64-bitowy z następującymi pakietami / wersjami:
- Jądro 3.2.0-32-generic # 51-Ubuntu SMP
- DRBD 8.3.11
- qemu-kvm 1.0 + noroms-0ubuntu 14.3
- libvirt 0.9.13
- stymulator 1.1.7
- bicie serca 3.0.5
Wirtualni goście korzystają z systemu Ubuntu 10.04 64-bitowego i Ubuntu 12.04 64-bitowego. Używamy funkcji libvirt, aby przekazać możliwości procesorów hosta wirtualnym gościom w celu uzyskania najlepszej wydajności procesora.
Oto wspólna konfiguracja tego klastra:
- „Monitorowanie” maszyny wirtualnej ma 4 jednostki vCPU
- „Monitorowanie” maszyny wirtualnej wykorzystuje ide jako interfejs dyskowy (obecnie z oczywistych powodów przechodzimy na VirtIO)
Niedawno przeprowadziliśmy kilka prostych testów. Wiem, że nie są profesjonalistami i nie osiągają wysokich standardów, ale już wykazują silny trend:
Węzeł A uruchamia maszynę wirtualną „bla” Węzeł B uruchamia maszynę wirtualną „monitorowanie”
Kiedy synchronizujemy plik z maszyny wirtualnej „bla” do maszyny wirtualnej „monitorującej”, uzyskujemy tylko 12 MB / s. Kiedy wykonujemy proste dd if = / dev / null of = / tmp / blubb wewnątrz „monitorowania” maszyny wirtualnej, osiągamy około 30 MB / s.
Następnie dodaliśmy 4 kolejne vCPU do „monitorowania” maszyny wirtualnej i zrestartowaliśmy ją. „Monitorowanie” maszyny wirtualnej ma teraz 8 vCPU. Ponownie uruchomiliśmy testy z następującymi wynikami: Kiedy synchronizujemy plik z maszyny wirtualnej „bla” do maszyny wirtualnej „monitorującej”, osiągamy teraz 36 MB / s. Kiedy wykonujemy proste dd if = / dev / null of = / tmp / blubb wewnątrz „monitorowania” maszyny wirtualnej, osiągamy teraz około 61 MB / s.
Dla mnie ten efekt jest dość zaskakujący. Jak to się dzieje, że dodanie wirtualnego procesora dla tego wirtualnego gościa automatycznie oznacza większą wydajność dysku w maszynie wirtualnej?
Nie mam na to wytłumaczenia i naprawdę doceniłbym twój wkład. Chcę zrozumieć, co powoduje ten wzrost wydajności, ponieważ mogę odtworzyć to zachowanie w 100%.
kvm_trace
aby zobaczyć, jak IO_Exits
zmienia się liczba po zmianie numerów procesora. Sądzę, że to dlatego, że używasz IDE, które jest planowane z procesorami-gośćmi. W przypadku virtio wydajność powinna być stała, a gdy płaszczyzna danych jest w qemu, nastąpi drastyczny wzrost. Kolejnym przypuszczeniem może być fakt, że korzystasz z dystrybucji znanej z błędnego stosu wirtualizacji.