В блоге о производительности VMware появился интересный пост о том, как технология CPU Hot Add влияет на производительность операций в виртуальной машине. Как вы знаете, возможности Hot Add в VMware vSphere позволяют добавлять аппаратное обеспечение в виртуальную машину без необходимости ее выключения. В частности, CPU Hot Add позволяет добавить vCPU в запущенную ВМ таким образом, чтобы поддерживающая эту возможность гостевая ОС сразу приняла этот процессор в работу.
Между тем, согласно статье KB 2040375, функция Hot Add существенно влияет на производительность гостевой ОС, поскольку механизм горячего добавления узлов отключает функцию vNUMA. Напомним, что этот механизм включается при количестве vCPU большем 8 для одной виртуальной машины и позволяет самым оптимальным образом отображать физическую архитектуру сервера на топологию NUMA-узлов виртуальной машины (по количеству и размеру). Это приводит к тому, что CPU и память стараются взаимодействовать друг с другом в рамках одного NUMA-узла, что приводит к наименьшим задержкам при выполнении операций.
В VMware для измерения численных показателей потерь производительности при включении Hot Add решили взять бенчмарк DVD Store 3 (DS3), который используется для тестирования рабочих нагрузок в транзакционных базах данных (в частности нагрузок, например, интернет-магазинов). В качестве референсной базы данных использовалась БД размером 300 ГБ, а доступ к ней через драйвер DS3 производился из виртуальной машины с 20 vCPU и 32 ГБ RAM на борту.
Напомним, что для ВМ функции Hot Add включаются и отключаются в разделе Virtual Hardware > CPU > CPU Hot Plug, где есть чекбокс Enable CPU Hot Add.
При 28 vCPU в виртуальной машине и выключенном Hot Add консоль SQL Server Management Studio видит 2 NUMA-узла:
При включенном - только один NUMA-узел:
Далее были запущены стандартные тесты для обеих конфигураций с постепенным увеличением числа потоков для воркеров (threads), где главным критерием производительности было число операций в минуту (orders per minute, OPM). В итоге получилась вот такая картина:
Результат - включение Hot Add снизило производительность на 2-8% в зависимости от числа потоков. Поэтому включать Hot Add для виртуальной машины нужно только тогда, когда вам точно нужно именно горячее добавление vCPU или vRAM для этой ВМ.