Linux进程管理之调度域与调度组

调度域

调度域就是CPU拓扑中某一层级里面,与某个逻辑CPU关联(该CPU 称为主权CPU)的所有逻辑CPU的集合;

调度组

某一层级调度域中所包括的下级实体(一个逻辑CPU的集合)。

调度域和调度组的区别:

  1. 调度域允许重叠交叉,调度组不允许重叠交叉。
  2. 一个调度域包含一个或多个调度组,一个调度组从属于一个或多个调度域。
  3. 同属于一个逻辑CPU的各级调度域通过parent/child指针组织成双向链表,同一级调度域的所有调度组通过next指针形成一个单向链表。
    一句话概括:从一个主权CPU出发,该CPU在每个拓扑层级拥有一个调度域(每个调度域覆盖一个目标CPU集合),该调度域拥有若干个调度组(每个调度组包含一个目标CPU集合)。

调度域和调度组的设计主要是用于CPU负载均衡。
CPU负载均衡的含义是最大化全局性能,使各个CPU的负载维持在一个基本相同的水平。负载均衡的时候必然牵涉到进程迁移
(从相对繁忙的逻辑CPU迁移到相对空闲的逻辑CPU),而进程迁移是有代价的,这种代价就是性能损失。逻辑CPU之间共享的资源越少,迁
移的代价就越大。也就是说,线程组内的迁移代价最小(共享流水
线、高速缓存和内存通道),多核组内的迁移代价次之(共享高速缓
存和内存通道),封装组内再次(共享内存通道),而跨NUMA节点的
代价通常是很大的。于是,负载均衡时优先考虑低级调度域内部的均
衡(在同一级调度域的各个调度组之间比较负载,如果负载相差过大
就迁移进程),然后再逐级往上用同样的方式操作每一级调度域,直到最终达到全局的负载均衡。

原文作者:精通Linux内核

原文链接:Linux进程管理之调度域与调度组 - 知乎(版权归原文作者所有,侵权留言联系删除)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值