Ограничение скорости процессора в виртуальной машине?


29

Кто-нибудь знает способ ограничения скорости процессора в виртуальной машине? Или если есть даже программное обеспечение для виртуализации, которое позволяет вам сделать это?

Я пытаюсь найти минимальные требования к системе, учитывая конкретный образ ОС, который у меня есть. Я вижу способы ограничения ОЗУ, размера жесткого диска и количества ядер, но мне нужно замедлить ЦП до 800 МГц, чтобы реально имитировать конфигурацию системы. Кроме того, компьютер, на котором запущена виртуальная машина, является машиной Windows 7.

Ответы:


21

Передо мной была поставлена ​​та же проблема, и я установил Oracle VirtualBox в Windows 7 (в качестве хоста) и Ubuntu (в качестве гостя). Я использовал автономный ноутбук HP EliteBook 8540W с Intl Core i7 с тактовой частотой 1,87 ГГц и 8 ГБ оперативной памяти.

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

Я предположил, что хост-ОС (в моем случае Windows 7) не потребляла никаких тактовых циклов (я подтвердил это, проверив «Диспетчер задач», и обнаружил, что загрузка процессора ZERO на хост-машине .ie windows 7 в моем случае). Поэтому я считаю, что «ограничение выполнения» на 100% равняется таковому для хост-машины (например, 1,87 ГГц). Я думаю, что, взяв процентное соотношение между тактовой частотой хост-машины и 800 МГц, вы сможете вычислить процентное значение, соответствующее 800 МГц.

Надеюсь, это поможет.

Удачи.


9

В VMWare ESX и ESXi вы можете создать пул ресурсов и ограничить ресурсы ЦП для этого пула. Это позволит вам ограничить скорость процессора любых систем, созданных в этом пуле ресурсов.


Я прочитал о пуле ресурсов и подумал, что это применимо к плееру. К сожалению, это не так. И ESX / ESxi не бесплатны ... Но я мог бы попробовать пробную версию и, если она действительно работает, посмотрите на нее еще немного.
RCC

6
ESXi бесплатен. (и еще несколько персонажей ...)
Tarnay Kálmán

В самом деле? Я почему-то так не думал. Но я исправлюсь! Большое спасибо за указание на это.
RCC


2

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

Тем не менее, это было бы очень грубо и не подходит, если вы пытаетесь проверить циклы синхронизации или что-то, где фактическая скорость процессора вступает в игру.


Я видел пару программ, которые делают это - а именно, ограничивают процент использования процессора на процесс - но видел только варианты Linux. Конечно, я не очень внимательно к ним относился. Если решение, которое я пробую, как описано в моем ответе MaxMackie, не сработает, я рассмотрю эти варианты далее.
RCC

Да, это может очень плохо повлиять на циклы синхронизации. Все зависит от того, будет ли он работать на полной скорости до 45%, затем отключится или попытается на самом деле работать на 45%.
Zan Lynx

2

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


1
Дополнительная информация сделает этот ответ приемлемым.
Ramhound

1

Я могу подтвердить, что это не поддерживается в VirtualBox. Тем не менее, документация кажется сомнительной, может ли VMware сделать это.

РЕДАКТИРОВАТЬ: Для VMware: «Это невозможно с продуктами Player и Server, но я полагаю, что это происходит в ESXi (бесплатный продукт« голый железный гипервизор ») и в платных продуктах, таких как VMWare Workstation».


Я также могу это подтвердить - я все настроил на VirtualBox, а потом обнаружил. В настоящее время я использую VMware и попытался изменить файл config.ini, чтобы ограничить host.cpukHz до 800000. Похоже, это подделывает виртуальную машину, заставляя думать, что частота процессора составляет 800. Я не уверен, что это действительно будет делать то, что я хочу это к, но это то, что я надеюсь. Идеи?
RCC

Из того, что я видел, должно работать. Просто убедитесь, что вы установили host.noTSC = "TRUE" в том же файле конфигурации. Это регулирует тактовую частоту процессора, чтобы убедиться, что она не замедляется. Кроме того, в гостевой операционной системе перейдите на вкладку «Параметры» и убедитесь, что выбрана синхронизация времени между виртуальной машиной и операционной системой хоста.
n0pe

Да, у меня также есть host.noTSc = "TRUE". Я не смог найти, где включить синхронизацию времени между виртуальной машиной и хостом в плеере 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.