The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Сравнение производительности систем виртуализации KVM и Virt..."
Отправлено Andrew Kolchoogin, 22-Апр-09 17:05 
Да нет, как раз-таки настройки, насколько я понимаю, были дефолтными: то есть, KVM пользовался HAV (hardware-assisted virtualization), а VirtualBox -- нет. Именно поэтому такие данные по производительности и получились.

Вкратце: гипервизор второго типа для x86-ых микропроцессоров может эмулировать привилегированные инструкции, а может использовать HAV. Иногда бывает быстрее первое, иногда -- второе.

Почему? А вот почему. Как работает VirtualBox в случае, если он эмулирует x86'ю архитектуру программно: при встрече в первом кольце защиты привилегированных инструкций (а именно в первое кольцо защиты VirtualBox помещает код нулевого кольца гостевой системы) микропроцессор вызывает trap "Illegal Instruction". VirtualBox этот trap перехватывает, и инструкция эмулируется. Но не только. VirtualBox пытается дизассемблировать участок программного кода, где была встречена привилегированная инструкция, и "переписать" его таким образом, чтобы вместо неё было обращение к ядру VirtualBox'а. Поэтому при ДОСТАТОЧНО ДЛИТЕЛЬНОЙ работе кода нулевого кольца защиты он практически весь оказывается таким вот образом отпатченным, и работает более-менее быстро. Разумеется, при использовании VT-x ничего не патчится, а сам переход из "non-root mode" в "root mode" -- процедура достаточно длительная по машинным циклам. Вот и получается, что в дисковых benchmark'ах VirtualBox без аппаратной виртуализации показывает лучшие результаты, нежели KVM с оной -- ведь I/O benchmarks -- это, в основном, исполнение кода ядра (дисковых драйверов, I/O-планировщиков), etc. Разумеется, чем быстрее работает нулевое кольцо, тем лучше будут результаты этих бенчмарков.

Обратная ситуация при нагрузке на userland: в отсутствие аппаратной виртуализации VirtualBox'у приходится тратиться на просмотр кода на предмет наличия в нём инструкций, которые формально и не являются привилегированными (ну кто мешает выставить IOPL в 3?), но выполнять их на Bare CPU всё равно нельзя -- а ну-ка, там кто захочет, и правда, выставить IOPL в 3 и из пользовательских задач гостевой ОС пописать в порты ввода-вывода?

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру