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