Віртуальні машини у кожному гіпервізорі, про який я знаю, можуть використовувати додаткові віртуальні процесори, на яких планувати додаткові одночасні потоки виконання.
Саме той шар абстракції між фізичною машиною і віртуальною машиною змушує його працювати не так, як ви описуєте. ВМ не знає, скільки ядер має фізична машина. VM не "бачить" фізичні процесори (або ядра) на фізичній машині. Гіпервізор надає VM скільки коли-небудь віртуальних процесорів, а гостьова ОС використовує ці віртуальні процесори для планування додаткових одночасних потоків ... Загальна кількість віртуальних процесорів, які гіпервізор передає віртуальним машинам, навіть може перевищувати кількість фізичних процесорів / сердечники в машині.
Сказав інший спосіб, віртуальна машина, коли присвоюється одному vCPU, планує свої потоки так, ніби має лише один процесор. Не має значення, скільки ядер знаходиться в базовій фізичній машині. (Хоча варто відзначити, що фізична машина може запланувати цей потік VM на одному фізичному ядрі для одного кванту потоку або відрізку часу, а потім запустити його на іншому фізичному ядрі наступного разу, коли його планується запустити. У віртуальної машини є Не знаю, що щось із цього відбувається, але все, що він знає, це те, що він може запланувати лише один потік, один за одним, оскільки він має лише один віртуальний процесор.)
І давайте будемо дуже зрозумілі щодо наших умов тут. Ви призначаєте vCPU або віртуальні процесори VM, а не "ядра". Ядра (маю на увазі, ви маєте на увазі фізичні опрацювальні одиниці, які розділяють один фізичний сокет) не дорівнюють vCPU. Між ними існує шар абстракції. Якщо для VM призначено лише 1 vCPU, призначений для нього, він може запланувати за один раз лише один потік. Ось чому ваш VM працює швидше з 2 -4 віртуальними процесорами, призначеними для нього - тому що він тепер може запланувати більше одного потоку для одночасного запуску.
Однак, безумовно, існує закон зменшення прибутку тут, оскільки надмірна кількість віртуальних процесорів приносить більший і більший накладні витрати в таких речах, як синхронізація тощо.
Існують невеликі відмінності між тим, як гіпервізори Hyper-V і VMware планують потоки віртуальних машин для виконання, і вони відрізняються своїм підходом до "перепідписки" на фізичні ресурси, але це хороша загальна концепція для початку.