使用 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 位