VMQ (Virtual Machine Queue)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 14:41, 10 января 2019.
Virtual Machine Queue
Rightsizing-your-sql-server-virtual-machine-12-638.jpg
Пример организации VMQ
Разработчики: VMware, Inc.
Постоянный выпуск: 8.1.1 / 8.1.1 / 8 декабря 2015 г.
Операционная система: OS X
Платформа: Архитектура Apple-Intel
Тип ПО: Гипервизор
Лицензия: Проприетарное ПО
Веб-сайт {{#property:P856}}

VMQ (англ. Virtual Machine Queue) - это аппаратная технология виртуализации для эффективного переноса сетевого трафика (используя протоколы TCP/IP, iSCSI или FCoE) для виртуализированной ОС. Технология VMQ была запатентована в 2010 году Даниэлем Баумбергером из компании Intel. Совместимый с VMQ сетевой контроллер может использовать DMA для транспортировки всех полученных фреймов, которые должны быть обработаны для получения очереди для буферов приема, на которые выделена память для очереди [Источник 1].

VMQ - это тип аппаратной фильтрации пакетов, который доставляет данные пакетов из внешней сети виртуальных машин непосредственно в операционную систему виртуализированного узла. VMQ позволяет контроллеру сетевого интерфейса (NIC) передавать входящие данные непосредственно в буфер приема сетевого адаптера с помощью прямого доступа к памяти (DMA). Это упрощает процесс, связанный с маршрутизацией пакетов, и снижает необходимость их копирования из операционной системы управления (ОС) на виртуальную машину (VM). Вместо одного процессора, обрабатывающего все сетевые обмены данными, различные процессоры могут обрабатывать пакеты для разных виртуальных машин с VMQ. Это устраняет зависимость от обмена трафиком на основе драйверов и улучшает передачу сетевого трафика[Источник 2].


Интерфейс VMQ поддерживает:

  • Классификацию полученных пакетов в NIC с помощью направления MAC-адреса для маршрутизации пакетов в различные очереди приема.
  • Возможность NIC использовать DMA для непосредственной передачи пакетов в общую память виртуальной машины.
  • Масштабирование на несколько процессоров путем обработки пакетов для разных виртуальных машин на разных процессорах [Источник 1].


Общие сведения о VMQ

Поддержка VMQ позволяет перенести большую часть затрат на обработку сетевых пакетов, адресованных виртуальным машинам с хостовой ОС на плечи процессора сетевого адаптера. Разумеется, при условии, что сетевой адаптер это поддерживает, и в гостевых ОС установлены компоненты интеграции. Если не используется VMQ, то обработка сетевых пакетов происходит следующим образом:

Рисунок 1 – Обработка сетевых пакетов без использования VMQ

Распределением трафика по виртуальным машинам и фильтрацией по тегам VLAN при этом занимается виртуальный коммутатор, действующий в пространстве родительской ОС. При большом количестве виртуальных машин и при больших объемах трафика это может привести к некоторому снижению производительности, так как у процессора сервера есть и другие задачи, помимо обработки сетевых пакетов. Использование VMQ позволяет переложить обработку пакетов на плечи процессора сетевого адаптера:

Рисунок 2 – Обработка пакетов процессором сетевого адаптера

Сетевой адаптер, поддерживающий VMQ, способен самостоятельно осуществлять необходимую обработку сетевых пакетов, а затем записать данные непосредственно в область памяти соответствующей виртуальной машины. Передача же данных, что с VMQ, что без оной – идет как и обычно: Виртуальный сетевой адаптер – VMBus – Виртуальный коммутатор – Физический сетевой адаптер [Источник 3].

Архитектура очереди виртуальной машины

Архитектура очереди виртуальных машин NDIS (VMQ) предоставляет такие преимущества виртуализации, как:

  • Виртуализация влияет на производительность, и VMQ помогает улучшить ее.
  • VMQ sМатериал поддерживает динамическую миграцию.
  • VMQ сосуществует с разгрузками задач NDIS и другими оптимизациями[Источник 1].

Как использовать VMQ

Процедура включения VMQ с помощью SCVMM:

  • Выберите виртуальную машину.
  • Перейдите в настройки (Settings ) > Программное обеспечение (Hardware) > Сетевые адаптеры (Network Adapter )> Аппаратное ускорение (Hardware Acceleration).
  • Выберите пункт "Включить VMQ (Enable virtual machine queue)" в диалоговом окне "Параметры аппаратного ускорения (Hardware Acceleration )" [Источник 2].
Рисунок 3 – Включение VMQ с помощью SCVMM

Источники

  1. 1,0 1,1 1,2 VMQ // Wikipedia. Дата обновления: 08.05.2018. URL: https://en.wikipedia.org/wiki/VMQ. (Дата обращения: 28.12.2018).
  2. 2,0 2,1 Hyper-V: Virtual Machine Queues (VMQ) FAQs // portal.nutanix.com. Дата обновления: 13.07.2018. URL: https://portal.nutanix.com/#page/kbs/details?targetId=kA0600000008eNTCAY (Дата обращения: 28.12.2018).
  3. Hyper-V и сети // habr.com. Дата обновления: 22.07.2010. URL: https://habr.com/post/97085/. (Дата обращения: 28.12.2018).