Обмеження швидкості процесора у віртуальній машині?


29

Хтось знає про спосіб обмеження швидкості процесора у віртуальній машині? Або якщо є навіть програмне забезпечення для віртуалізації, яке дозволяє це робити?

Я намагаюся знайти мінімальні вимоги до системи, враховуючи конкретний образ ОС, який у мене є. Я бачу способи обмеження оперативної пам'яті та розміру жорсткого диска та кількості ядер, але мені потрібно сповільнити процесор до 800 МГц, щоб справді імітувати конфігурацію системи. Також комп'ютер, на якому працює віртуальна машина, - це машина Windows 7.

Відповіді:


21

Мені поставили завдання з тією ж проблемою, і я встановив Oracle VirtualBox на Windows 7 (як хост) і Ubuntu (як гість). Я використовував автономний ноутбук, HP EliteBook 8540W з Intl Core i7, що працює на 1,87 GigHZ та 8Gig ОЗУ.

Якщо припустимо, що ваша установка працює належним чином, на вашій гостьовій машині (наприклад, у моєму випадку Ubuntu) в головному меню виберіть "Налаштування ..." з "Машина"; виберіть "Система" та натисніть на вкладку "Процесор". Ви можете налаштувати тактову частоту (з позначкою "Виконання ковпачка"), перемістивши індикатор на смузі вниз до 1 відсотка.

Я припускав, що хост ОС (у моєму випадку Windows 7) не споживає жодних тактових циклів (я підтвердив це, перевіривши "Диспетчер завдань", і я знайшов використання процесора ZERO на хост-машині. У моєму випадку Windows 7). Отже, я вважаю, що 100% "кришка виконання" дорівнює хост-машині (наприклад, 1,87 GigHZ). Я думаю, взявши відсоток між тактовою частотою вашого хост-машини і 800 МГц, ви зможете визначити значення відсотка, що відповідає 800 МГц.

Я сподіваюся, що це допомагає.

Удачі.


9

На VMWare ESX та ESXi ви можете створити пул ресурсів і обмежити ресурси CPU для цього пулу. Це дозволить обмежити швидкість процесора будь-яких систем, створених у цьому ресурсному пулі.


Я читав про варіант пулу ресурсів і думав, що це стосується гравця. На жаль, це не так. І ESX / ESxi не безкоштовні ... Але я можу спробувати пробну версію, і якщо вона насправді спрацює, погляньте на неї ще трохи.
RCC

6
ESXi безкоштовний. (та ще кілька персонажів ...)
Тарнай Калман

Дійсно? Я чомусь не думав, що це так. Але я стою виправлений! Дуже дякую, що вказали на це.
RCC


2

Хоча я не знаю всіх різних технологій віртуалізації, я думаю, що навряд чи ви знайдете таке налаштування. Однак ви знайдете налаштування (принаймні, у MS гіпер-V), які дозволяють обмежити віртуальну машину відсотком від загальних дій хост-машин. Отже, якщо у вас 8-ядерний хост, який працює на частоті 2 ГГц, ви можете спробувати обмежити віртуальну машину клієнта одним ядром, і не більше 45% ядра.

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


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

Так, це може по-справжньому погано вплинути на терміни циклів. Все залежить від того, чи працює він на повній швидкості до 45%, а потім вирізає, чи намагається реально працювати на 45%.
Zan Lynx

2

--cpuexecutioncap <1-100>: Цей параметр контролює кількість процесорного часу, який може використовувати віртуальний процесор. Значення 50 означає, що один віртуальний процесор може використовувати до 50% одного хост-процесора.


1
Більше інформації зробить цю відповідь прийнятною.
Рамхаунд

1

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

EDIT: Для VMware: "Це неможливо з продуктами Player та Server, але я вважаю, що це є в ESXi (безкоштовний продукт" голий метал "," та платні продукти ", наприклад VMWare Workstation."


Я можу це також підтвердити - я все встановив на VirtualBox і потім виявив це. Наразі я використовую VMware і спробував змінити файл config.ini, щоб обмежити host.cpukHz до 800000. Здається, це підробляє віртуальну машину на думку, що процесор MHz становить 800. Я не впевнений, чи справді це буде робити те, що я хочу це, але я це сподіваюся. Ідеї?
RCC

З того, що я бачив, це має працювати. Просто переконайтеся, що ви встановили host.noTSC = "TRUE" у цьому ж конфігураційному файлі. Це регулює годинник процесора, щоб переконатися, що він не сповільнюється. Також у гостьовій операційній системі перейдіть на вкладку Параметри та переконайтесь, що вибрана синхронізація часу між віртуальною машиною та операційною системою хоста.
n0pe

Так, у мене є також host.noTSc = "ІСТИНА". Я не зміг знайти, де ввімкнути синхронізацію часу між vm та хостом у програмі vmware, хоча ...
RCC,

Я впевнений, що вам доведеться працювати в гостьовій ОС
n0pe

1

Ви можете змоделювати це за допомогою закріплення процесора. Потім створіть декілька процесів, пов'язаних з процесором, закріплених на одному процесорі. Орієнтовна швидкість процесора становить (реальна швидкість процесора / # процесів).

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


0

На VirtualBOX є слайдер, на якому ви можете налаштувати% хост-процесора, який може використовувати гостьовий процесор. Такий відсоток стосується кожного ядра.

У VirtualBOX немає способу імітувати багатоядерний з різними швидкостями на кожному ядрі, лише один повзунок для всіх ядер.

Якщо встановити повзунок на 50%, це призведе до того, що гостьові сердечники працюватимуть на 1/2 головних ядер (на основні основи).

Отже, якщо у вас є ядро ​​дека (10 ядер) на хості та триядерне гостьове (три), і ви хочете, щоб гость працює на X МГц, поки хост працює на Y МГц, просто ігноруйте кількість ядер для обчислення відсотків.

Формула була б: Відсоток = 100 * X / Y

Сподіваюся, що це також допомагає іншим людям, які приїжджають сюди в майбутньому.

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