是否有任何方法限制一个进程的CPU /内存?

问题:我有一个开发人员机器(读取:快速,大量的内存),但用户有一个用户机器(读:慢,不是很多的内存)。

我可以使用Fiddler( http://www.fiddler2.com/fiddler2/ )来模拟一个很慢的networking。我可以看看如何使用Process Explorer使用CPU随着时间的推移( http://technet.microsoft.com/zh-CN/ -us / sysinternals / bb896653.aspx )。

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

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

我使用Windows XP,但任何Windows机器的解决scheme将受到欢迎。 谢谢。

平台SDK过去常常带有压力工具,在过去的日子(SDK中的STRESS.EXECPUSTRESS.EXE ),但它们可能仍然存在(请检查您的平台SDK和/或Visual Studio安装这两个文件 – 不幸的是,我有niether PSDK也没有安装在我打字的机器上的VS)。

其他工具:

  • 内存 :性能和可靠性(如处理失败的内存分配):可以使用EatMem
  • CPU :性能和可靠性(例如竞赛状况):可以使用CPU刻录 , Prime95等
  • 句柄 (GDI,用户):可靠性(例如,处理失败的GDI资源分配): 可能需要编写自己的,但用尽GDI手柄(buggy GTK应用程序通常会把它们都吃掉,直到系统上的所有其他应用程序将开始像苍蝇一样死掉)是一个真正的测试任何Windows应用程序
  • 磁盘 :性能和可靠性(如处理磁盘已满): DiskFiller等

也看到这个现有的线程 。

AppVerifier具有低资源仿真功能。

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

你可以运行MemAlloc来咀嚼RAM,可能会一次拷贝几个拷贝。

我发现一个相关的问题:

设置Windows进程(或用户)的内存限制

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

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

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

如果开发机器有许多核心,但用户机器只有一个核心,那么,不要让进程在所有可用的核心上运行,而是将进程的处理器亲和力设置为只有一个核心。

它与SetProcessWorkingSetSize无关

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