最佳CPU利用率阈值

kvi*_*sta 4 cpu performance multithreading throughput

我已经构建了可以在Windows 2003服务器上部署的软件。该软件作为服务连续运行,并且是Windows上对我来说很重要的唯一应用程序。有时,它是从Internet检索数据,而有时则是对这些数据进行一些计算。它是多线程的-我使用大约4-20个线程的线程池。

我不会为您带来所有这些细节,但是只要我在池中启用更多线程,就可以进行更多的并发工作,并且CPU使用率会增加。(对带宽等其他资源的需求也是如此,尽管这对我来说无关紧要-我有很多)

我的问题是:我是否应该简单地尝试最大程度地利用CPU来获得最大的收益?凭直觉,我认为以100%CPU运行是没有道理的。甚至95%的CPU似乎都很高,几乎就像我没有给OS太多的空间来做它需要做的事情。我不知道确定最佳平衡的正确方法。我猜想我可以进行测量,并且可能发现在90%或91%的CPU平均利用率等情况下可以实现最佳吞吐量,但是...

我只是想知道这是否有很好的经验法则???我不想假设我的测试将考虑工作负载的各种变化。我宁愿玩一点安全,但不要太安全(否则我的硬件使用不足)。

你有什么建议吗?对于Windows上的多线程混合负载(某些I / O,某些CPU)应用程序,明智的,注重性能的使用规则是什么?

Tob*_*oby 5

是的,我建议100%运转缓慢,所以不想一直看到进程一直在运行。我一直将目标定为80%,以在利用率和峰值/临时过程的空间之间取得平衡。

我过去使用的一种方法是缓慢地增加池的大小并衡量其影响(包括对CPU和其他约束(如IO)的影响),您可能从未发现,您可能会发现IO突然成为瓶颈。