C#将CPU保持在/接近指定的百分比用量以进行测试

wga*_*lon 5 c# testing cpu throttling

我目前正在开发一个小型内部测试应用程序,以便在计算机上创建多种类型的负载,以便我们可以看到我们的软件在负载下如何工作.我在一个请求上被挂起,因为我在用户运行程序之前用某种方式指定CPU的使用百分比(比如说40%),这有望保持cpu在一个范围内+ - 他们投入的比例是他们的10%.我被告知他们之前曾经看过程序,但是我所看到的每一个声称这样做的人都没有用.我试图读取平均使用情况并让线程运行以便CPU使用率降低,但我发现这不准确.它也将用于多个服务器,每个服务器都有不同的CPU,所以我不能做很多硬编码,因为它需要在每个服务器上工作.我个人认为不可能准确地做到这一点,但我在这里要求作为最后的努力,看看是否有其他人遇到过与此类似的软件,并且知道它是如何编写的.

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

Eri*_* J. 3

不久前我们对应用程序服务器进行了类似的调整。我们发现,当 CPU 利用率约为 70% 时,整体吞吐量最佳。我们的解决方案是启动额外的线程,每个线程之间有一个延迟,直到达到所需的负载。如果 CPU 使用率超过 80%,我们就会减少正在运行的线程数量(通知线程完成其当前工作,然后终止)。如果 CPU 下降到 60% 以下,我们就会启动一个新线程。

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