Чи справді VM з 2 процесорами швидше, ніж один з 4 процесорами?


67

Наш ІТ створив віртуальний комп'ютер із виділеними 2 процесорами, а не 4, про які я просив. Їх причина полягає в тому, що VM працює краще з 2 процесорами, а не 4 (відповідно до них). Обґрунтування полягає в тому, що гіпервізор VM (в даному випадку VMWare) чекає, поки всі CPU будуть доступними, перш ніж залучати будь-який з них. Таким чином, потрібно чекати більше 4, а не 2 процесора.

Чи має це твердження сенс?

Відповіді:


62

Це раніше було правдою, але вже не виключно правдою.

Вони мають на увазі суворий спільний графік .

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

Тепер, якщо хост має лише 4 потоки, то вам би нерозумно виділити їх усі. Якщо у нього два процесори та 4 потоки на один процесор, можливо, ви не хочете виділяти весь вміст одного процесора, оскільки ваш гіпервізор повинен намагатися утримувати vCPU на тому самому вузлі NUMA, щоб швидше отримати доступ до пам'яті, і ви ускладнюючи цю роботу шляхом виділення цілого сокета в один VM (див. сторінку 12 цього PDF вище).

Тож існують сценарії, коли менше vCPU може працювати краще, ніж більше, але це неправда в 100% часу.

З усього сказаного і зробленого, я дуже рідко виділяю більше 3 vCPU на гостя. Кожен отримує 2 за замовчуванням, 3, якщо це велике навантаження, і 4 для таких речей, як SQL-сервери або дійсно важкі пакетні обробки ВМ, або термінальний сервер з великою кількістю користувачів.


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

4
@Luaan У коробці є SQL Server, тому я припускаю, що там знайдеться кілька хороших хлопців із програмного забезпечення.
AngryHacker

1
@AngryHacker Так, сервер SQL може дуже ефективно використовувати всі 4 ядра, якщо у вас є відповідні MAXDOPналаштування. Однак залежно від завантаженості роботи надмірно оподатковуваний SQL-сервер часто є ознакою поганого дизайну баз даних - погані індекси, відсутні кластерні індекси, занадто багато індексів, оптимізація тощо (не завжди, але часто).
Марк Хендерсон

1
@Luaan Це все-таки паралелізм ... просто зі значно більшою затримкою, якщо їм потрібно поговорити один з одним. :)
Рейраб

@MarkHenderson Його досить добре оптимізовано, але деякі робочі навантаження занадто великі, щоб легко оброблятись 2 процесорами плюс тонна інших запитів одночасно.
AngryHacker

15

Це багато в чому залежить від основного гіпервізора та адміністраторів, які ним керують, дозвольте пояснити:

  1. Це погана практика просто довільно дати вам 4 процесора тільки тому, що ви цього просили. Взагалі кажучи, ви думаєте, що вам потрібно 4; але моніторинг ресурсів говорить, що вам потрібно лише 1.
  2. Наприклад, VMware ESXi вимагає блокувати всі pCPU, коли vCPU робить запит на ресурси процесора ; тому для цього гіпервізора це погано на продуктивність. KVM не робить блокування, як це робить ESXi; він використовує основний планувальник ядра, але все ж у перспективі може створити суперечності процесора.
  3. Якщо ви будуєте системи з самого початку з 4 процесорами, ви насправді не масштабуєте, а вгору (що є поганою практикою, особливо для віртуальних машин). Ви можете перевірити, як ви займаєтеся архітектурою, над тим, над чим працюєте, щоб його можна було побудувати так, щоб він відповідав сучасній хмарній інфраструктурі.

Що ви можете навчитися з цього? Завжди створюйте віртуальні машини з мінімальними ресурсами та збільшуйте у міру необхідності. Завжди збільшуйте масштаб, а не збільшуйте, і ви зможете запускати додаток у будь-якому місці.

Через блокування, яке можна відчути з гіпервізором, справді вірно, що 2 ЦП можуть бути швидшими, ніж 4 ЦП.


4

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

Я зменшив vCPU на деяких наших VM і побачив покращення пропускної здатності більшості. Жменька погіршилась і її потрібно було підбити на рахунку vCPU.

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