VMmanager

Multiqueue

Multiqueue (многопотоковая очередь) — это технология многопоточной обработки сетевых пакетов. При использовании multiqueue пакеты, проходящие через сетевой интерфейс, обрабатываются несколькими параллельными очередями. Multiqueue позволяет увеличить пропускную способность сети ВМ за счёт повышенного потребления ресурсов CPU. 

Особенности работы функции

В текущей версии платформы работа с multiqueue доступна только через API.

Функция доступна только в кластерах с виртуализацией KVM.

Если настройки multiqueue не заданы, то каждая сетевая карта ВМ использует одну очередь.

Количество очередей на каждом интерфейсе ВМ не может превышать число её vCPU. Если число vCPU станет меньше числа очередей, число очередей будет автоматически сокращено.

Изменение количества очередей поддерживается только для VirtIO-устройств.

Настройка multiqueue

Создание конфигурации ВМ

Чтобы создать конфигурацию ВМ с multiqueue, выполните POST-запрос /vm/v3/preset. Укажите количество очередей в параметре iface_queues.

Пример запроса
curl -X 'POST' \
  'localhost:1500/vm/v3/preset' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -H 'internal-auth:on' \
  -d '{
  "name": “test_preset",
  "cpu_number": 4,
  "ram_mib": 2048,
  "virtualization_type": "kvm",
  "hdd_mib": 1024,
  "iface_queues": 2
}'

Изменение конфигурации ВМ

Чтобы изменить конфигурацию ВМ с multiqueue, выполните POST-запрос /vm/v3/preset/{preset_id}. Укажите количество очередей в параметре iface_queues.

Пример запроса
curl -X 'POST' \
  'localhost:1500/vm/v3/preset/1' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -H 'internal-auth:on' \
  -d '{
  "name": “test_preset",
  "cpu_number": 4,
  "ram_mib": 2048,
  "virtualization_type": "kvm",
  "iface_queues": 2
}'

Создание ВМ

Чтобы создать ВМ с multiqueue, выполните POST-запрос /vm/v3/host. Укажите количество очередей в параметре queues для каждого интерфейса.

Пример запроса
curl -X 'POST' \
  'localhost:1500/vm/v3/host' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'x-xsrf-token: some_token' \
  -d '{
  "cpu_number": 4,
  "custom_interfaces": [
    {
      "bridge_id": 1,
      "is_main_network": true,
      "model": "virtio",
      "queues": 4
    }
  ],
   "vxlan": [
    {
      "id": 5,
      "ipnet": 12,
      "ipv4_number": 1,
      "model": "virtio",
      "queues": 3
    }
  ]
}'

Создание сетевого интерфейса ВМ

Чтобы создать сетевой интерфейс с multiqueue, выполните POST-запрос /vm/v3/host/{host_id}/iface. Укажите количество очередей в параметре queues.

Пример запроса
curl -X 'POST' \
  'localhost:1500/vm/v3/host/1/iface' \
  -H 'accept: application/json' \
  -H 'Content-Type: application/json' \
  -H 'internal-auth:on' \
  -d '{
  "bridge_id": 124,
  "ip_count": 1,
  "ippool": 1,
  "is_main_network": true,
  "mac": "AA:BB:CC:DD:EE:FF",
  "model": "virtio",
  "no_ip": false,
  …
  "queues": 2
}'

Изменение сетевого интерфейса ВМ

Чтобы изменить настройки сетевого интерфейса с multiqueue, выполните POST-запрос /vm/v3/host/{host_id}/iface/{iface_id}. Укажите количество очередей в параметре queues.

Пример запроса
curl -X 'POST' \
  'localhost:1500/vm/v3/host/1/iface/1' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -H 'internal-auth:on' \
  -d '{
  "model": "virtio",
  "queues": 3
}'

Возможные ошибки

При работе с multiqueue возможны следующие ошибки:

КодСообщениеПричина
5389

Invalid resource value

iface_queues(X) > cpu_number(Y)

Число очередей превышает число vCPU
5136

Bad query

The number of network interface queues cannot be greater than the number of vCPUs

Число очередей превышает число vCPU
5136

Bad query

Non-default queues value can be set only for VirtIO (KVM) devices, default: 1

Изменение количества очередей поддерживается только для VirtIO-устройств

Диагностика

Чтобы посмотреть количество очередей на сетевых интерфейсах:

  1. Подключитесь к ВМ по SSH.
  2. Выполните команду:
    ip -d a show
    Изучите вывод команды. Количество очередей отображается для каждого интерфейса в параметрах numtxqueues и numrxqueues


Дата последнего обновления статьи: 29.05.2025. Статья подготовлена техническими писателями ISPsystem.