VK Cloud logo
Обновлена 27 марта 2024 г. в 15:20

Включение множества очередей (multiqueue) на Linux

VK Cloud поддерживает множества очередей (multiqueue) у образа ВМ и отдельной ВМ для операционных систем семейства Linux.

Ограничения

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

  • ОС ВМ ограничена ~ 200 векторами MSI. Для каждой очереди сетевого адаптера требуется вектор MSI, а также любое устройство virtio или назначенное устройство PCI. Определение экземпляра с несколькими сетевыми адаптерами virtio и виртуальными ЦП может привести к превышению лимита гостевого MSI.
  • Множества очередей хорошо работают для входящего трафика, но иногда могут вызвать снижение производительности для исходящего трафика.
  • Включение множества очередей увеличивает общую пропускную способность сети, но одновременно увеличивает потребление ресурсов CPU.
  • Если функция множества очередей была включена на хосте, но не была включена администратором в ОС ВМ, векторы MSI будут использоваться впустую.
  • Количество очередей автоматически устанавливается равным количеству виртуальных ЦП. Чем больше количество ЦП, тем выше пропускная способность сети.

1. Включите множества очередей

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

  1. Создайте образ ВМ.

  2. Получите список доступных образов:

    openstack image list
  3. Скопируйте ID нужного образа.

  4. Включите множества очередей:

    openstack image set <IMG_ID> --property hw_vif_multiqueue_enabled=true

2. Проверьте подключение множества включения

  1. Создайте ВМ, в которой больше одного ЦП, и подключитесь к ней.

  2. Посмотрите все сетевые интерфейсы:

    sudo ip link show
  3. Посмотрите текущее количество очередей:

    ethtool -l <имя_сетевого_интерфейса>

3. Установите нужное количество очередей для ВМ

  1. Создайте ВМ и подключитесь к ней.

  2. Выполните команду:

    sudo ethtool -L <имя_сетевого_интерфейса> combined <число_очередей>
  3. Проверьте новое количество очередей (параметр Combined):

    ethtool -l <имя_сетевого_интерфейса>