Эмуляция ресурсов процессора (ограниченных), включая тактовую частоту - PullRequest
10 голосов
/ 19 ноября 2010

Мне нужна программная среда, в которой я могу проверить скорость своего программного обеспечения на оборудовании с конкретными ресурсами. Например, как быстро эта программа работает на 800 МГц x86 с 24 МБ ОЗУ, когда моим хост-оборудованием является четырехъядерный процессор 3GD amd64 с 12 ГБ ОЗУ? Эмуляторы, такие как qemu, отлично работают «почти так же быстро», как и базовое оборудование; Я хотел бы заставить его работать медленнее. Есть ли способ сделать это?

Ответы [ 2 ]

3 голосов
/ 19 ноября 2010

Я никогда не пробовал, но, возможно, вы могли бы достичь того, чего хотите, в некоторой степени, комбинируя эмулятор, такой как QEMU или VirtualBox в Linux, с чем-то вроде этого:

http://cpulimit.sourceforge.net/

Если вы можете ограничить время процессора, доступное для эмулятора, вы сможете смоделировать результаты выполнения на более медленном компьютере.Имейте в виду, однако, что это повлияет только на скорость выполнения (или, я надеюсь, в любом случае).

Набор команд ЦП и другие системные функции останутся неизменными.Это означает, что точная эмуляция специфического процессора будет трудной, если не невозможной.

Кроме того, использование чего-то вроде cpulimit, который работает с использованием SIGSTOP и SIGCONT для многократной остановки / перезапуска процесса эмулятора, можетвызывают побочные эффекты, такие как несоответствия синхронизации, артефакты отображения видео и т. д.

0 голосов
/ 19 ноября 2010

В эмуляторе сохраняйте виртуальные «часы» и увеличивайте их соответствующим образом по мере выполнения каждой инструкции. Оттуда вы можете просто сообщить, сколько времени потребовалось для выполнения виртуального времени, или вы можете время от времени переводить ваш эмулятор в спящий режим, чтобы поддерживать скорость выполнения примерно на том же уровне, что и в цели.

...