Программно ускоренная сеть в Virtual Private Cloud
Если ваше приложение нагружает ядра ВМ на предельных уровнях и одновременно с этим требует передачи больших объемов сетевого трафика, пользовательские и сетевые процессы могут начать борьбу за аппаратные ресурсы. Чтобы исключить такую ситуацию, рекомендуется использовать в VPC программно ускоренную сеть.
Обычная сеть ВМ
В инфраструктуре 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%.
Таким образом, с помощью 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 не поможет ускорить работу сетевых дисков.