首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >超线程和进程优先级

超线程和进程优先级
EN

Unix & Linux用户
提问于 2017-08-24 12:50:56
回答 1查看 545关注 0票数 3

是否有任何方法(linux内核选项、sysctl设置或可配置调度程序模块)可导致高优先级进程/线程在具有第二个(超线程)虚拟核的物理处理器核上运行,以便最大限度地提高单线程性能(通过防止竞争情况、不共享L1缓存和可能使用最大cpu时钟- Turbo Boost),同时在具有较低cpu时钟的其他物理核的虚拟核上运行较低优先级的进程/线程,以最大限度地提高系统总吞吐量?

换句话说:是否可以基于优先级动态禁用超线程?

如果有任何CPU使用进程/线程优先级来决定超级线程核心上的哪两个线程在竞争情况下可以首先取得进展,那么linux内核是否能够调度高优先级进程/线程,以便它们只与非常低优先级的进程/线程共享物理内核,从而将它们对另一个线程的影响降到最低?

当高优先级进程处于休眠状态时,其前物理核的两个虚拟核都应该再次用于低优先级进程,这使得使用taskset将一个物理核从所有其他进程的CPU关联掩码中排除在外是不合适的。

编辑:随着具有性能和高效核心的混合体系结构的阿尔德湖处理器的出现,这个问题扩展到:

如何将低优先级进程强制到高效核心,并使性能核心要么闲置(以节省电力)要么保留给高优先级进程(为了最大化涡轮增压而保留热预算)?

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2023-01-27 21:43:36

  • 您确切想要的(特别是OP的注释中讨论的内容)需要与任务切换=>同步地打开/脱机一些核心部分,只有调度程序才能执行that.。
  • 为运行调度程序所调度的任务而提供的核心集是对调度器施加的约束。(即调度程序无法控制CFS、BFS和ULE的AFAIK )

因此,没有办法完全实现你想要的。

但是,由于一些独立的内核设施,也有可能出现这种情况,但是,没有免费午餐,不同的成本取决于高优先级运行的应用程序。

一个想法是编写一个专门的脚本来启动这些应用程序,这个特殊的脚本将:

1/脱机不受欢迎的兄弟姐妹

好的,这假设您知道将运行任务的物理核心,比如cpu2。但你一定知道是哪一个。读第2节。

这可以通过向/sys/devices/system/cpu/cpu3/online写入0来实现

2/设置进程的CPU关联

在编写它时,您的第一个目标是尽可能多地保留L1缓存。如果您关心大量的L1缓存,那么您就不希望在调度程序基于公平共享的决定的任何时候将任务迁移到另一个核心。

这可以通过几种方法来实现,因为在第3节中您会发现,我更喜欢使用调度工具及其-a选项,承认cpu2的愿望:

代码语言:javascript
运行
复制
schedtool -a 0x4 -e yourapp_name yourapp_parms

3/ Set进程调度策略和优先级

调度任务SCHED_FIFO将非常有帮助,因为没有时间切片,并且只有当一个优先级较高的任务被运行或阻塞时,任务才会被调度出去。

通过使用schedtool使用-F和-p选项,有几种方法可以实现这一点:

代码语言:javascript
运行
复制
schedtool -F -p 5 -e yourapp_name yourapp_parms

我更喜欢schedtool,因为您可以将关联设置和调度策略设置合并到一个命令中:

代码语言:javascript
运行
复制
schedtool -a 0x04 -F -p 5 -e yourapp_name yourapp_parms

小心处理:进入实时任务世界(…)。所以…你知道你在做什么。特别是…如果您的任务是CPU绑定的,您知道您必须关心在您的系统上运行SCHED_FIFO的其他任务的相对优先级,当然也意识到在某个时候让其他内核运行其他SCHED_FIFO绑定任务…的极端荒谬之处。

4/在任务完成

时回复最初被分隔的同级

这可以通过编写1到/sys/devices/system/cpu/cpu3/online来实现

限制

按照此方法,您了解到只有在特权任务终止时,同级才可用于调度程序。

虽然这不是问题,如果运行一个CPU绑定的任务SCHED_FIFO (因为它永远不会或几乎很少被排定出来),如果特权任务实际上是IO绑定的,那么它很可能看起来有害(从总体性能的角度来看)。换句话说,花费大量的时钟时间来等待外部事件。

因为在这种情况下,特权任务将被(正确地)调度出去,而另一个任务将占用CPU (可能会擦除您亲爱的L1缓存),而兄弟姐妹在等待的所有时间都会被取消。

因此,与往常一样,只有在其典型工作负载下对系统进行基准测试,才能判断这种方法是否确实有任何显著的好处。

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

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

复制
相关文章

相似问题

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