14

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

我可以使用 Fiddler ( http://www.fiddler2.com/fiddler2/ )模拟慢速网络我可以使用 Process Explorer ( http://technet.microsoft.com/en ) 查看 CPU 在一段时间内如何用于进程-us/sysinternals/bb896653.aspx)。

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

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

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

4

5 回答 5

5

过去,平台 SDK 带有用于执行此操作的压力工具(STRESS.EXECPUSTRESS.EXESDK 中),但它们可能仍然存在(请检查您的平台 SDK 和/或 Visual Studio 安装中的这两个文件——不幸的是我正在输入的机器上既没有安装 PSDK 也没有安装 VS。)

其他工具:

  • 内存:性能和可靠性(例如处理失败的内存分配):可以使用EatMem
  • CPU:性能和可靠性(例如竞争条件):可以使用CPU BurnPrime95
  • 句柄(GDI,用户):可靠性(例如处理失败的 GDI 资源分配):???可能必须自己编写,但 GDI 句柄用完(有缺陷的 GTK 应用程序通常会将它们全部吃掉,直到系统上的所有其他应用程序开始像苍蝇一样死掉)是对任何 Windows 应用程序的真正考验
  • 磁盘:性能和可靠性(例如处理磁盘已满):DiskFiller等。
于 2009-02-27T06:53:39.740 回答
3

AppVerifier具有低资源模拟功能。

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

于 2009-02-27T08:18:01.127 回答
1

您可以运行MemAlloc来消耗 RAM,一次可能需要几个副本。

于 2009-02-27T06:54:21.610 回答
1

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

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

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

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

在任务管理器中,右键单击一个进程并选择“Set Affinity...”,然后选择该进程可以分配到的处理器内核。

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

于 2009-02-27T06:58:55.717 回答
0

它与 SetProcessWorkingSetSize 无关

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

于 2009-02-27T11:19:33.640 回答