22

VirtualBox и, возможно, другое программное обеспечение для виртуальных машин позволяет пользователю указать количество процессоров, доступных для виртуальной машины. В моем конкретном случае у меня есть двухъядерный процессор с 64-битной Windows 7, работающей в исходном режиме, и Ubuntu 9.04 64-битной в качестве виртуальной машины.

В файле справки предлагается не устанавливать это значение выше количества доступных физических ядер. Это имеет смысл. Итак, лучше ли выделить 1 или 2 ядра процессора? Зависит ли это полностью от собственной загрузки процессора?

7 ответов7

17

Информация в этом ответе больше не верна. Это было правильно еще во времена строгого совместного планирования, но это уже не так.

Я держу ответ ниже для процветания, но, пожалуйста, не надейтесь, что он будет точным для современных гипервизоров.


Вы никогда не должны назначать все свои ядра в качестве виртуальных ЦП на виртуальной машине.

Если виртуальная машина запрашивает процессорное время, VMWare должен выделить либо все VCPU будут , или ни один из виртуальных ЦП.

Это означает, что в четырехъядерной системе, если вы выделяете все 4 ядра, то только процессору или гостю может быть выделено процессорное время, а не оба одновременно.

Это абсолютно разрушит производительность в обеих средах.

Не стесняйтесь выделять нечетное количество ядер (скажем, 3). Это кажется странным, но это абсолютно законный вариант.

Как правило, я никогда не выделяю более (n/2) виртуальных ЦП (в вашем случае 2), но обычно я размещаю ядра на серверах с 12–32 ядрами, где вы можете выделить огромное количество виртуальных ЦП без существенного влияния.

5

Это полностью зависит от того, что делает гостевая ОС. По моему личному опыту, на виртуальной машине запущена одна программа (сервер сборки, сервер trac, SVN и т.д.), Поэтому нет причин устанавливать ее выше одной.

Возможным случаем может быть, если это конечный пользователь, скажем, университет, который использует гостевую ОС в качестве одноразовой (то есть TA), а затем может установить ее на единицу.

3

Количество ядер, доступных для гостевых процессоров, не так сильно влияет на производительность, как хотелось бы. Он просто регулирует количество ядер, которые "видит" гостевой процессор.

В зависимости от того, как настроен эмулятор, он может буквально вдвое снизить производительность виртуальной машины, ничего не делать или повлиять только на то, как гостевые ОС / приложения разделяют планирование потоков.

Лучше оставить его по умолчанию. Если у вас возникают проблемы с производительностью на главном ПК, вы можете просто настроить приоритет процесса с помощью диспетчера задач Windows.

3

Как упоминал Нейт, поскольку ваша виртуальная машина будет в основном обслуживать однопоточный процесс, нет особых причин выделять более одного ядра.

Однако, если вы планируете использовать его таким образом, чтобы извлечь выгоду из большего количества ядер (многопоточная программа, много параллельных программ, ...), история будет более сложной. Ранее я предполагал, что использование половины ваших процессоров для вашей виртуальной машины было хорошей идеей. Оказывается, это не всегда оптимально.

Единственный способ убедиться в этом - запустить тесты. Я не знаю почему, но в моей системе Core2 Quad (которая имеет поддержку VT-x, вложенный пейджинг и т.д.), Фактически использование 1 из 4 ядер работает лучше, чем использование 2 или более ядер! Я вижу это просто во время запуска виртуальной машины, но также и во время тестов компиляции.

С другими аппаратными средствами результаты иные. У меня также есть i7 с 8 ядрами, и производительность, кажется, намного лучше масштабируется с количеством ядер там (при использовании 4 там счастливо).

Мой совет: сначала протестируйте новое оборудование.

1

Это зависит от того, что вы хотите сделать на виртуальной машине, а также на физической машине. Если вам нужно использовать виртуальную машину, когда операционная система хоста используется для какой-либо другой деятельности, может быть лучше использовать два процессорных ядра для виртуальной машины, чтобы у хоста оставалось два оставшихся, если виртуальная машина находится под полной нагрузкой. С другой стороны, если вы работаете в основном на виртуальной машине, вы можете использовать все процессорные ядра.

Однако, если вы не можете ожидать, что гость будет использовать все четыре ядра одновременно, вы можете безопасно использовать их все, продолжая работать на хост-ОС. Помните, что вы всегда можете отрегулировать приоритет процесса виртуальной машины, пока он выполняется в операционной системе хоста, и система соответствующим образом сбалансирует нагрузки.

1

Я доверял бы планировщику ОС и просто устанавливал бы на виртуальную машину количество физических ядер, если только вы не знаете, что вы всегда хотите, чтобы у хоста было потенциально простаивающее ядро, пока вы заняты в виртуальной машине.

0

да, я бы также сказал, что это зависит Но я скажу, что я предпочитаю делать. На работе у меня четырехъядерный процессор. Так что для моего виртуального образа (win7) я выделил два процессора. Таким образом, я могу одновременно использовать хост-машину и виртуальную машину, и каждый из них имеет равные ресурсы ЦП.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .