我已经构建了部署在 Windows 2003 服务器上的软件。该软件作为一项服务持续运行,它是 Windows 机器上对我来说唯一重要的应用程序。部分时间,它从 Internet 检索数据,部分时间它对这些数据进行一些计算。它是多线程的——我使用大约 4-20 个线程的线程池。
我不会对所有这些细节感到厌烦,但我只想说,当我在池中启用更多线程时,会发生更多并发工作,并且 CPU 使用率会上升。(就像对带宽等其他资源的需求一样,虽然这对我来说无关紧要——我有很多)
我的问题是:我是否应该简单地尝试最大化 CPU 以获得最大的收益?直觉上,我认为以 100% CPU 运行是没有意义的。甚至 95% 的 CPU 似乎都很高,几乎就像我没有给操作系统太多空间来做它需要做的事情。我不知道确定最佳平衡的正确方法。我想我可以测量和测量,并且可能会发现最佳吞吐量是在 CPU 平均利用率为 90% 或 91% 等时实现的,但是......
我只是想知道这是否有一个好的经验法则???我不想假设我的测试会考虑到工作负载的各种变化。我宁愿玩得安全一点,但不要太安全(否则我的硬件使用不足)。
你有什么建议吗?对于 Windows 上的多线程、混合负载(一些 I/O、一些 CPU)应用程序,什么是智能的、注重性能的利用规则?