我在具有40个核心的计算机上有以下奇怪的行为:在System.Environment.ProcessorCount
(12.0.30815.0)和fsi
(12.0.30815.0)中调用fsianycpu
会导致不同的结果。
在fsi
我在fsianycpu中获得System.Environment.ProcessorCount = 32
,我得到System.Environment.ProcessorCount = 40
。这似乎也会影响任务并行库,当从fsi
运行简单的测试代码(处理器数量错误)时,它只使用80%的可用内核。
可能是什么原因?
答案 0 :(得分:5)
默认情况下,FSI可能在32位模式下运行。假设您在Windows下运行,您应该可以通过任务管理器进行检查。我怀疑这是在WoW64下运行的应用程序的限制(使用64位Windows运行32位应用程序)。
请参阅:https://msdn.microsoft.com/en-us/library/windows/desktop/aa384228%28v=vs.85%29.aspx。没有完全确认(没有WoW64的记录行为),但它提到32位Windows仅支持32个处理器。
编辑:同时查看此其他堆栈溢出帖子:Detecting the number of processors