VK Cloud logo

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

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

Ограничения

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

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

На платформе VK Cloud недостаточно включить multiqueue только на уровне образа (в конфигурации QEMU). Администратору ОС необходимо вручную включить функциональность с помощью ethtool для ВМ, которые были созданы до включения multiqueue.

1. Включите multiqueue

2. Проверьте подключение multiqueue

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

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

    sudo ip link show

    Пример вывода:

    1ubuntu@dm-test:~$ sudo ip link show
    21: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    3    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    42: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
    5    link/ether fa:16:3e:1d:3e:08 brd ff:ff:ff:ff:ff:ff
    6    altname enp0s3

    Здесь ens3 — имя сетевого интерфейса, для которого нужно проверить подключение multiqueue.

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

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

    Пример вывода:

    1ubuntu@dm-test:~$ ethtool -l ens3
    2Channel parameters for ens3:
    3Pre-set maximums:
    4RX:             n/a
    5TX:             n/a
    6Other:          n/a
    7Combined:       1
    8Current hardware settings:
    9RX:             n/a
    10TX:             n/a
    11Other:          n/a
    12Combined:       1

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

Количество очередей не может быть больше количества виртуальных ЦП.

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

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

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

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

Пример установки очередей:

1ubuntu@dm-test:~$ sudo ethtool -L ens3 combined 2
2ubuntu@dm-test:~$ ethtool -l ens3
3Channel parameters for ens3:
4Pre-set maximums:
5RX:             n/a
6TX:             n/a
7Other:          n/a
8Combined:       4
9Current hardware settings:
10RX:             n/a
11TX:             n/a
12Other:          n/a
13Combined:       2