Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2010-05-18

Паравиртуальные драйверы и виртуализация ввода/вывода

Про паравиртуальные драйверы:

Еще одним вариантом эмуляции устройств с использованием гипервизора является использование драйверов паравиртуализации. В этой модели в состав гипервизора входят драйвера для работы с физически существующими устройствами, а в каждой гостевой операционной системе имеется специальный драйвер, который работает во взаимодействии с драйверами гипервизора (называемыми паравиртуализированными драйверами или PV драйверами).
...
В Xen пропагандировался подход с использованием паравиртуализации (рассмотренный в предыдущем разделе), который уменьшал потерю производительности за счет того, что драйвер гостевой операционной системы имел информацию о том, что он виртуальный. В этом случае гостевая операционная система не обращалась к адресному пространству на шине PCI, выделенному для устройства (например, сетевого адаптера), а вместо этого использовала интерфейс прикладного программного обеспечения для этого сетевого адаптера (API), что позволяло использовать более высокий уровень абстракции (например, пакетный интерфейс). Недостаток этого подхода в том, что для использования паравиртуализации гостевую операционную систему нужно было модифицировать. Преимущество было в том, что в некоторых случаях вы могли достичь производительности, почти равной производительности аппаратного обеспечения.

Про виртуализацию ввода/вывода:

К счастью, у поставщиков процессоров появились процессоры нового поколения, имеющие инструкции для поддержки гипервизоров, а также логики сквозного доступа к устройствам, в том числе виртуализации прерываний и поддержка прямого доступа к памяти (DMA). Таким образом, вместо того, чтобы отлавливать и эмулировать доступ к физическим устройствам, лежащим ниже гипервизора, в новых процессорах для эффективного сквозного доступа к устройствам поддерживается трансляция адресов DMA и проверка прав доступа.
...
Как Intel, так и AMD обеспечивают поддержку сквозного доступа к устройствам в своих процессорах с новой архитектурой (в дополнение к новым инструкциям, которые поддерживают работу гипервизора). Intel использует свой вариант, называемый Virtualization Technology for Directed I/O (VT-d), в то время как AMD использует вариант I/O Memory Management Unit (IOMMU). В каждом случае, новые процессоры предоставляют средства отображения физических адресов шины PCI в виртуальные адреса гостевых систем. Когда выполняется это отображение, доступ (и защита) реализуются на уровне аппаратного обеспечения и гостевая операционная система может использовать устройство, как если бы система не была виртуальной. В дополнение к отображению гостевой системы в физическую память, поддерживается изоляция устройства таким образом, чтобы другие гостевые системы (или гипервизор) не имели к нему доступа. В процессорах Intel и AMD реализована поддержка еще многих функций, предназначенных для виртуализации. Подробности вы можете узнать из статей, перечисленных в разделе "Ресурсы" оригинала статьи.

Про виртуализацию прерываний:

Еще одно новшество, которое помогает масштабировать прерывания для большого числа виртуальных машин, называется Message Signaled Interrupts (MSI). Вместо того чтобы полагаться на физические прерывания, связанные с гостевой системой, MSI преобразует прерывания в сообщения, которые легче сделать виртуальными (что позволяет обрабатывать тысячи отдельных прерываний). MSI доступно в PCI с версии 2.2 и оно также доступно на шине PCI Express (PCIe), что составляет основу для масштабирования многих устройств. MSI идеально подходит для виртуализации ввода/вывода, поскольку оно позволяет изолировать источники прерываний (отличие от физических прерываний, которые мультиплексируются или маршрутизируются с помощью программ).

Чем приходится платить за аппаратную поддержку вирт.ввода/вывода:

Одна из проблем, связанная со сквозным с доступом к устройствам, возникает, когда требуется "живая миграция". "Живой миграцией" (Live migration) является приостановка виртуальной машины с последующим его переносом на новый физический хост, на котором виртуальная машина перезапускается. Это отличная возможность для поддержки балансировки нагрузки, связанной с виртуальными машинами, в сети из физических хостов, но возникает проблема, если используется сквозной доступ к устройствам. Горячее подключение к шине PCI (для которого есть несколько спецификаций) является одним из аспектов, которые нужно решить. При горячем подключении к шине PCI должна быть возможность добавлять устройства PCI к ядру и удалять их из ядра

rus-linux.net/...MyLDP/vm/jones/passthrough

Прекрасная ликбезная статья.

Рядушком описана библиотека libvirt, управление гипервизорами и вирт.машинами. А еще она может скриптоваться на Python.

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) Java (22) humor (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) Klaipeda (13) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)