进程管理--调度与负载均衡
- 1.请简述进程优先级、nice值和权重之间的关系。
- 2.请简述CFS是如何工作的。
- 3.CFS中vruntime是如何计算的?
- 4.vruntime是何时更新的?
- 5.CFS中的min_vruntime有什么作用?
- 6.CFS对新创建的进程和刚唤醒的进程有何特殊处理?
- 7.内核代码中定义了若干个表,请分别说出它们的含义,如prio_to_weight、prio_to_wmult、runnable_avg_yN_inv。
- 8.如果一个普通进程在就绪队列里等待了很长时间才被调度,那么它的量化负载该如何计算?
- 9.为什么switch_to()函数有3个参数?prev和next就足够了,为何还需要last?
- 10.switch_to()函数后面的代码(如finish_task_switch(prev)),该由谁来运行?什么时候运行?
- 11.假设进程A和进程B都是在用户空间运行的两个进程,它们不主动陷入内核态,调度器要做切换,那么需要做什么事情才能把进程A切换到进程B?
- 12.接上题,进程B运行的时候,它从什么地方开始运行第一条指令?直接运行被暂停在用户空间的那条指令吗?为什么?
- 13.在进程切换时需要刷新TLB,在ARM64处理器中如何提高TLB的性能?
- 14.CFS在什么时候检查是否需要调度?
- 15.在一个双核处理器里,CPU0和CPU1的就绪队列中都只有一个进程在运行,而且进程的优先级和权重相同,但是CPU0上的进程一直在占用CPU0,而CPU1上的进程是走走停停的,那么CPU0和CPU1的负载是否相同呢?
- 16.请简述负载衰减的意义。
- 17.请简述PELT算法中量化负载的计算方法。
- 18.请简述什么是处理器的额定算力和当前实际算力。
- 19.在PELT算法中,LOAD_AVG_MAX宏代表什么含义?
- 20.在PELT算法中,如何计算第n个周期的衰减?
- 21.在PELT算法中,如何计算一个进程的可运行状态的量化负载load_avg?
- 22.在PELT算法中,如何计算一个调度队列的可运行状态的量化负载runnable_load_avg?
- 23.在PELT算法中,如何计算一个进程的实际算力util_avg?
- 24.一个4核处理器中的每个物理CPU拥有独立L1高速缓存且不支持超线程技术,4个物理CPU被分成两个簇cluster0和cluster1,每个簇包含两个物理CPU,簇中的CPU共享L2高速缓存。请画出该处理器在Linux内核里调度域和调度组的拓扑关系。
- 25.假设CPU0和CPU1属于同一个调度域且它们都不是空闲的CPU,那么CPU1可以做负载均衡吗?
- 26.如何查找出一个调度域里最繁忙的调度组?
- 27.如果一个调度域负载不均衡,请问如何计算需要迁移的负载量呢?
- 28.如果使用内核提供的唤醒进程接口函数(如wake_up_process())来唤醒一个进程,那么进程唤醒后应该在哪个CPU上运行呢?是调用wake_up_process()的那个CPU,还是之前运行该进程的那个CPU,或者是其他CPU呢?
- 29.绿色节能调度器如何衡量一个进程的计算能力?
- 30.当一个进程被唤醒时,绿色节能调度器如何选择在哪个CPU上运行?
- 31.绿色节能调度器是否会做CPU间的负载均衡呢?
- 32.目前在Linux 5.0内核中,CPU动态调频调压模
- 33.什么是能效模型?
- 34.绿色节能调度器如何读取能效模型的数据?
- 35.绿色节能调度器如何计算一个CPU的功耗?
- 36.什么是硬实时和软实时?
- 37.如何计算实时系统的延时?
- 38.请列举产生中断延时的场景。
- 39.请列举产生中断处理延时的场景。
- 40.请列举产生调度延时的场景
- 41.调度的时机是什么?操作系统在什么时候会发生调度?
- 42.如何合理选择下一个进程?
- 43.什么是进程上下文?进程上下文包含哪些内容?
- 44.进程上下文保存到哪里?
- 45.进程切换时需要切换哪些东西?
1.请简述进程优先级、nice值和权重之间的关系。
答:
2.请简述CFS是如何工作的。
答:
3.CFS中vruntime是如何计算的?
答:
4.vruntime是何时更新的?
答:
5.CFS中的min_vruntime有什么作用?
答:
6.CFS对新创建的进程和刚唤醒的进程有何特殊处理?
答:
7.内核代码中定义了若干个表,请分别说出它们的含义,如prio_to_weight、prio_to_wmult、runnable_avg_yN_inv。
答:
8.如果一个普通进程在就绪队列里等待了很长时间才被调度,那么它的量化负载该如何计算?
答:
9.为什么switch_to()函数有3个参数?prev和next就足够了,为何还需要last?
答:
10.switch_to()函数后面的代码(如finish_task_switch(prev)),该由谁来运行?什么时候运行?
答:
11.假设进程A和进程B都是在用户空间运行的两个进程,它们不主动陷入内核态,调度器要做切换,那么需要做什么事情才能把进程A切换到进程B?
答:
12.接上题,进程B运行的时候,它从什么地方开始运行第一条指令?直接运行被暂停在用户空间的那条指令吗?为什么?
答:
13.在进程切换时需要刷新TLB,在ARM64处理器中如何提高TLB的性能?
答:
14.CFS在什么时候检查是否需要调度?
答:
15.在一个双核处理器里,CPU0和CPU1的就绪队列中都只有一个进程在运行,而且进程的优先级和权重相同,但是CPU0上的进程一直在占用CPU0,而CPU1上的进程是走走停停的,那么CPU0和CPU1的负载是否相同呢?
答:
16.请简述负载衰减的意义。
答:
17.请简述PELT算法中量化负载的计算方法。
答:
18.请简述什么是处理器的额定算力和当前实际算力。
答:
19.在PELT算法中,LOAD_AVG_MAX宏代表什么含义?
答:
20.在PELT算法中,如何计算第n个周期的衰减?
答:
21.在PELT算法中,如何计算一个进程的可运行状态的量化负载load_avg?
答:
22.在PELT算法中,如何计算一个调度队列的可运行状态的量化负载runnable_load_avg?
答:
23.在PELT算法中,如何计算一个进程的实际算力util_avg?
答:
24.一个4核处理器中的每个物理CPU拥有独立L1高速缓存且不支持超线程技术,4个物理CPU被分成两个簇cluster0和cluster1,每个簇包含两个物理CPU,簇中的CPU共享L2高速缓存。请画出该处理器在Linux内核里调度域和调度组的拓扑关系。
答:
25.假设CPU0和CPU1属于同一个调度域且它们都不是空闲的CPU,那么CPU1可以做负载均衡吗?
答:
26.如何查找出一个调度域里最繁忙的调度组?
答:
27.如果一个调度域负载不均衡,请问如何计算需要迁移的负载量呢?
答:
28.如果使用内核提供的唤醒进程接口函数(如wake_up_process())来唤醒一个进程,那么进程唤醒后应该在哪个CPU上运行呢?是调用wake_up_process()的那个CPU,还是之前运行该进程的那个CPU,或者是其他CPU呢?
答:
29.绿色节能调度器如何衡量一个进程的计算能力?
答:
30.当一个进程被唤醒时,绿色节能调度器如何选择在哪个CPU上运行?
答:
31.绿色节能调度器是否会做CPU间的负载均衡呢?
答:
32.目前在Linux 5.0内核中,CPU动态调频调压模
块CPUFreq和进程调度器之间是如何协同工作的?有什么优缺点?
答:
33.什么是能效模型?
答:
34.绿色节能调度器如何读取能效模型的数据?
答:
35.绿色节能调度器如何计算一个CPU的功耗?
答:
36.什么是硬实时和软实时?
答:
37.如何计算实时系统的延时?
答:
38.请列举产生中断延时的场景。
答:
39.请列举产生中断处理延时的场景。
答:
40.请列举产生调度延时的场景
答:
41.调度的时机是什么?操作系统在什么时候会发生调度?
答:
42.如何合理选择下一个进程?
答:
43.什么是进程上下文?进程上下文包含哪些内容?
答:
44.进程上下文保存到哪里?
答:
45.进程切换时需要切换哪些东西?
答: