我已经编写了一个在Windows server 2012上运行的multithreading程序。
该程序将创build线程来利用多个CPU,我可以控制它将创build的并发线程的数量。 每个线程通常会使用100%的CPU几分钟(这是一个非常CPU密集的计算,没有I / O完成)。 在这个过程的整个过程中,它将创build并销毁〜1000个线程。
任务pipe理器报告,服务器有10个核心和20个逻辑处理器。 我已经尝试了许多并发线程的设置,但是从任务pipe理器显示的CPU利用率从不会超过〜30%。 当我查看每个线程时,没有人使用总CPU的3%以上 – 当他们应该使用100%时。
还有一点需要注意:如果我在同一时间运行这两个进程,每个进程将使用〜30%的可用CPU。
我已经在我的4核心Windows 10笔记本电脑上运行相同的程序,并使用所有的CPU没有问题。
任何人都可以看到为什么Windows Server 2012将我的进程限制在可用总CPU的30%左右的原因吗?