База знаний LinxCloud Services

Включение multiqueue

Описание

Один виртуальный процессор не в состоянии удовлетворить требованиям по обработке прерываний сетевого адаптера с увеличением пропускной способности сетевого ввода-вывода. С помощью множественной очереди (multiqueue) сетевого адаптера возможно обрабатывать прерывания сетевого адаптера нескольким виртуальным процессорам .

Включение multiqueue устанавливает количество очередей равных количеству гостевых виртуальных процессоров, благодаря чему можно масштабировать производительность сети для нескольких виртуальных процессоров.

 

Условия для включения multiqueue

  • образ ВМ должен быть установлен пользователем самостоятельно
  • образ ВМ обязан отличаться от образов по умолчанию (предустановленных в LinxCloud)

С этой инструкцией возможно только добавить опцию multiqueue к образу. А вот все виртуальные машины, созданные из этого образа, уже смогут воспользоваться его преимуществами.

 

Сценарии использования

Наибольший выигрыш в производительности с Multiqueue достигается при условиях:

  • Относительно большие пакеты трафика.
  • Виртуальная машина активна во многих сетевых подключениях одновременно, при этом трафик проходит между ВМ, ВМ с хостом или ВМ с внешней системой.
  • Количество очередей равно количеству виртуальных CPU (поддержка нескольких очередей оптимизирует сходство прерываний RX и выбор очереди TX, чтобы сделать конкретную очередь частной для определенного vCPU).

Хотя функция virtio-net multiqueue обеспечивает повышение производительности, она имеет некоторые ограничения и поэтому не должна включаться безоговорочно:

  • ОС ВМ ограничена ~ 200 векторами MSI. Для каждой очереди сетевого адаптера требуется вектор MSI, а также любое устройство virtio или назначенное устройство PCI. Определение экземпляра с несколькими сетевыми адаптерами virtio и виртуальными ЦП может привести к превышению лимита гостевого MSI.
  • Multiqueue хорошо работает для входящего трафика, но иногда может вызвать снижение производительности для исходящего трафика.
  • Включение multiqueue увеличивает общую пропускную способность сети, но одновременно увеличивает потребление ресурсов CPU.
  • Включение множественной очереди virtio-net в конфигурации хоста QEMU не включает функциональность в ОС ВМ. Администратору ОС ВМ необходимо вручную включить его для каждой сетевой карты, для которой требуется эта функция, с помощью ethtool.
  • Векторы MSI все равно будут использоваться (тратиться впустую), если на хосте была включена функция множественной очереди, но не была включена администратором в ОС ВМ.
  • В случае, если количество виртуальных сетевых адаптеров в экземпляре ВМ пропорционально количеству виртуальных ЦП, включение функции множественной очереди менее важно.

 

Включение multiqueue через CLI

Нужно выполнить команду над ранее загруженным образом:

openstack image set IMG-UUID --property hw_vif_multiqueue_enabled=true

 

 

Проверка

Внутри виртуальной машины, созданной из образа со включенным multiqueue, настройку канала сетевой карты можно проверить и при необходимости изменить с помощью следующих команд:

ethtool -l eth0 # чтобы увидеть текущее количество очередей ethtool -L eth0 включая <nr-of-queues> #, чтобы установить количество очередей. Должно соответствовать количеству виртуальных ЦП
Что вас интересует?
Получить демо-доступ

Спасибо за ваш запрос, мы свяжемся с вами в ближайшее время!