使用parallel.for 的AC# 方法完全使用10 核CPU 中的所有核心(在双Xeon 64GB RAM Windows 10 工作站上),但不使用第二个CPU 上任何其他可用的10 个物理核心。即使进程的关联性(在任务管理器中)表明所有核心都对其可用。有什么想法/方法可以让进程使用所有可用的核心吗?在这种情况下,我确实看到从标准编码到parallel.for 的巨大性能改进;放弃另外100%的速度提升似乎有些可惜。谢谢。
重要观察:在任务管理器中查看,很明显该进程使用的内核分布在两个 Xeon CPU 上。IOW,它使用每个 CPU 大约一半的内核。
其他信息:Environment.ProcessorCount = 32。即使系统有 20 个物理核心,因此有 40 个逻辑核心。显然,该进程并未使用所有这 32 个核心。它最多使用 20 个。FWIW,在单核 i7-3770 上,该过程按预期工作,使用了接近 100% 的 8 个可用逻辑核心。
附加 2:Luaan 建议的配置更改不会影响可用处理器的数量:仍然是 32 个。
其他 3:Windows 10 专业版 64 位