Как выполняется эмуляция устройства в kvm - PullRequest
3 голосов
/ 26 июня 2010

Я знаю, что qemu-kvm выполняет эмуляцию устройства в KVM.Выполняется ли qemu-kvm в пользовательском пространстве хоста?Поэтому при обнаружении функции kick она выходит из виртуальной машины через гиперзвук в гипервизор, а затем передает гипервизору qemu-kvm в пользовательском пространстве хоста.Затем, после выполнения необходимых действий, qemu-kvm переходит к гипервизору, а затем обратно к виртуальной машине.Таким образом, это означает, что есть два системных вызова, один из VM -> Hypervisor и qemu-kvm -> Hypervisor?Это те шаги, которые имеют место, или я ошибаюсь?Если есть какие-либо документы о подобных вещах, пожалуйста, дайте мне ссылку.Большое спасибо ...

Спасибо, Бала

Ответы [ 4 ]

2 голосов
/ 03 сентября 2013

Я более знаком с частью KVM, работающей над архитектурой x86, поэтому попытайтесь объяснить это в реализации KVM x86.

В архитектуре x86 KVM использует функциональные возможности ЦП для разделения режима гипервизора и гостевого режима.С точки зрения Intel, они являются корневым и некорневым режимами VMX соответственно.

Запись VM (гипервизор -> VM) запускается KVM с инструкцией VMLAUNCH со всей необходимой гостевой информацией, заполненной в VMCS ЦП в режиме ядра.Из qemu-kvm в модуль ядра kvm вызывается только системный вызов.

Выход из виртуальной машины происходит, когда гостевая ОС обрабатывает что-то из своих привилегий, например, доступ к физическому HW или прерывание.После этого выдается запись о виртуальной машине, и ЦП снова переходит в режим без полномочий root для выполнения гостевого кода.Таким образом, выход из виртуальной машины (VM -> гипервизор) выполняется HW автоматически, и соответствующая причина выхода и информация будут записываться в VMCS.Затем KVM проверяет VMCS, чтобы определить его следующий шаг.Для VM -> гипервизора нет системного вызова.

Большинство эмуляций устройств основаны на пользовательском пространстве, где qemu-kvm может использовать существующий код qemu.Однако некоторые технологии сквозного доступа к устройствам, такие как Intel VT-d, позволяют гостевому оборудованию получать доступ к оборудованию напрямую через IOMMU или другие.Что может повысить производительность, особенно на высокоскоростных сетевых устройствах.

Если вы хотите выкопать исходный код, я рекомендую сначала сосредоточиться на виртуализации ЦП (Intel VT-x), которая находится в linux/arch/x86/kvm/vmx.c.Руководство разработчика программного обеспечения Intel также содержит подробные сведения о VT.

2 голосов
/ 26 июня 2012

квм была основана израильской фирмой под названием qumranet .Эти вступительные документы написаны этими парнями и рекомендованы к прочтению:

Технология виртуальной машины на основе ядра: http://www.fujitsu.com/downloads/MAG/vol47-3/paper18.pdf KVM: Драйвер виртуализации на основе ядра: http://www.linuxinsight.com/files/kvm_whitepaper.pdf

KVM использует QEMU для эмуляции ввода / вывода, что объясняется в статье.Это поможет вам понять, как работает переключение с гостевого режима на хост, причины переключения, как эмуляция ввода / вывода выполняется qemu в пользовательском пространстве и как он переключается обратно на гостевой.Это отличные краткие статьи.

1 голос
/ 15 ноября 2011

Я нашел это хорошо.По крайней мере, для основ.Надеюсь, это поможет.

0 голосов
/ 20 октября 2010

qemu-kvm выполняется в пользовательском пространстве хоста? да, это тоже узкое место в производительности, и есть способы его обойти. Посмотрите на PCI SR-IOV NIC для сети и NPIV для оптоволоконного канала. Они оба являются специальным оборудованием, разработанным для подразделенных контроллеров ввода / вывода, так что KVM / qemu может подключить виртуальную машину к частному каналу контроллера.

То есть, это означает, что есть два системных вызова: один из VM -> Hypervisor и qemu-kvm -> Hypervisor? Я не знаю наверняка, но я думаю, что есть прерывания устройства, пересекающие границы пространства ядра пользователя, а не системные вызовы.

Возможно, этот документ вам немного поможет:

http://www.linux -kvm.org / вики / изображений / 4/42 / Kvm-устройства assignment.pdf

...