2009-02-27 64 views
13

问题:我有一个开发人员机器(读取:快速,大量内存),但用户有一台用户机器(读取速度慢,内存不是很多)。是否有任何方法限制进程的CPU /内存?

我可以模拟使用招慢速网络(http://www.fiddler2.com/fiddler2/) 我可以看看CPU是如何使用的一段时间内的使用处理资源管理器(http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx)的步骤。

有什么办法可以限制进程可以拥有的CPU数量,或者进程为了更有效地模拟用户计算机而可以拥有的内存量? (为了隔离性能问题,例如)

我想我可以使用虚拟机,但我正在寻找一些更轻的东西。

我使用Windows XP,但任何Windows机器的解决方案都会受到欢迎。谢谢。

+0

+1是的,我想知道这一点。 – 2009-02-27 06:49:31

回答

5

常来与压力测试工具这样做只是这回在过去的好时光(STRESS.EXECPUSTRESS.EXE在SDK)平台SDK,但他们可能依然存在(请检查您的平台SDK和/或Visual Studio安装的这两个文件 - 不幸的是我有我打字的机器上安装niether的PSDK也不VS)

其他工具:

  • 内存:性能&可靠性(例如处理失败的内存分配。 ):可以使用EatMem
  • CPU:性能&可靠性(例如,竞争条件):可以使用CPU Burn,Prime95
  • 句柄(GDI,用户):可靠性(例如处理失败的GDI资源分配):可能需要编写自己的,但用完GDI手柄(buggy GTK应用程序通常会将它们全部吃掉,直到系统上的所有其他应用程序开始像苍蝇一样死亡)对任何Windows应用程序都是真正的测试
  • disk:性能&可靠性(例如处理磁盘满):DiskFiller

另见this existing thread

+0

我试过CPU烧伤,它似乎很好。虽然它有点像大锤。虽然我没有尝试过eatmem。标记为接受的答案。 – 2009-03-06 09:16:27

1

您可以运行MemAlloc来嚼碎RAM,可能会一次拷贝几份。

1

我发现了一个相关的问题:

Set Windows process (or user) memory limit

的提问接受的答案有一个链接到Windows API的SetProcessWorkingSetSize,所以它不完全是一个工具,它可以限制的内存量的过程可以使用。

就改变进程可以使用的CPU资源量而言,如果您不介意每个内核资源限制的粒度,则任务管理器可以更改进程的处理器亲缘关系。

在任务管理器中,右键单击某个进程并选择“设置相似性...”,然后选择该进程可分配给的处理器核。

如果开发机器有很多内核,但用户机器只有一个,那么,而不是允许进程在所有可用内核上运行,请将进程的处理器亲缘关系设置为只有一个内核。

3

AppVerifier具有低资源仿真功能。

您也可以尝试将您的流程的优先级设置得非常低。

0

它有什么用SetProcessWorkingSetSize

只需使用内部的Win32内核API来限制CPU使用率

+0

apis提供了限制CPU使用的选项吗? – 2013-12-11 19:46:25

相关问题