Так чем же может быть вызвана необходимость иметь несколько ядер в виртуальной машине?
Причина проста. Microsoft Windows поддерживает лишь ограниченное число процессоров в своей ОС.
Windows | Версия | Максимальное число процессоров |
Win2k3/2k8 | Standard | 4 CPUs |
Win2k3/2k8 | Enterprise | 8 CPUs |
Windows 2003 | DataCenter 32bit | 32 CPU |
Windows 2003 | DataCenter 64bit | 64 CPU |
Windows 2008 | DataCenter 64bit | 64 CPU |
Win 2k8 R2 | 64 физических CPU или 256 логических CPU |
Возьмем в качестве примера Dynamics AX AOS server, вещь достаточно тяжелая и для нормальной работы требует большого количества процессоров или ядер. В сервер AOS есть такое понятие как helper, это что то типа потока, так вот, можно установить максимальное количество таких helper-ов для работы с распределенными пакетными заданиями. Максимальное количество helper-ов (а значит и вспомогательных ядер) — 21. И если АОС работает на Windows 2003 Standard, то для улучшения производительности мне продеться задействовать технологию многоядерности, ведь в этой операционной системы я смогу использовать лишь 8 «физических» процессоров.
Приведу еще один пример. Лицензирования MS SQL Server осуществляется по физическим процессорам, а ядра в их модели лицензирования не учитываются. Т.е. выгодно покупать однопроцессорную лицензию MS и ставить ее на виртуалку с 4 ядрами, тем самым мы обеспечим низкую цену такого решения и нормальную производительность.
Как задействовать многоядерность в виртуальной машине?
Сначала про требования:
Первое: железо в ВМ должно быть версии 7 (7 hardware).
Второе: версия vSphere 4.
Третье: если вы хотите использовать 8 vCPU, вам необходима лицензия Enterprise Plus (некисло так…)
Допустим вам нужно создать виртуалку с 4 vCPU и двумя ядрами на каждом из этих процессоров. А вот дальше расскажу вам страшный секрет: вы должны дать такой машине 8 vCPU (4vCPU x 2 ядра= 8vCPU), а не 4 vCPU. Т.е. количество сокетов рассчитывается по формуле vCPU/количество ядер.
Эти мы предоставим виртуальной машине всего 8 vCPU. Теперь нужно настроить 2 ядра для каждого из vCPU. Эта настройка выполняется при помощи специального параметра в секции Configuration Parameters. Отключите ВМ, а потом перейдите в меню Edit VM Setting.
Вручную нужно добавить следующий параметр: cpuid.coresPerSocket
Затем, включите свою виртуальную машину.
Как же проверить многоядерность?
Ну, самый простой способ – открыть Task Manager (диспетчер задач) и Device Manager (диспетчер устройств).
Сразу скажу, картинки из другого примера, но главное, понять принцип. На картинке было бы отображено 8 ядер, в этом случае видно только 4, но это другая машина.
Есть еще способ просмотра количества ядер в Windows 2008 и выше.
Наберите в ВМ: >cmd->wmic->cpu
Прокрутите окно до середины. Это опять лишь пример и выполнен на другой машине. Наведите прокрутки посередине.
В W2k3 придется использовать утилиты сторонних производителей.
Возможные проблемы
Как я уже говорил, вы должны использовать версию с лицензией Enterprise Plus или Evaluation. В противном случае, вы получите такую ошибку.
Так в чем же разница между многопроцессорной и многоядерной виртуальной машиной?
С точки зрения производительности – разницы никакой. Отличие только в предпочтениях. Однако хорошим тоном в том случае, если вы хотите иметь 8 ядерный процессор, создать 4 VCPU х 2 ядра или 2 х VCPU с 4 ядрами.
1 comment
Настраивал многоядерность по старому посту (//vmblog.ru/kak-nastroit-kolichestvo-yader-na-cpu-v-virtualnoj-mashine/) и там этот момент откомментировал 🙂
а тут уже все описано, как надо… спасибо за блог!
Comments are closed.