2010-11-19 29 views
9

我想要一个软件环境,在该环境中,我可以使用特定资源在硬件上测试软件的速度。例如,当我的主机硬件是带12GB内存的3GHz四核amd64时,该程序在带有24 Mb RAM的800MHz x86上运行速度有多快?像qemu这样的模拟器与底层硬件运行速度“几乎一样快”;我想让它运行得更慢。有没有办法做到这一点?模拟处理器(有限)资源,包括时钟速度

+0

我不知道关于处理器的速度,但是你绝对可以使用像VirtualBox,Parallels Desktop等虚拟机来控制RAM。 – 2010-11-19 00:30:30

+0

是的,我认为内存不是问题;问题是速度和其他资源。我在包容性方面有所包容,因为我希望它在每个方面都像实际的硬件一样。我有点希望有一个现成的解决方案,但显然没有,所以我会一块一块地把它。 – Liam 2010-11-19 15:45:23

回答

0

在您的仿真器中,保持一个虚拟的“时钟”并在执行每条指令时对其进行适当的递增。从那里你可以简单地报告在虚拟时间内执行需要多长时间,或者你可以让仿真器一次又一次地休眠,以保持执行速度大致在目标位置。

+0

这听起来很难。我不确定这是否会在主机或客户操作系统中实现,但我认为我没有这方面的技能。 – Liam 2010-11-19 15:43:06

+0

@Liam:另外,你不会对它的速度有多慢有什么“感觉”,如果你正在评估桌面应用程序或其他交互式软件。多媒体应用程序也很难测试。 – thkala 2010-11-19 18:29:55

2

我从来没有尝试过,但也许你可以通过在Linux上使用这样的组合像QEMU或VirtualBox虚拟仿真器实现你想要在一定程度上是什么:

http://cpulimit.sourceforge.net/

如果你可以限制CPU时间可用于模拟器,您可能能够在较慢的计算机上模拟执行结果。但请记住,这只会影响执行速度(或者我希望,无论如何)。

CPU指令集和其他系统功能将保持不变。这意味着如果不是不可能的话,准确地模拟一个处理器将是困难的。

此外,使用类似请将CPULimit,使用SIGSTOP和SIGCONT反复停止其工作/重新启动仿真过程中可能导致的副作用,如时间不一致,视频显示等文物

+0

这很有趣;我不知道cpulimit。虽然它不是一个完整的解决方案,但它是我所需要的最重要的“缺失部分”,因为我认为内存限制已经可以在大多数仿真器中设置。我意识到我实际上不会效仿其他处理器(除非qemu专门模拟某个x86系列的特定成员),但这可能足够满足我的目的。 – Liam 2010-11-19 15:40:13

+0

* cpulimit *效果很好。确定guest OS仍然打印物理cpu速度,但可用速度由cpulimit设置。例如'cpulimit -l 5 -s qemu-system-i386 -cpu pentium -m 32 '确实模拟Pentium 166MHz。谢谢@thkala。 – tuk0z 2016-05-16 19:55:36