Я настраиваю программное обеспечение, для работы которого потребуется около 12 ядер, но я запускаю его на виртуальной машине vSphere, что означает, что можно настроить не более 8 (виртуальных) ядер. [1] Физическая машина, на которой это будет работать, имеет 24 доступных ядра и размещает только одну другую виртуальную машину. На этой виртуальной машине также выделено 8 ядер.
Поскольку у моей машины 8 ядер, а у другой - 8 ядер, это означает, что 8 ядер, кажется, полностью бездействуют. Это кажется неправильным.
Я предполагаю, что VMWare сделала что-то умное - что, хотя у меня может быть только 8 ядер, выделенных для моей машины, на самом деле, если на задней панели 24 ядра, то я гарантированно получу 8 из них, но может использовать 24 из них, если никакая другая машина их не использует.
Я читал о совместном использовании в vSphere [2], но это немного выше моей головы.
Кто-нибудь может объяснить, как это работает?
Редактировать: Это объяснение, которое мне дали по поводу ограничения в 8 ЦП, но мне нужно его подтвердить.
vSphere использует динамическую балансировку нагрузки процессора, которая позволяет каждому назначенному ядру в гостевом доступе ко всем ядрам на хосте. В то время как гостевая ОС будет видеть только 8 физических процессоров, каждый процессор имеет доступ к пулу из 24 ядер. Это очень похоже на то, как работает мэйнфрейм.
Это намекает на то, что 8 ядер ведут себя больше как 24 ядра, но теперь это кажется неправильным. Это?
Ссылки:
Это означает, что на вашей виртуальной машине никогда не будет более 8 потоков, выполняющихся параллельно. Однако с помощью волшебства распределения ресурсов ESX вы можете дать этим потокам немало мощности. Вы не ограничены максимальной скоростью ваших реальных процессоров, методы балансировки нагрузки процессора ESX позволят работать быстрее, чем это ... до тех пор, пока то, что вы делаете с ним, может выполнять такое немного не по порядку .
Это достигается за счет использования структуры очереди для ресурсов ЦП. При необходимости работа распределяется на несколько процессоров. Один виртуальный ЦП может работать на любой физических процессоров в системе (или процессоров в локальном узле, если в системе NUMA). Достижение производительности виртуальных ЦП, превышающей производительность физического ЦП, достигается путем распределения работы с одного виртуального ЦП на несколько физических ЦП параллельно или, по крайней мере, очень близко друг к другу.
Когда приходит время пересобирать работу, возвращаемую несколькими процессорами, для эмуляции одного виртуального ЦП, виртуальная машина выглядит как один очень быстро работающий ЦП. ESX собирает несколько рабочих единиц в правильном порядке.
Конечно, не все рабочие нагрузки подходят для этого. Вакансии, которые выполняют много итеративной работы, которая слабо связана друг с другом, возможно, является лучшим случаем для этого. Задания, которые связаны с множеством тесных зависимостей с более ранними инструкциями, например с рекурсивными вызовами криптоалгоритмов, не смогут масштабироваться так далеко.
vSphere 4.0 имеет жесткое ограничение в 8 виртуальных ЦП. Это все, что он будет использовать, и это довольно разумный предел. vSphere больше предназначена для работы с множеством гостевых виртуальных машин на хосте, а не с парой. Возможно, вы захотите увидеть, сможете ли вы кластеризовать 3-6 виртуальных машин вместо того, чтобы просто делать 2.
Это связано с тем, как они лицензируют свое программное обеспечение. Вы получаете столько энергии бесплатно. Если вы хотите большего, вам придется за это заплатить. http://www.vmware.com/download/eula/multicore.html