VMware. Может ли виртуальная машина с 1 виртуальным ЦП использовать более одного физического ядра одновременно?

Предположим, у меня есть физический хост ESX с ОДНЫМ четырехъядерным процессором и отключенной гиперпоточностью. Это означает, что он имеет в общей сложности 4 физических ядра или pCPU. Я создаю одну виртуальную машину на этом узле VMware. Я назначаю эту виртуальную машину, чтобы иметь 1vCPU и не ограничивать процессор.

Вопрос: Если на виртуальной машине запущено приложение "процессор убийца", которое требует все больше и больше циклов процессора, может ли виртуальная машина полностью потреблять все 4 базовых физических ядра в любой данный момент времени?

Я думаю, что ответ - нет. В любой момент времени одна виртуальная машина vCPU может потреблять не более 1 физического ядра. Итак, в моем примере, так как другие виртуальные машины не работают, VMware запланирует запуск виртуальной машины на одном физическом ядре. Когда это физическое ядро ​​будет использовано на 100%, загрузка ЦП виртуальной машины зафиксируется до 100%, и все. Остальные 3 ядра в основном будут простаивать. Правильный?

2 ответа

Если на виртуальной машине запущено приложение "процессор убийцы", которое требует все больше и больше циклов процессора, может ли виртуальная машина полностью потреблять все 4 базовых физических ядра в любой данный момент времени?

Нет.

Итак, в моем примере, так как другие виртуальные машины не работают, VMware запланирует запуск виртуальной машины на одном физическом ядре. Когда это физическое ядро ​​будет использовано на 100%, загрузка ЦП виртуальной машины зафиксируется до 100%, и все. Остальные 3 ядра в основном будут простаивать. Правильный?

Да, это правильно.

Виртуализация не волшебна - одно ядро ​​- это одно ядро, и если выделить один процессор, ваша виртуальная машина сможет когда-либо потреблять циклы процессора только на одно ядро.

Это зависит от того, закодирована ли ваша программа несколькими потоками. Например, вы можете попросить, чтобы один поток вычислял что-то параллельно с другим потоком, выполняющим какую-то другую задачу.

Теперь, если у вас есть только одно ядро ​​... тогда потоки вашей программы могут работать только в тандеме (один за другим)... и они вообще не будут выполняться параллельно.

Однако, если вы находитесь в мире виртуальных машин, ваше "ядро" фактически является вашим виртуальным ЦП. VM ware достаточно умен, чтобы признать, что тандемные потоки на vCPU могут быть распределены по нескольким физическим ядрам. Предполагая, что вы не включили привязку к процессору, и в то время, когда есть запасные ядра, VMware сможет воспользоваться этой возможностью.

Другие вопросы по тегам