Написать в техподдержку Позвонить нам
Админпанель Выход

Содержание статьи:

    Включение multiqueue

    Описание

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

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

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

    • образ виртуальной машины должен быть загружен пользователем самостоятельно
    • образ виртуальной машины должен отличаться от образов по умолчанию (предустановленных в MCS)

    Важно

    По данной инструкции можно только добавить опцию 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> #, чтобы установить количество очередей. Должно соответствовать количеству виртуальных ЦП

    Полезна ли была эта статья?