Архив метки: turbo mode

AHV Turbo Mode — первые результаты

Интересные результаты показали наши разработчики для AHV Turbo Mode (AKA Frodo).

Напомню, AHV Turbo Mode, как внутренний project codename называвшийся Frodo, это новый способ работать с дисковым хранилищем в Nutanix AHV, оптимизация пути передачи данных и более высокая параллельность обработки очередей, которые теперь могут обрабатываться большим числом ядер CPU на хост-машине, чем было до того в vanilla QEMU. Он появился впервые в AOS 5.5, вышедшем на прошлой неделе.
Это улучшение особенно важно для AllFlash и NVMe машин, выходящих у нас в свет следующем году.
Как вы видите из графика, на обычной VM рост производительности ввода-вывода при увеличении числа параллельных операций практически останавливается в районе 30-40 Outstanding Requests, при этом с использованием AHV Turbo Mode он продолжает свой рост вплоть до 128. Это отличный потенциал для роста производительности для новых AllFlash, так как проявляется эта новая возможность прежде всего на них.

AHV Turbo mode

Наш сотрудник, Josh Odgers, ведущий свой блог тут: http://www.joshodgers.com, недавно опубликовал интересное описание того, как работает AHV Turbo, особый режим работы ввода-вывода, сокращающий путь от UVM (User VM) к CVM (Controller VM) и непосредственно к «железу» через гипервизор.
Как вы уже знаете, CVM у нас находится в User Space гипервизора, и, в отличие от схемы ввод-вывода, например, VSAN, где он осуществляется в Kernel Space. И VMware это все еще позиционирует как большое преимущество, мотивируя это тем, что, дескать, работа в kernel-space более эффективна и более производительна. С одной стороны это так, конечно. С другой, как показывает Nutanix, разница в производительности в данном случае не так значительна, а, между тем, работа в user-space имеет множество преимуществ с точки зрения защищенности и изолированности, безопасности, простоты обновлений и гипервизоро-независимости. Хорошо спроектированная архитектура для user-space практически нивелирует преимущества в производительности для kernel-space, и при этом у нас еще не закончились фичи, позволяющие нам оптимизировать и улучшать процесс ввода-вывода, в особенности если ниже, под CVM и пользовательскими VM лежит наш собственный гипервизор.
Вот, например, как работает режим AHV Turbo, появившийся в новых версиях AHV, и предназначенный, в первую очередь, для оптимизации работы с новыми устройствами хранения, такими как NVMe и 3D Xpoint. В нем Nutanix сократил и спрямил Data IO path между пользовательской VM и «железом» серверной платформы.

На рисунке ниже показывается, как ввод-вывод пользовательской VM (UVM) проходит через подсистему Frodo (служебное имя для Turbo Mode) которая работает в User Space (не в kernel) и затем идет в Stargate (подсистема ввода-вывода) в Controller VM).

Еще одним преимуществом AHV и Turbo mode является то, что администратору не требуется конфигурировать множество адаптеров PVSCSI и распределять виртуальные диски по контроллерам. При добавлении виртуального диска в VM под AHV, многопоточная и много-очередная архитектура используется автоматически, что повышает производительность ввода-вывода как на запись, так и на чтение.
Много-очередной поток ввода-вывода обслуживается с помощью множественных тредов модуля frodo (Turbo mode) и проходит через stargate.

Как показано на рисунке выше, Nutanix с Turbo mode устраняет узкие места, характерные для традиционных гипервизоров, например — причину, по которой VMFS datastore требуется использовать VAAI Atomic Test and Set (ATS) для устранения проблем с большим количеством VM на датасторе (например более 25). Напомню, в классическом VMFS существует ряд операций, которые блокируют датастор целиком, например это любые изменения в метаданных датастора, вызываемые, например, созданием или включением VM, созданием ее снэпшота, запуск Storage vMotion, и так далее. В случае таких операций, без использования VAAI ATS, будет на определенное время, при выполнении этих операций, блокирован ввод-вывод на датастор целиком, для ВСЕХ VM на нем находящихся. Это не слишком страшно, если у вас всего несколько VM на датасторе, и является существенной проблемой когда этих VM на датасторе много, не только потому, что это «тормозит» гораздо больше приложений, но и потому, что при большом количестве VM операции, связанные с блокировкой VMFS, возникают чаще. В случае AHV при использовании Turbo mode, не только каждый vdisk будет иметь свою собственную очередь команд (вместо одной на датастор или контейнер в «классике») но также добавляется и очередь per-vcpu на уровне виртуальных контроллеров.

Вот какие результаты работы AHV Turbo приводит у себя в блоге Джош:

На четырехнодовом блоке четырехлетней давности NX-3450, стоящей в лабе, с двумя SATA SSD на ноду и с отключенным memory read cache, результаты от включения AHV Turbo:
На 25% ниже загрузка CPU на задаче sequential write, при том, что значение производительности практически не изменилось (2929 MBps vs 2964 MBps)
На 27.5% выше sequential read performance (9512 MBps vs 7207 MBps)
На 62.52% увеличилась производительность random read IOPS (510 121 vs 261 265)
На 33.75% увеличилась производительность random write IOPS (336 326 vs 239 193)

И еще из интересного оттуда же. У нас есть клиент, у которого эксплуатируется под Acropolis Hypervisor 1750 нод!