Чи є оптимальне значення для кількості ядер процесора, що піддаються впливу ВМ?


23

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

Файл довідки пропонує не встановлювати це вище кількості доступних фізичних ядер. Це має сенс. Отже, найкраще виділяти 1 або 2 ядра процесора? Це повністю залежить від рідного завантаження процесора?

Відповіді:


6

Це повністю залежить від того, що робить гостьова ОС. В моєму особистому досвіді VM запускає єдину програму (сервер побудови, трак-сервер, SVN тощо), тому немає ніяких причин встановлювати її вище однієї.

Можливий випадок, якщо це кінцевий користувач, скажімо, університет, який використовує гостьову ОС як викид (тобто ТА), то, можливо, встановить її вище, ніж один.


Іншими словами: для тимчасової системи ви можете максимально збільшити основну квоту процесора; але для "нормального" або типового використання встановіть його на одне ядро ​​(щоб не заважати занадто сильно працювати продуктивній ОС)?
sblair

17

Інформація у цій відповіді більше не вірна . Це було правильно ще в часи суворого планування, але це вже не так.

Відповідь я зберігаю нижче заради процвітання, але, будь ласка, не покладайтеся на те, щоб вона була точною для сучасних гіпервізорів.


Ніколи не слід призначати всі свої ядра як vCPU у віртуальній машині.

Якщо віртуальна машина запитує будь час центрального процесора, VMWare має виділити або все в віртуальних процесорів, або жоден з віртуальних ЦП.

Це означає, що в 4-ядерній системі, якщо ви виділите всі 4 ядра, тоді тільки хост, або гість, може бути розподілений процесорним часом, а не обидва одночасно.

Це абсолютно пошкодить продуктивність в обох середовищах.

Сміливо виділяйте непарну кількість ядер (скажімо, 3). Це дивно, але це абсолютно законний варіант.

Як правило, я ніколи не виділяю більше (n / 2) vCPU (у вашому випадку 2) - але я зазвичай розподіляю ядра на серверах з між 12 і 32 ядрами, де ви можете виділити величезну кількість vCPU без істотного впливу.


це єдина відповідь, поки що написана з будь-яким ступенем авторитету. дякую, що поділилися досвідом.
G-Wiz

5
-1: Не відповідає моєму досвіду. VM - це процес, час процесора якого можна запланувати так само, як і будь-який інший процес на хості. Ви можете налаштувати пріоритет процесів VM на хості, і система буде балансувати навантаження належним чином.
bwDraco

2
( продовження ) Скажімо, у вас 16-ядерний сервер. Прикладною конфігурацією можуть бути 4 ВМ, кожна з яких налаштована на 8 ядер. Хоча це може здатися занадто великою кількістю віртуальних ядер, це дозволяє окремим VM краще масштабуватись на більш великих навантаженнях. Якщо комбіноване використання перевищує кількість фізичних ядер, господар приймає баланс навантажень відповідно. Ось таким чином віртуалізація може збільшити пропускну здатність і зменшити витрати - завдяки використанню більшої частини основного обладнання.
bwDraco

@DragonLord - ця відповідь перевищує 2 роки на питання, якому майже 4 роки, і може базуватися на застарілій інформації. Я маю на увазі "Суворе спільне планування" від ESX, але я не пам'ятаю, скільки років ця інформація, і я не знав, як змінилося планування процесора за останні кілька років.
Марк Хендерсон

1
Просто хотілося тут відзначити, що і в Ubuntu 14.04 і 16.04 виникають проблеми із завантаженням, а також збої, якщо встановити кількість процесора на непарне число. Я так і не зміг зрозуміти, чому я просто вирішив тримати це парними цифрами, щоб уникнути проблем.
Доріан

3

Кількість ядер, що піддаються дії гостьових процесорів, не впливає на продуктивність настільки, наскільки ви хочете. Він просто коригує кількість ядер, які гостьовий процесор "бачить".

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

Краще залишити його за замовчуванням. Якщо у вас є проблеми з продуктивністю на хост-комп'ютері, ви можете просто налаштувати пріоритет процесу за допомогою диспетчера завдань Windows.


3

Як зазначав Нейт, до тих пір, поки ваш VM в основному буде виконувати однопотоковий процес, мало причин виділяти більше одного ядра.

Однак якщо ви плануєте використовувати його таким чином, щоб отримати вигоду з більшої кількості ядер (багатопотокова програма, багато паралельних програм, ..), історія складніша. Раніше я припускав, що використовувати половину вашого процесора для вашого віртуального комп'ютера було гарною ідеєю. Виявляється, це не завжди оптимально.

Єдиний спосіб переконатися в тому, щоб запустити орієнтири. Не знаю чому, але в моїй системі Core2 Quad (яка підтримує VT-x, вкладені підкачки, ..), фактично використання 1 з 4 ядер працює краще ніж використання 2 або більше ядер! Я бачу це просто в час запуску VM, але також під час компіляції тестів.

З іншими апаратними результатами різні. У мене також є i7 з 8 ядрами, а продуктивність, здається, значно краща за кількістю ядер там (із 4 щасливим використанням).

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


1

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


1

Це залежить від того, що ви хочете робити як на віртуальній машині, так і на фізичній машині. Якщо вам потрібно використовувати віртуальну машину, коли операційна система хоста використовується для якоїсь іншої діяльності, може бути краще використовувати два процесорних ядра для VM, щоб у хоста залишилося два, якщо VM знаходиться під повним навантаженням. З іншого боку, якщо ви працюєте головним чином на VM, ви можете використовувати всі ядра процесора.

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


Це засновано на моєму досвіді роботи з VirtualBox. Оскільки я не знайомий з продуктами VMware, я можу помилитися; якщо так, я видалю цю відповідь.
bwDraco

0

так, я б також сказав, що це залежить. Але я скажу, що я вважаю за краще робити. На роботі у мене є чотирьохядерний процесор. Тож для мого віртуального зображення (win7) я виділив два процесори. Таким чином, я можу використовувати одночасно і хост-машину, і віртуальну машину, і всі вони мають рівні ресурси CPU.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.