У нас есть хост ESX:
Он имеет 2 процессора по 8 ядер в каждом и включен HT. Итак, всего 16 физических ядер или 32 логических ядра.
На нем есть одна выделенная виртуальная машина SQL (на этом хосте не работают другие виртуальные машины), и ему назначено 16 виртуальных ЦП:
а конфигурация SQL NUMA выглядит так:
Означает ли это, что эти 16 виртуальных ЦП сопоставляются с 16 логическими ядрами в 1 ЦП, и что другой ЦП, содержащий еще 16 логических ядер, простаивает?
Будет ли иметь значение увеличение его до 32 виртуальных ЦП?
я нашел это статья, в котором говорится, что не следует назначать больше виртуальных ЦП, чем фактических физических ядер, независимо от логических ядер. Почему нет?
Как правило, сохранение назначенных виртуальных ЦП не более чем физическими ядрами (игнорирование HT) ведет к риску. У вас есть 2 физических процессора по 8 ядер каждый (хотя я помню, что у E5-2667 их было 6) - это означает 16 настоящих ядер. Больше назначать не нужно. Обратите внимание, что во многих ситуациях, подобных вашей, скорее всего, закончится нехватка оперативной памяти, а не мощности процессора.
MSSQL сильно загружает процессор, и не зря. Это также снизило бы эффективность HT, поскольку HT только разделяет нагрузку на процессор, но не удваивает ваши вычислительные ресурсы. Если вы собираетесь запустить высокопроизводительный SQL-сервер, вы можете рассмотреть возможность назначения правил сопоставления ядер в vSphere и запретить другим виртуальным машинам работать с этими ядрами. Я знаю, что это противоречит цели виртуализации, но все же есть некоторые преимущества.
Причина, по которой они не рекомендуют это, заключается в том, что, как HyperThreading работает в VMware, это не вдвое больше вычислительной мощности, а, скорее, на 10% больше, согласно некоторым тестам. Таким образом, вам не следует определять больше виртуальных ЦП, чем физических ядер. Если эта огромная виртуальная машина не одна на этом хосте, вы также можете иметь в виду, что пока эти тактовые циклы виртуальных машин работают, на других виртуальных машинах ничего больше не произойдет, поскольку эта единственная виртуальная машина потребляет все доступные ядра, и он не будет работать, если доступны не все 16 ядер.