У нас есть кластер Heartbeat / DRBD / Pacemaker / KVM / Qemu / libvirt, состоящий из двух узлов. На каждом узле работает Ubuntu 12.04 64 Bit со следующими пакетами / версиями:
- Ядро 3.2.0-32-generic # 51-Ubuntu SMP
- DRBD 8.3.11
- qemu-kvm 1.0 + noroms-0ubuntu14.3
- libvirt 0.9.13
- кардиостимулятор 1.1.7
- сердцебиение 3.0.5
Виртуальные гости работают под управлением Ubuntu 10.04 64 Bit и Ubuntu 12.04 64 Bit. Мы используем функцию libvirt для передачи возможностей хост-процессоров виртуальным гостям для достижения максимальной производительности процессоров.
Теперь вот общая настройка этого кластера:
- ВМ "мониторинг" имеет 4 виртуальных ЦП
- «Мониторинг» виртуальной машины использует ide в качестве интерфейса диска (в настоящее время мы переходим на VirtIO по понятным причинам)
Недавно мы провели несколько простых тестов. Я знаю, что они не профессионалы и не достигают высоких стандартов, но они уже показывают сильную тенденцию:
Узел A работает под управлением виртуальной машины "bla". Узел B работает под управлением виртуальной машины.
Когда мы rsync файл с ВМ "Bla" для "Мониторинг" ВМ, мы достигаем только 12 МБ / с. Когда мы выполняем простой dd if = / dev / null of = / tmp / blubb внутри «мониторинга» виртуальной машины, мы достигаем около 30 МБ / с.
Затем мы добавили еще 4 виртуальных ЦП к «мониторингу» ВМ и перезапустили его. «Мониторинг» виртуальной машины теперь имеет 8 виртуальных ЦП. Мы повторно запустили тесты со следующими результатами: Когда мы rsync файл с виртуальной машины «bla» для мониторинга «VM», мы теперь достигаем 36 МБ / с. Когда мы выполняем простой dd if = / dev / null of = / tmp / blubb внутри «мониторинга» виртуальной машины, мы достигаем около 61 МБ / с.
Для меня этот эффект довольно удивителен. Как получается, что добавление дополнительных виртуальных процессоров для этого виртуального гостя автоматически означает увеличение производительности диска внутри виртуальной машины?
У меня нет объяснения этому, и я был бы очень признателен за ваш вклад. Я хочу понять, что вызывает это увеличение производительности, так как я могу воспроизвести это поведение на 100%.
kvm_trace
чтобы увидеть, как количество IO_Exits
изменений при изменении номера процессора. Я думаю, это потому, что вы используете IDE, которая запланирована с гостевыми процессорами. С virtio производительность должна быть согласованной, а когда data-plane находится в qemu, он получит радикальный прирост. Другое предположение может заключаться в том, что вы используете дистрибутив, который известен как глючный стек виртуализации.