我编写了一个在 Windows Server 2012 上运行的多线程程序。
该程序将创建线程以利用多个 CPU,我可以控制它将创建的同步线程数。每个线程通常会在几分钟内使用 100% 的 CPU(这是一个非常耗费 CPU 的计算,并且不执行 I/O)。在进程的整个生命周期中,它将创建和销毁约 1000 个线程。
任务管理器报告服务器有 10 个内核和 20 个逻辑处理器。我尝试了多种同时线程数设置,但任务管理器显示的 CPU 利用率从未超过 30%。当我查看每个线程时,没有一个线程使用的总 CPU 超过 3% - 而它们应该使用 100%。
还有一点需要注意:如果我同时运行这两个进程,每个进程将使用约 30% 的可用 CPU。
我已经在我的 4 核 Windows 10 笔记本电脑上运行了相同的程序,并且使用所有 CPU 没有任何问题。
有人能知道为什么 Windows Server 2012 将我的进程限制为可用 CPU 总容量的约 30% 吗?