无论启动多少个线程,应用程序每个核心的利用率上限为 20%

无论启动多少个线程,应用程序每个核心的利用率上限为 20%

我正在尝试使用二手的 Dell Poweredge R900 作为计算池(4 个四核处理器为我提供了 16 个核心来运行模拟)。它目前运行的是 Windows Server 2008 R2 Enterprise。

我正在运行自定义 .net 代码,并且可以将线程数指定为我想要的任何数量。通常(例如在我的 Windows 10 四核机器上),一个线程会占用一个 CPU 核心 10 分钟左右。但是,如果我在服务器上启动 7 个线程(作为示例),我会看到 16 个核心中的 7 个以 20% 的利用率亮起。如果我启动 16 个线程,我会看到所有 16 个核心的利用率都在 ~20%。因此,我尝试启动 48 个线程,希望我的 16 个核心现在应该每个都有 3 个线程,从而达到 60% 的利用率,但没有成功。我再次得到 20%(并且每个线程明显慢了 3 倍,因此每个核心的所有 3 个线程都会得到处理)。无论我启动多少个线程,我的利用率都不会超过每个核心 20%。现在,如果我以每个 16 个以上的线程启动 2 个代码实例,所有核心都会达到 40%。第三个实例,60%。所以这不是 FSB 限制或其他什么。一定有某种因素阻碍了每个实例的性能下降到每个核心 20% 左右。

我无论如何也想不出瓶颈在哪里。这是 Windows 服务器的问题吗?还是戴尔 BIOS 的问题?我已将操作系统从针对后台进程优化改为针对程序优化……似乎没有影响。我对 Windows 服务器完全陌生,所以任何想法都将不胜感激!

答案1

看来 Server 2008 R2 有一种限制 CPU 利用率的方法。我在这里找到了相关信息,建议您阅读并尝试设置自己的限制:

https://technet.microsoft.com/en-us/library/ff384148(v=ws.10).aspx

另外,请注意,在上面的链接的评论部分,有 2 个链接可以进一步解释这个主题...

相关内容