前言
a.假设一个4核处理器中的每个物理CPU拥有独立L1 cache且不支持超线程技术,分成两个簇cluster0核cluster1.每个簇包含两个物理CPU核,簇中的CPU核共享L2 cache。根据我们大家工作经验,是否能够画出处理器在Linux内核里调度域核调度组拓扑关系结构图。
b.如何查找出一个调度域里最繁忙的调度组?
c.CPU域根据实际物理属性,CPU域分成如下类型
| CPU分类 | Linux内核分类 | 描述 |
|---|---|---|
| 超线程(SMT) | CONFIG_SCHED_SMT | 一个物理核心可以有两个执行线程,被称为超线程技术。共享CPU资源,共享L1 cache |
| 多核(MC) | CONFIG_SCHED_MC | 每个物理核心独享L2 cache,多个物理核心可以组成一个cluster,cluster里的CPU共享L2 cache |
| 处理器(Soc) | 内核称为DIE | SOC级别 |
Linux内核默认专门定义一个数组default_topology来存储CPU物理域的层次结构。DIE类型是标准配置。SMT和MC类型需要在内核配置时和实际硬件配置相符匹配,才能够发挥硬件的性能和均衡效果。ARM不支持SMT。
内核对CPU的管理是通过bitmap来管理,并且定义possible,present,online和active共计4种状态。