Віртуалізація - число ядер на віртуальний процесор віртуальної машини в vmware vsphere

Як багато хто знає, ще в попередніх версіях VMware vSphere з'явилася така можливість, як завдання декількох віртуальних ядер для vCPU віртуальних машин (cores per socket), яке потрібно, в основному, для випадків хитрощів з ліцензуванням. Тобто, наприклад, для випадків, коли потрібно покрити ліцензіями тільки віртуальні сокети, а продуктивності потрібно більше (як варіант - так можна робити з ліцензіями Windows Server НЕ Datacenter Edition).

Багатьох також турбує питання, чи вплинуть зміни, зроблені тут, на продуктивність ВМ. Відповідь проста - можливо, якщо ви змінюєте дефолтну конфігурацію і ставите більше одного віртуального ядра на віртуальний процесор. Тому без ліцензійної потреби краще ці настройки не міняти.

  • Залишати по одному ядру на віртуальний процесор машин.
  • Якщо все-таки доводиться змінювати число ядер на vCPU, то потрібно знати особливості організації архітектури сервера.

Про другий пункт і йдеться нижче. Справа в тому, що в VMware vSphere є така технологія як vNUMA, яка працює при кількості vCPU рівному 8 і більше для однієї віртуальної машини і дозволяє найоптимальнішим чином відображати фізичну архітектуру сервера на топологію NUMA-вузлів віртуальної машини (за кількістю та розміром).

Наприклад, для процесора AMD Opteron 6174, який має два 6-ядерні процесори, об'єднаних в єдиний сокет - така архітектура являє собою 8 NUMA-вузлів (дві пари на один процесор). Таким чином для конфігурації без зміни cores per cpu для віртуальної машини технологією vNUMA буде підтримуватися 8 vNUMA вузлів, що відмінно відображає фізичну архітектуру:

Це для випадку, коли ми не змінюємо кількість ядер на vCPU. В VMware прогнали тест в гостьовій ОС (якась внутрішня утиліта) і здобули базову час виконання цього бенчмарка для зазначеної конфігурації:

Якщо ж в ВМ ядер на віртуальний сокет більше одного, то розмір vNUMA буде дорівнює кількості процесорів ВМ. Виставляємо 2 сокета з 12 ядрами на сокет:

Отримуємо 2 vNUMA-вузла, що не збігається з конфігурацією обладнання:

Віртуалізація - число ядер на віртуальний процесор віртуальної машини в vmware vsphere

Тому тест виконується довше:

А ось якщо зробимо цілих 24 ядра на один сокет:

То отримаємо всього один вузол vNUMA:

І як наслідок, найнижчу продуктивність ВМ:

65 секунд проти 45 в першому тесті, що означає падіння продуктивності на 31% для даного випадку. Тому не міняйте просто так число ядер на процесор. Саме ж кількість процесорів можна міняти сміливо.

Додаткову інформацію з цього питання можна знайти тут: