首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >禁用超线程与更改ProcessorAffinity?

禁用超线程与更改ProcessorAffinity?
EN

Stack Overflow用户
提问于 2012-06-07 19:21:55
回答 1查看 2.2K关注 0票数 7

我已经注意到,如果我在BIOS中禁用超线程,我的一些多线程计算会运行得更快。

我还了解到,可以通过编程方式禁用(逻辑) CPU:s,方法是修改当前进程的处理器亲和性,例如在C#中如下所示:

代码语言:javascript
运行
复制
// using System.Diagnostics;
var current = Process.GetCurrentProcess();
var affinity = current.ProcessorAffinity.ToInt32();
current.ProcessorAffinity = new IntPtr(affinity & 0x5555);

至少从性能的角度来看,通过更改处理器亲和性来禁用每秒一次的(逻辑) CPU是否与完全禁用超线程具有相同的效果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-07 22:10:06

您可以尝试使用NUMA API,或者使用CPUID指令手动发现CPU拓扑...但IMHOthe最好的解决方案是执行一些合理的默认设置,并让最终用户调整线程设置。除非您有一个特定的硬件目标,否则有许多可能的情况需要处理-逻辑核心与物理核心、超线程或非超线程、单插槽系统与多插槽系统、缓存和内存拓扑。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10930822

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档