gpt4 book ai didi

c - Linux CPU 隔离和互斥

转载 作者:太空狗 更新时间:2023-10-29 11:06:48 28 4
gpt4 key购买 nike

我目前正在研究使用 isolcpus 的选项,以便隔离一些核心并将它们专用于某些具有实时约束的进程。查看 isolcpus 的文档,它说明了这一点

Description Remove the specified CPUs, as defined by the cpu_number values, from the general kernel SMP balancing and scheduler algroithms.

假设我的进程有 4 个线程,我隔离了 2 个内核(忽略 HT),它们需要使用某种 linux 操作系统同步原语(互斥锁、信号量、cond var 等)进行同步。如果按照文档中的说明从调度算法中移除内核,并且其中一个线程阻塞并进入休眠状态,那么谁会在线程解除阻塞时将其调度回隔离的 CPU?

谢谢。

最佳答案

CPU 是“从通用内核 SMP 平衡和调度程序算法中删除[d ...]”意味着内核不会选择那些(逻辑)CPU 来调度通用任务,这有​​效是指那些没有为那些 CPU 特别分配 CPU 亲和性的,例如通过 tasksetcset 命令。同样,安排在其中一个或多个 CPU 上的任务将仅在分配的 CPU 上运行,甚至不会在隔离集中的任何其他 CPU 上运行(如果有的话),无论相对 CPU 负载如何。

然而,这并不意味着内核放弃明确分配给独立 CPU 的调度任务的责任。它像调度任何其他任务一样调度它们,但只在为它们分配亲缘关系的 CPU 上。您无需安排分配给独立 CPU 的任务的特殊调度。

另外,顺便说一句,当你说

I isolate 2 cores (ignore HT)

,我怀疑你可能有误解。 Linux 将启用超线程的内核分别作为两个独立的内核来处理,尽管实际上它们共享处理资源。因此,如果 HT 已启用,您不能安全地忽略它。事实上,您需要非常仔细地考虑它,至少在选择要隔离的核心数和哪些核心时是这样。

关于c - Linux CPU 隔离和互斥,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54405212/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com