Технология Intel Turbo Boost в VMware ESXi. Cчетчик %Aperf/Mperf.
В книге VMware vSphere 6.5 Host Resources Deep Dive довольно подробно написано про технологию Intel Turbo Boost в VMware ESXi, а также про смежные вопросы, как то Host power management. Однако когда на форуме VMware VMTN (https://communities.vmware.com/community/vmtn) был задан вопрос про Turbo Boost, сходу на него ответить не получилось. Но вопрос в итоге был решен, и здесь я опишу результат.
Итак, что такое Intel Turbo Boost?
«Технология Intel® Turbo Boost 2.0 повышает производительность процессора и графики при пиковых нагрузках, автоматически увеличивая базовую частоту ядер процессора, если мощность, потребляемый ток и температура не превышают максимальных значений» (https://www.intel.ru/content/www/ru/ru/architecture-and-technology/turbo-boost/turbo-boost-technology.html)
Работа технологии Turbo Boost неразрывно связана с настройками Power Management. В свою очередь Power Management настраивается как на хосте ESXi (Configure\Power Management), так и в БИОСе.
Так вот, если хоть в одном месте стоит High Performance, то Turbo Boost работать не будет.
Отдельно стоит остановиться на High Performance.
Как указывает Mark Achtemichuk в статье BIOS Power Policies Affect Performance:
«Вероятно, вы слышали общее руководство по настройке BIOS вашего сервера хостинга на «Maximum Performance, чтобы вытащить все, что вы можете, с хоста. Хотя это могло быть советом мудрецов в прошлом, оно уже не актуально. В эпоху vSphere 5 рекомендация VMware заключается в том, чтобы установить BIOS физического сервера в:
- OS Controlled
- Turbo Boost – Enabled
- C1E – Enabled
- P-States – Enabled
По умолчанию vSphere будет использовать политику «Balanced», которая продолжает демонстрировать отличную производительность при одновременном энергосбережении. Фактически, при использовании этой политики Turbo Boost может обеспечить более высокую производительность для однопоточных рабочих нагрузок.»
К слову — в документе «Performance Best Practices for VMware vSphere 6.5» также идет речь о том, что Balanced является предпочитаемой настройкой:
«Хотя политика электропитания по умолчанию в ESX / ESXi 4.1 была High performance, в ESXi 5.0 и более поздних версиях по умолчанию Balanced. Эта политика обычно не влияет на производительность CPU-интенсивных рабочих нагрузок. Однако в редких случаях политика Balanced может немного снизить производительность чувствительных к задержкам рабочих нагрузок. В этих случаях, выбрав политику High performance, обеспечит полную аппаратную производительность.»
Однако есть мнение, которое я в целом разделяю, что настройка «Balanced» может повысить сложность траблшутинга.
Также хочется отметить, что если на хостах работают ВМ по технологии Fault Tolerance (FT), то настройка должна быть High performance.
Еще одним условием является поддержка процессором технологии Turbo Boost.
В нашем случае речь шла о Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz
Согласно спецификации технология поддерживается
Данная таблица показывает, что если нагружены 1-2 ядра, то их частота может быть увеличена до 3.5 ГГц. Если же загружены 5 и больше ядер, то выше 3.1 ГГц их частота не поднимется.
При этом стоит отметить, что ESXi не позволяет влоб узнать на какой частоте работают ядра. Давайте рассмотрим как можно высчитать частоту работы ядер.
Запускаем esxtop, далее экран p, далее кнопка f и добавить счетчики %Aperf/Mperf по кнопке f.
У автора вопроса вид был следующий:
Как видим, %Aperf/Mperf равен 119,2, т.е. превышение 20%. Считаем: 2600 (номинальная частота) *1,2=3120, т.е. 3.1 ГГц, что соответствует таблице выше.
На первый взгляд все нормально — превышение есть, значит Turbo Boost работает.
Но в документе Performance Best Practices for VMware vSphere 6.5 скрин работающего Turbo Boost такой:
Т.е. процент превышений для ядер РАЗНЫЙ!
Да и материалах Intel речь идет о ПОЯДЕРНЫХ режимах:
При дальнейшем обсуждении вопроса было установлено, что у автора везде стоит High Performance.
При изменении настройки на Balanced, вид esxtop изменился:
Т.е. процент превышений стал разным.
При совмещении двух скринов ДО и ПОСЛЕ видим и другие изменения
Надеюсь, позже мне удастся более глубоко протестировать работу технологии Intel Turbo Boost в VMware ESXi. Сейчас же подведу итог того, что же было выяснено в результате решения вопроса и почему сразу он не решился.
Для начала цитата из «Performance Best Practices for VMware vSphere 6.5»:
If the column shows a value of 100, it is running at its rated (base) frequency, and if the column shows a value above 100, then the core is leveraging Turbo Boost.
The APERF/MPERF ratio shown in esxtop is in real-time.
(Если столбец показывает значение 100, он работает на своей номинальной (базовой) частоте и если столбец показывает значение выше 100, тогда ядро использует Turbo Boost.
Отношение APERF / MPERF, показано в esxtop в режиме реального времени.)
Вот это и смутило при первом взгляде на вопрос — т.е. судя по цитате Turbo Boost в приведенном примере явно работал, но при этом Turbo Boost никак не мог повышать частоту всех ядер на одинаковое значение.
В итоге эксперимента (изменения High Performance на Balanced) можно сделать вывод, что значение столбца APERF/MPERF выше 100% само по себе не может служить достаточным доказательством функционирования технологии Turbo Boost.