Windows 有没有办法限制进程的CPU/内存?

Windows 有没有办法限制进程的CPU/内存?,windows,performance,testing,cpu-usage,Windows,Performance,Testing,Cpu Usage,问题:我有一台开发者机器(读:快,内存多),但用户有一台用户机器(读:慢,内存不多) 我可以使用Fiddler()模拟慢速网络 我可以使用processexplorer()查看一个进程在一段时间内CPU的使用情况 为了更有效地模拟用户机器,我有没有办法限制一个进程可以拥有的CPU数量,或者一个进程可以拥有的内存数量?(例如,为了隔离性能问题) 我想我可以用一个虚拟机,但我想找一些轻一点的 我使用的是Windows XP,但欢迎为任何Windows机器提供解决方案。谢谢。在过去的好日子里,平台SD

问题:我有一台开发者机器(读:快,内存多),但用户有一台用户机器(读:慢,内存不多)

我可以使用Fiddler()模拟慢速网络 我可以使用processexplorer()查看一个进程在一段时间内CPU的使用情况

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

我想我可以用一个虚拟机,但我想找一些轻一点的


我使用的是Windows XP,但欢迎为任何Windows机器提供解决方案。谢谢。

在过去的好日子里,平台SDK曾经提供压力工具来实现这一点(SDK中的
stress.EXE
CPUSTRESS.EXE
),但它们可能仍然存在(请检查您的platform SDK和/或Visual Studio安装中是否有这两个文件——不幸的是,我在键入的机器上安装了PSDK或VS。)

其他工具:

  • 内存:性能和可靠性(例如处理内存分配失败):可以使用
  • CPU:性能和可靠性(例如竞争条件):可以使用等
  • 句柄(GDI,用户):可靠性(例如,处理失败的GDI资源分配):???可能需要自己编写,但GDI句柄的耗尽(有缺陷的GTK应用程序通常会将它们吃掉,直到系统上的所有其他应用程序开始像苍蝇一样死去)是对任何Windows应用程序的真正考验
  • 磁盘:性能和可靠性(如处理磁盘已满):等

您可以运行来咀嚼RAM,可能一次就有几个副本。

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

这个问题的公认答案有一个指向Windows API的
SetProcessWorkingSetSize
的链接,因此它并不完全是一个可以限制进程可以使用的内存量的工具

在更改进程可以使用的CPU资源量方面,如果您不介意资源的每个核心的粒度限制,任务管理器可以更改进程的处理器相关性

在任务管理器中,右键单击某个进程并选择“设置关联…”,然后选择该进程可分配给的处理器内核

如果开发机器有多个内核,但用户机器只有一个,则不允许进程在所有可用的内核上运行,而是将进程的处理器关联性设置为仅一个内核。

具有低资源模拟功能


您还可以尝试将进程的优先级设置为非常低。

这与SetProcessWorkingSetSize无关


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

+1是的,我也想知道这一点。我已经尝试过CPU burn,它似乎工作得很好。但有点像大锤。我还没有尝试过eatmem。标记为可接受的答案。哪些API提供了限制CPU使用的选项?