Как я могу симулировать медленную машину в виртуальной машине?

29

Я тестирую AJAX-тяжелое веб-приложение. Я работаю на новом Mac, но я использую VmWare Fusion (в настоящее время 3.1.2) для тестирования в Windows XP, используя IETester для имитации более старых версий IE.

Это позволяет мне увидеть, как старые версии IE будут отображать сайт, но я также хотел бы посмотреть, как сайт будет работать на более старой машине. Я вижу в настройках виртуальной машины, что я могу уменьшить оперативную память; Есть ли способ также снизить скорость процессора? Как еще я могу симулировать медленную машину?

(Я также собираюсь проверить, как симулировать медленное интернет-соединение .)

Натан Лонг
источник

Ответы:

17

Поток, ограничивающий скорость процессора в виртуальной машине, предлагает несколько советов:

  • В VMWare ESX и ESXi вы можете создать пул ресурсов и ограничить ресурсы ЦП для этого пула. Это позволит вам ограничить скорость процессора любых систем, созданных в этом пуле ресурсов.
  • Настройки в MS hyper-V позволяют ограничить виртуальную машину до процента от общего хоста. Поэтому, если у вас 8-ядерный хост, работающий на частоте 2 ГГц, вы можете попробовать ограничить клиентскую виртуальную машину одним ядром и не более 45% от ядра.

Парень из Virtual PC замечает в « Замедлении виртуальных машин», что:

установка виртуальной машины с максимальным ресурсом ЦП 10% под виртуальным сервером (например) означает, что ей будет разрешено запускаться на ЦП только в течение 10% от общего времени планирования системы в течение определенного периода времени. Пока виртуальная машина работает, она все еще работает на полной скорости процессора (хотя и реже, чем в противном случае).

Он предлагает использовать вместо Turbo для замедления ВМ. Он также предлагает использовать продукты эмуляции, которые намного медленнее, чем виртуализация, такие как DOSBox и Bochs .

harrymc
источник
7

Вы можете использовать cpulimit, чтобы ограничить количество времени, отводимого вашему процессу. Это доступно в репозиториях для большинства дистрибутивов Linux.

Использование очень просто, если, например, ваша виртуальная машина работает как процесс 12345, и вы хотите выделить для нее только 5% циклов ЦП, используйте следующие параметры:

$ cpulimit -l 5 -p 12345
pfrenssen
источник
4

Это действительно невозможно надежно сопоставить производительность старой машины. Даже если вам удастся задушить использование процессора и памяти размер , как вы будете душить скорость FSB или памяти скорость ?

Сказав это, вы можете использовать инструмент управления процессами Mac, чтобы ограничить использование ЦП самой VMWare Fusion. Если вы сделаете это достаточно хорошо, чтобы эмулировать более старую машину, то все приложение VMWare, вероятно, будет работать очень медленно - точно так же, как и старая машина с поддержкой XP.

Я не знаю, для чего предназначена графическая программа Mac, но посмотрите, поддерживает ли ваш Mac reniceкоманду: Откройте терминал и введите, man reniceчтобы узнать, как он работает на Mac.

Кстати, XP-готовые машины, вероятно, сейчас очень дешевы. Реальный, вероятно, можно было купить за ~ 75 долларов. Затем вы можете перенести свою виртуальную машину в реальную ...

jpaugh
источник
2
Ха! Интересная идея купить актуальную машину. Поскольку вся идея заключается в том, чтобы эмулировать старый компьютер, покупка старого компьютера является довольно дешевым вариантом. :)
Натан Лонг
2

Это действительно зависит от того, насколько медленной является машина, которую вы хотите эмулировать. Если вы откатите XP обратно к 128 МБ ОЗУ, она будет мучительно медленной, до такой степени, что я не уверен, действительно ли будет актуальна скорость виртуального процессора. Вы также можете запускать файлы виртуальных машин со старого внешнего жесткого диска USB1 (посмотрите, сможете ли вы найти диск на 4200 об / мин). Это должно замедлить ход событий.

Кирк
источник
2

Один верный способ замедлить работу виртуальной машины - это загрузить как можно больше ее клонов!

Ваш процессор, ФСБ, ОЗУ и все другие быстрые компоненты вашей машины будут разделены и разделены между остальными виртуальными машинами (если вы выполняете что-то интенсивное - например, одну из заставок openGL), и вы почувствуете, что Вы снова в 1990 году ...

Haqa
источник
Просто и довольно эффективно.
Ролл
1

Установите небольшую утилиту в гостевой виртуальной машине XP для управления частотой процессора, используя встроенное динамическое переключение частоты XP. Например, такая утилита, как SpeedswitchXP . Сам я никогда не пробовал что-то подобное, и потенциально могут возникнуть проблемы, если виртуальный ЦП, который VMWare представляет гостевой ВМ, не поддерживает динамическое переключение частоты.

Queso
источник
1
Я боюсь, что это будет иметь небольшой эффект для виртуальной машины, где процессор только эмулируется.
harrymc
1
Да, я не думаю, что изменение частоты является вариантом; это будет либо не работать (скорее всего), либо задушить весь хост ОС (невозможно?).
jpaugh
0

Я хотел бы развить идею использования потока бесконечного цикла с настраиваемой командой сна и установить приоритет процесса. Если вы хотите, чтобы я собрал небольшой кусок кода C, дайте мне знать.

RobotHumans
источник