Программно-ускоренная сеть в Compute Cloud
Если ваше приложение нагружает ядра ВМ на предельных уровнях и одновременно с этим требует передачи больших объемов сетевого трафика, пользовательские и сетевые процессы могут начать борьбу за аппаратные ресурсы. Чтобы исключить такую ситуацию, рекомендуется использовать программно-ускоренную сеть.
Обычная сеть ВМ
В инфраструктуре Yandex Cloud все виртуальные машины работают в среде виртуализации QEMU-KVM
Вычислительную нагрузку можно логически разделить на три части:
- Пользовательская нагрузка — процессы операционной системы и пользовательские процессы, которые запускаются в ОС пользовательской ВМ.
- Процессы, обеспечивающие работу сетевых дисков.
- Процессы для обработки сетевой трафик ВМ.
Распределение нагрузки по вычислительным ядрам можно представить следующим образом:
На схеме видно, что пользовательская нагрузка и обработка сетевого трафика ВМ распределяются по всем вычислительным ядрам, которые выделены виртуальной машине.
Процессы, которые обеспечивают работу сетевых дисков, отделены от пользовательской нагрузки и выполняются на вычислительных ядрах из отдельного пула, сервисных ядрах — на схеме они обозначены как Core S1
, Core Sn
.
Для изоляции обработки сетевого трафика ВМ от пользовательской нагрузки можно использовать механизм программно-ускоренной сети (Software Accelerated Network, SAN).
Программно-ускоренная сеть
Программное ускорение сети происходит за счет переноса процессов обработки сетевого трафика ВМ с вычислительных ядер виртуальной машины на дополнительные вычислительные ядра, которые выделяются из общего пула ядер, доступных физическому серверу. Для включения функции SAN требуется полная остановка ВМ.
Распределение нагрузки по вычислительным ядрам с включенным SAN можно представить следующим образом:
На схеме показано использование двух дополнительных вычислительных ядер — Core 4
и Core 5
для обработки сетевого трафика. Количество сервисных вычислительных ядер зависит от количества ядер ВМ:
- Если ВМ размещается на одном NUMA-узле физического сервера, то при включении SAN ей будет выделено 2 дополнительных вычислительных ядра для обработки сетевого трафика (показано на схеме).
- Если ВМ размещается на двух NUMA-узлах физического сервера, то при включении SAN ей будет выделено 4 дополнительных ядра.
Примечание
Дополнительные вычислительные ядра, которые выделяются при включении SAN, не будут видны внутри пользовательской ВМ.
SAN нельзя включить для виртуальной машины с уровнем производительности меньше 100%.
Таким образом, c помощью SAN исключается борьба пользовательской и сервисной нагрузок за аппаратные ресурсы, на которых работает ВМ — весь сетевой трафик ВМ обрабатывается отдельно. Благодаря этому снижаются задержки и потери пакетов при передаче трафика, а вычислительные ресурсы ВМ освобождаются для обслуживания пользовательской нагрузки.
Стоимость дополнительных аппаратных ресурсов зависит от платформы и количества ядер ВМ.
Чтобы включить программно-ускоренную сеть:
-
включите опцию Программное ускорение сети при создании новой ВМ или измените настройки существующей ВМ;
-
включите опцию Программное ускорение сети в конфигурации базовой ВМ при создании группы ВМ или в YAML-спецификации укажите для ключа
network_settings.type
значениеSOFTWARE_ACCELERATED
.
Рекомендации по использованию программно-ускоренной сети
Программно-ускоренную сеть рекомендуется включать для уменьшения времени обработки запросов:
- На ВМ с пользовательскими инсталляциями баз данных при интенсивной работе с диском и высокой утилизацией CPU (более 70-80%).
- Если внутри ВМ наблюдается большое значение метрики
CPU steal time
. - В группах узлов кластеров Yandex Managed Service for Kubernetes при работе внутрикластерных балансировщиков L7, например Ingress NGINX Controller
или Istio Ingress Gateways .
Важно
Включение SAN не поможет ускорить работу сетевых дисков.