Linux调度器基础之SoC架构

本文介绍了Linux调度器在多CPU系统中的工作原理,强调了负载均衡的重要性以及在SoC架构下的多层次考虑。从NUMA Node、Cluster、Core到Thread,详细分析了不同层级上进程迁移的代价和亲和性,指出在进行负载均衡时应优先考虑CPU之间的亲和性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言


在多CPU系统中,调度器需要统筹所有的CPU做进程调度。每一个CPU多维护一个调度队列,调度队列上是该CPU需要调度的进程。

有些CPU调度队列上的进程可能比较少,甚至空闲;而有些CPU调度队列上的进程可能比较多,这样就会导致有些CPU闲置,有些CPU繁忙。为了解决这种负载不均衡的状态,引入了负载均衡的概念,负载均衡的基本思路是,如果当前CPU发现本地调度队列上的进程非常少,或者空了,就会从其他CPU调度队列拿一些进程过来;如果当前CPU发现本地调度队列上的进程非常多,也会主动把本地调度队列上的一些进程分给其他CPU。

这里有个关键问题,如果系统中有多个CPU,比如8个,那么怎么在另外7个CPU中做选择呢?仅仅根据这7个CPU的负载就可以了呢?答案是否定的,因为进程在不同的CPU之间迁移的时候,代价是不一样的。

下面是一个典型的Soc架构简图,只画除了CPU和memory,不过对于了解进程调度就足够了。我们可以看到一个SoC可能集成了多个NUMA Node,每个Node可能集成了多个Cluster,每个Cluster可能集成了多个Core,每个Core有有可能虚拟出来多个逻辑Core,称为thread,或者超线程。下面我们分章节来探讨下SoC的多层次架构。
在这里插入图片描述

NUMA Node


一个SoC中可能集成了多个NUMA Node。一般来说,提升S

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值