首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux上禁用Intel Alder Lake高效内核

在Linux上禁用Intel Alder Lake高效内核
EN

Unix & Linux用户
提问于 2022-01-15 11:32:16
回答 1查看 5.3K关注 0票数 4

我的应用程序需要最大的单线程性能,并受到切换到Intel E核的影响.

我正在寻找一种方法来禁用英特尔i9-12900K在我的Ubuntu20.04机器上的E核,而不访问bios (它是一个租用的专用服务器)。或者任何可能的方法来区分这些核心和分配CPU亲缘关系,使用taskset将它们排除在执行之外。

我试着在谷歌找到答案。目前只发现确实存在调度程序问题,但没有明确的修复或解决我的问题的方法。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-01-15 13:48:58

taskset是为应用程序分配核心的一个标准特性,它在您的情况下非常好地工作。例如,在Intel i9 12900 K的例子中,将您的任务锁定在前16个核上,您可以这样做:

代码语言:javascript
复制
taskset 0xFFFF application
taskset -c 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15 application

第二种形式更长,但更容易阅读。

标准Linux内核AFAIK目前没有任何基础设施来提示内核某些应用程序需要使用某些类型的内核。是的,Linux内核支持BIG.little ARM架构,但我没有听说过利用这个特性的API。

截至2022年1月,Linux内核不支持任何形状或形式的Intel线程管理器。没有补丁,什么都没有。

最后,值得注意的是,Linux和Windows报告HT/SMT兄弟姐妹的方式有所不同。

Windows将它们成对列出,即Core 1:线程1线程2,Core 2:线程1线程2等等。Linux首先列出所有物理内核,然后是HT/SMT兄弟姐妹。

因此,如果您想测试物理内核而不对16核CPU使用HT/SMT,您将这样做:

代码语言:javascript
复制
taskset -c 0,1,2,3,4,5,6,7 application
taskset 0xFF application

这里有更多的信息:我如何知道哪些处理器是物理核?

选项N2:您可以将E核脱机,它们对于您的系统将变得不可见:

代码语言:javascript
复制
echo 0 | sudo tee /sys/devices/system/cpu/cpu{NN}/online

对于英特尔核心i9 12900 K,这将是

代码语言:javascript
复制
for i in {16..23}; do echo 0 | sudo tee /sys/devices/system/cpu/cpu${i}/online; done
票数 6
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/686459

复制
相关文章

相似问题

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