5

我目前正在开发一个小型内部测试应用程序,以在计算机上创建多种类型的负载,以便我们可以看到我们的软件在负载下是如何工作的。我被一个请求挂断了,因为我在用户运行程序之前做了某种方式来指定 CPU 的使用百分比(比如 40%),这将有望将 cpu 保持在一个范围内 +-他们投入的 10%。有人告诉我,他们以前见过这样的程序,但我见过的每一个声称这样做的程序都不起作用。我正在尝试读取平均使用情况并让正在运行的线程休眠,以降低 CPU 使用率,但我发现这并不准确。它也将用于多台服务器,每台服务器都有不同的 CPU,所以我不能做太多的硬编码,因为它需要在每台服务器上工作。

编辑:我试图使用较低优先级的线程,并且还被告知这对他们没有用(尽管在我要求这样做之前,我已经创建了仅用于测试目的的选项)。

4

2 回答 2

3

前段时间我们做了一些类似的调整应用服务器。我们发现,当 CPU 大约为 70% 时,我们的整体吞吐量最好。我们的解决方案是启动额外的线程,每个线程之间有一个延迟,直到达到所需的负载。如果 CPU 超过 80%,我们会减少运行线程的数量(通知线程完成其当前工作,然后终止)。如果 CPU 低于 60%,我们启动一个新线程。

您可以应用类似的逻辑来创建可以调整到目标 CPU 利用率的人工负载。您的线程需要平衡 CPU 和非 CPU(IO,或只是睡眠),以便进行微调。如果您的线程是 CPU 密集型的,则每个线程将消耗 1 个 CPU 核心至大约 100%。

于 2012-08-17T19:27:25.750 回答
2

从 Windows 8 开始,您可以使用 Windows Jobs 使操作系统调度程序限制 CPU 使用率

于 2012-08-17T19:39:07.933 回答