Linux内核中root_domain的建立与初始化
2021/6/10 7:23:15
本文主要是介绍Linux内核中root_domain的建立与初始化,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
基于Linux-5.4
一、rq默认root_domain初始化
sched_init() for_each_possible_cpu(i) { rq = cpu_rq(i); rq->rd = NULL; rq_attach_root(rq, &def_root_domain); }
上面的sched_init()中会将每个可能cpu的就绪队列attach到系统中默认的def_root_domain;执行完毕后def_root_domain->span就等于cpu_possible_mask。
二、调度域初始化
sched_init_smp sched_init_domains(cpu_active_mask) cpumask_and(doms_cur[0], cpu_map, housekeeping_cpumask(HK_FLAG_DOMAIN)); //cpu_map == cpu_active_mask build_sched_domains(doms_cur[0], NULL); //doms_cur是cpu_active_mask与housekeeping_cpumask(HK_FLAG_DOMAIN)的交集 struct s_data d; __visit_domain_allocation_hell(&d, cpu_map) //包含d->rd = alloc_rootdomain(); for_each_cpu(cpu, cpu_map) { cpu_attach_domain(sd, d.rd, cpu) struct rq *rq = cpu_rq(cpu); rq_attach_root(rq, d.rd); }
这里会根据实际的housekeeping_cpumask(HK_FLAG_DOMAIN)来确定这里建立的root_domain。
举个例子:
在sched_init()中为各个cpu的rq建立了def_root_domain,而且这个def_root_domain->span是系统中的所有cpu;
在后续的sched_init_domains()中会重新分配一个new_root_domain,然后遍历housekeeping_cpumask与cpu_active_mask的交集cpu_map中的各个cpu,先将其旧的root_domain rq[cpu]->rd(即def_root_domain)中去掉该cpu,同时设置rq[cpu]->rd = new_root_domain。
最终,就有两个root_domain:一个是没有在housekeeping_cpumask中的cpu,使用的是新分配的new_root_domain;另外就是没有在housekeeping_cpumask中的cpu,使用的是旧的def_root_domain
三、重分调度域
上面是系统初始化过程中各个cpu的root_domain的初始化。随着系统初始化完毕各个cpu的root_domain也初始化完毕。初始化完成后root_domain一般有两种可能:(1)所有cpu共享一个root_domain,这种是没有设置isolated cpu的情况; (2)第二种情况是内核有使用"isolcpus= "内核参数指定isolated CPU,则会为非 isolated cpu重新建立一个root_domain,而isolated CPUs则使用def_root_domain。
除了上面初始化初期建立的root_domain,还可以通过cgroup来重新建立、分配root_domain,这是通过cpuset来进行的,具体细节这里就不展开,以后具体介绍cpuset控制组时再详细讲解。
这篇关于Linux内核中root_domain的建立与初始化的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23linux 系统宝塔查看网站访问的命令是什么?-icode9专业技术文章分享
- 2024-11-12如何创建可引导的 ESXi USB 安装介质 (macOS, Linux, Windows)
- 2024-11-08linux的 vi编辑器中搜索关键字有哪些常用的命令和技巧?-icode9专业技术文章分享
- 2024-11-08在 Linux 的 vi 或 vim 编辑器中什么命令可以直接跳到文件的结尾?-icode9专业技术文章分享
- 2024-10-22原生鸿蒙操作系统HarmonyOS NEXT(HarmonyOS 5)正式发布
- 2024-10-18操作系统入门教程:新手必看的基本操作指南
- 2024-10-18初学者必看:操作系统入门全攻略
- 2024-10-17操作系统入门教程:轻松掌握操作系统基础知识
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南