Хост Quad Core з гіперточкою, скільки процесорів налаштувати у VirtualBox?


10

У мене є чотирьохядерний i7-процесор із гіперточенням (8 логічних ядер), коли я налаштував віртуальну машину на використання 8 процесорів, VirtualBox видав мені попередження про те, що у мене є лише чотири ядра (що правда) і що це може спричинити питання про продуктивність. Але гіпернарізка - це апаратна функція, тому ОС бачить 8 ядер, і вона надсилає вказівки всім 8. Що робити, якщо встановлення її на 4 призвело до того, що VM використовуватиме 2 ядра (4 потоки) замість 4 одночасних потоків (на всіх 4 ядрах) )? Чи враховує я попередження про те, що моя машина має гіпернарізку?

Відповіді:


9

На основі еталону, зробленого Крістіаном Ведбергом, я б сказав, що ви повинні використовувати всі логічні ядра.
Крім того, я зробив власний бенчмарк, використовуючи той самий процесор (i7, 4 процесор з HT), який підтвердив підвищення продуктивності для багатопотокових програм. Якщо гостьовий ПК (Win. 8.1 x64) використовував усі 8 ядер, то хост-ПК (Ubuntu x64) також використовував усі 8 ядер.

введіть тут опис зображення

Я порівнював також продуктивність в однопотокових програмах. В обох випадках я вимірював однакові значення, тому немає штрафу, використовуючи більше фізичної (але до логічної) кількості ЦП.
Тут ви бачите, що 1 повне завантаження процесора в гостьовому ПК призведе до 1 завантаження процесора в хост-ПК.

введіть тут опис зображення


Домовились. Я використовував 4 ядра і виявив, що це займає приблизно 50% часу процесора при створенні мого проекту. Тоді, незважаючи на попередження, я змінив значення на 8, що є кількістю логічних ядер, збірка займала 100% процесорного часу, і я вважаю, що вона працювала швидше, ніж раніше.
Декінг

Це досить цікаво, я пам'ятаю, читаючи, що Linux спеціально намагається зосередити навантаження на 1 логічне ядро ​​з кожного фізичного ядра HT для підвищення ефективності. Цікаво, чи може запрошене ядро ​​Linux бачити, що процесор є гіперпотоком і оптимізує його планування для цього типу конфігурації.
Ентоні

8

Я виявив, що, хоча в VirtualBox можна (і, можливо, швидше) (мій досвід роботи з версією 5.1.0) виділяти vCPU до VM на основі логічних процесорів, при роботі з великим навантаженням можуть виникати проблеми всередині гостьової ОС. . У моєму випадку Windows 2012 R2 VM з 12 vCPU на 8-ядерному хості Ubuntu 16.04 (який повідомляє 16 логічних процесорів) буде BSOD під час великого завантаження процесора з повідомленням про помилку DPC_WATCHDOG_VIOLATION. Мінімальний аналіз на osronline.com показав, що причиною порушення є e1g6032e.sys (мережевий драйвер Intel 100/1000 для Windows).

Це наштовхує мене на думку, що на розподіл часу vCPU на основі логічної ємності процесора та запуск ВМ з високим навантаженням протягом тривалого періоду негативно впливає час на внутрішню гостьову ОС. У моєму випадку 100% завантаження процесора всередині Windows VM протягом декількох хвилин призведе до BSOD. Після зменшення кількості vCPU до 8 (що відповідає кількості фізичних ядер хоста), VM Windows більше не BSOD за подібних ситуацій з високим навантаженням. Документацію з VirtualBox говорить один повинен це зробити, але не дає жодних - або причин.

У моєму середовищі також працювали два VM Vbuntu, у кожного з 8 власних vCPU. Однак навантаження на них було мінімальним під час проблем з BSOD Windows VM.


Дивовижна відповідь (з джерелами), дякую! На пару років пізніше, але тепер я знаю :)
Ентоні

2

Чи враховує я попередження про те, що моя машина має гіпернарізку?

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

Що стосується розподілу навантаження по ядрах, то це завдання ОС, і він повинен вести себе в правильній садибі.


4
Чи є у вас дані, які підтверджують ваші заяви? Хтось провів дослідження envobi.com/post/virtualbox-hyper-threading-benchmark-surprise, і вони рекомендують встановити кількість віртуальних процесорів Virtual Box на кількість логічних процесорів.
Максим Єгорушкін

0

Це оригінал VM для вашої машини? Іноді ви отримаєте своєрідні помилки, якщо будете клонувати VM і перемістити його на іншу машину та / або змінити налаштування.
Я рекомендую завантажити та встановити останню версію Virtual Box з останніми розширеннями.

Я вчинив усі вісім ядер, і я не отримую цієї помилки, коли мій i7 запускає VM з Ubuntu 13.10.

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