Включение множества очередей (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.
-
Создайте ВМ, в которой больше одного ЦП, и подключитесь к ней.
-
Посмотрите все сетевые интерфейсы:
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. -
Посмотрите текущее количество очередей:
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
Количество очередей не может быть больше количества виртуальных ЦП.
-
Создайте ВМ и подключитесь к ней.
-
Выполните команду:
sudo ethtool -L <имя_сетевого_интерфейса> combined <число_очередей>
-
Проверьте новое количество очередей (параметр
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