如何在仅使用一台机器的情况下模拟在不同硬件上运行代码?

fir*_*rro 5 testing benchmarking resources emulation performance-testing

正如标题所说,我希望在不同的硬件设置上估算一段代码的性能.有没有工具可以做到这一点?

我希望通过限制流程可用的资源来运行我的代码并执行测量.我想控制诸如可用的总内存以及CPU使用率之类的东西,但如果我有更多的粒度,那会更好.是否有任何工具可以让我模拟不同速度的RAM,速率限制CPU(比如X gigaflops),减慢磁盘读取等?

我已经在linux中查看setrlimit命令,但我认为它不会让我模仿延迟这样的东西.我考虑使用VM来运行代码,只是调整内存和CPU,但我不确定它是否足够精细.我还考虑过挂钩一些系统调用,然后在允许读/写系统调用之前旋转x纳秒,但感觉有点笨拙.另一个问题是这段代码主要在Windows上运行,如果可能的话,最好在Windows上执行此操作.

仅仅为了某些背景,我试图在不同的硬件设置上提供一些合理准确的运行时间和资源利用率估算,而无需实际购买,组装和测试所述硬件.

感谢您的任何帮助,您可以提供.

Zan*_*ynx 1

如果您希望对机器的每个可能部分进行非常详细的控制,请使用软件模拟机器,例如 Bochs。Bochs 将在软件中模拟 x86 CPU、硬盘、显卡、网卡等一切。

为了做你想做的事情,你需要构建你自己的 Bochs 版本,并更改​​模拟器来控制不同部分的速度。