Linux 051287161312 xlanchenustc edu cn Autumn 2009 nice

  • Slides: 48
Download presentation
Linux操作系统分析 中国科学技�大学�算机系 �香�( 0512-87161312) xlanchen@ustc. edu. cn Autumn 2009

Linux操作系统分析 中国科学技�大学�算机系 �香�( 0512-87161312) xlanchen@ustc. edu. cn Autumn 2009

与�度相关的系��用 nice getpriority/setpriority sched_getscheduler/sched_setscheduler sched_getparam/sched_setparam sched_yield sched_get_priority_min/sched_get_priority_max sched_rr_get_interval 2021/12/2411/23/09 Linux操作系统分析 8

与�度相关的系��用 nice getpriority/setpriority sched_getscheduler/sched_setscheduler sched_getparam/sched_setparam sched_yield sched_get_priority_min/sched_get_priority_max sched_rr_get_interval 2021/12/2411/23/09 Linux操作系统分析 8

例如 2021/12/2411/23/09 Linux操作系统分析 9

例如 2021/12/2411/23/09 Linux操作系统分析 9

又如 2021/12/2411/23/09 Linux操作系统分析 10

又如 2021/12/2411/23/09 Linux操作系统分析 10

2021/12/2411/23/09 Linux操作系统分析 11

2021/12/2411/23/09 Linux操作系统分析 11

2021/12/2411/23/09 Linux操作系统分析 12

2021/12/2411/23/09 Linux操作系统分析 12

Linux 2. 6. 26中的 �度策略: Policy,�度�型 include/linux/sched. h 在task_struct中,使用数据项policy来表达该进程采用的调度策略 2021/12/2411/23/09 Linux操作系统分析 15

Linux 2. 6. 26中的 �度策略: Policy,�度�型 include/linux/sched. h 在task_struct中,使用数据项policy来表达该进程采用的调度策略 2021/12/2411/23/09 Linux操作系统分析 15

�看 linux-2. 6. 26中各个policy的使用情况 2021/12/2411/23/09 Linux操作系统分析 16

�看 linux-2. 6. 26中各个policy的使用情况 2021/12/2411/23/09 Linux操作系统分析 16

kernel/sched. c 2021/12/2411/23/09 Linux操作系统分析 17

kernel/sched. c 2021/12/2411/23/09 Linux操作系统分析 17

�度�型 �� const struct sched_class,�度� rt_sched_class kernel/sched_idletask. c fair_sched_class kernel/sched_fair. c idle_sched_class kernel/sched_rt. c

�度�型 �� const struct sched_class,�度� rt_sched_class kernel/sched_idletask. c fair_sched_class kernel/sched_fair. c idle_sched_class kernel/sched_rt. c rt_sched_class 2021/12/2411/23/09 fair_sched_class Linux操作系统分析 idle_sched_class 18

�� 2. 6. 26的schedule函数 kernel/sched. c,参见函数schedule() �度函数的关� : �度算法的关� 入列 CFS根据vruntime的�入列,其关�在于 vruntime�的�算 RT根据�先�入列 kernel/sched_fair.

�� 2. 6. 26的schedule函数 kernel/sched. c,参见函数schedule() �度函数的关� : �度算法的关� 入列 CFS根据vruntime的�入列,其关�在于 vruntime�的�算 RT根据�先�入列 kernel/sched_fair. c,update_curr 2021/12/2411/23/09 Linux操作系统分析 19

Linux-2. 6. 26中每个CPU的就绪队列 2021/12/2411/23/09 Linux操作系统分析 20

Linux-2. 6. 26中每个CPU的就绪队列 2021/12/2411/23/09 Linux操作系统分析 20

Linux-2. 6. 26中进程的调度实体 include/linux/sched. h: task_struct 2021/12/2411/23/09 Linux操作系统分析 21

Linux-2. 6. 26中进程的调度实体 include/linux/sched. h: task_struct 2021/12/2411/23/09 Linux操作系统分析 21

include/linux/sched. h 2021/12/2411/23/09 Linux操作系统分析 22

include/linux/sched. h 2021/12/2411/23/09 Linux操作系统分析 22

2021/12/2411/23/09 Linux操作系统分析 23

2021/12/2411/23/09 Linux操作系统分析 23

2. 在__update_curr中, kernel/sched_fair. c 3. 在yield_task_fair中, 4. 等等 2021/12/2411/23/09 Linux操作系统分析 25

2. 在__update_curr中, kernel/sched_fair. c 3. 在yield_task_fair中, 4. 等等 2021/12/2411/23/09 Linux操作系统分析 25

考虑task_tick_fair 2021/12/2411/23/09 Linux操作系统分析 27

考虑task_tick_fair 2021/12/2411/23/09 Linux操作系统分析 27

关键内部函数update_curr,参见源代码 2021/12/2411/23/09 Linux操作系统分析 28

关键内部函数update_curr,参见源代码 2021/12/2411/23/09 Linux操作系统分析 28

include/linux/sched. h 2021/12/2411/23/09 Linux操作系统分析 29

include/linux/sched. h 2021/12/2411/23/09 Linux操作系统分析 29

考虑task_tick_rt 2021/12/2411/23/09 Linux操作系统分析 30

考虑task_tick_rt 2021/12/2411/23/09 Linux操作系统分析 30

Linux-2. 4. 18中的调度算法 2021/12/2411/23/09 Linux操作系统分析 33

Linux-2. 4. 18中的调度算法 2021/12/2411/23/09 Linux操作系统分析 33

�例:�程 0(INIT_TASK)的��片: HZ代表了1秒内的tick数 因此一个tick就是 1/100秒 即 10 ms 可以计算出 DEF_COUNTER=10个tick 即 100 ms (实际上约

�例:�程 0(INIT_TASK)的��片: HZ代表了1秒内的tick数 因此一个tick就是 1/100秒 即 10 ms 可以计算出 DEF_COUNTER=10个tick 即 100 ms (实际上约 105 ms) 2021/12/2411/23/09 Linux操作系统分析 MAX_COUNTER=20个tick 即 200 ms 42