VirtualBox и, возможно, другое программное обеспечение для виртуальных машин позволяет пользователю указать количество процессоров, доступных для виртуальной машины. В моем конкретном случае у меня есть двухъядерный процессор с 64-битной Windows 7, работающей в исходном режиме, и Ubuntu 9.04 64-битной в качестве виртуальной машины.
В файле справки предлагается не устанавливать это значение выше количества доступных физических ядер. Это имеет смысл. Итак, лучше ли выделить 1 или 2 ядра процессора? Зависит ли это полностью от собственной загрузки процессора?
Информация в этом ответе больше не верна . Это было правильно еще во времена строгого совместного планирования, но это уже не так.
Я держу ответ ниже для процветания, но, пожалуйста, не надейтесь, что он будет точным для современных гипервизоров.
Вы никогда не должны назначать все свои ядра в качестве виртуальных ЦП на виртуальной машине.
Если виртуальная машина запрашивает какое-либо время ЦП, VMWare должен выделить либо все виртуальные ЦП, либо ни один из виртуальных ЦП.
Это означает, что в четырехъядерной системе, если вы выделите все 4 ядра, то только процессору или гостю может быть выделено процессорное время, а не оба одновременно.
Это абсолютно разрушит производительность в обеих средах.
Не стесняйтесь выделять нечетное количество ядер (скажем, 3). Это кажется странным, но это совершенно законный вариант.
Обычно я никогда не выделяю более (n / 2) виртуальных ЦП (в вашем случае 2), но обычно я размещаю ядра на серверах с 12–32 ядрами, где вы можете распределить огромное количество виртуальных ЦП без значительного влияния.
источник
Количество ядер, доступных для гостевых процессоров, не так сильно влияет на производительность, как хотелось бы. Он просто регулирует количество ядер, которые «видит» гостевой процессор.
В зависимости от того, как настроен эмулятор, он может буквально вдвое снизить производительность виртуальной машины, ничего не делать или повлиять только на то, как гостевые ОС / приложения разделяют планирование потоков.
Лучше оставить его по умолчанию. Если у вас возникают проблемы с производительностью на главном ПК, вы можете просто настроить приоритет процесса с помощью диспетчера задач Windows.
источник
Как отметил Нейт, поскольку ваша виртуальная машина будет в основном обслуживать однопоточный процесс, нет особых причин выделять более одного ядра.
Однако, если вы планируете использовать его таким образом, чтобы извлечь выгоду из большего количества ядер (многопоточная программа, много параллельных программ, ...), история будет более сложной. Ранее я предполагал, что использование половины ваших процессоров для вашей виртуальной машины было хорошей идеей. Оказывается, это не всегда оптимально.
Единственный способ убедиться в этом - запустить тесты. Я не знаю почему, но в моей системе Core2 Quad (которая имеет поддержку VT-x, вложенный пейджинг и т. Д.), Фактически использование 1 из 4 ядер работает лучше. чем использование 2 или более ядер! Я вижу это просто во время запуска виртуальной машины, но также и во время тестов компиляции.
С другими аппаратными средствами результаты иные. У меня также есть i7 с 8 ядрами, и производительность, кажется, намного лучше масштабируется с количеством ядер там (при использовании 4 там счастливо).
Мой совет: сначала протестируйте новое оборудование.
источник
Я доверял бы планировщику ОС и просто устанавливал бы на виртуальную машину количество физических ядер, если только вы не знаете, что вы всегда хотите, чтобы у хоста было потенциально простое ядро, пока вы заняты в виртуальной машине.
источник
Это зависит от того, что вы хотите сделать на виртуальной машине, а также на физической машине. Если вам нужно использовать виртуальную машину, когда операционная система хоста используется для какой-либо другой деятельности, может быть лучше использовать два процессорных ядра для виртуальной машины, чтобы на хосте оставалось два ядра, если виртуальная машина находится в режиме полной нагрузки. С другой стороны, если вы работаете в основном на виртуальной машине, вы можете использовать все ядра процессора.
Однако, если от гостя не ожидается, что он будет использовать все четыре ядра одновременно, вы можете безопасно использовать их все, продолжая работать на хост-ОС. Помните, что вы всегда можете отрегулировать приоритет процесса виртуальной машины, когда он выполняется в операционной системе хоста, и система соответствующим образом сбалансирует нагрузки.
источник
да, я бы также сказал, что это зависит Но я скажу, что я предпочитаю делать. На работе у меня четырехъядерный процессор. Итак, для моего виртуального образа (win7) я выделил два процессора. Таким образом, я могу одновременно использовать хост-машину и виртуальную машину, и каждый из них имеет равные ресурсы ЦП.
источник