Linux kernel源码阅读笔记2-2.6版本调度器sched.c功能
来自:http://www.ibm.com/developerworks/cn/linux/l-scheduler/
2.6 版本调度器的源代码都很好地封装到了 /usr/src/linux/kernel/sched.c 文件中。我们在表 1 中对在这个文件中可以找到的一些有用的函数进行了总结。
函数名 | 函数说明 |
---|---|
schedule |
调度器主函数。调度优先级最高的任务执行。 |
load_balance |
检查 CPU,查看是否存在不均衡的情况,如果不均衡,就试图迁移任务。 |
effective_prio |
返回任务的有效优先级(基于静态策略,但是可以包含任何奖励和惩罚)。 |
recalc_task_prio |
根据任务的空闲时间确定对任务的奖励或惩罚。 |
source_load |
适当地计算源 CPU(任务从中迁移出的 CPU)的负载。 |
target_load |
公平地计算目标 CPU(任务可能迁移到的 CPU)的负载。 |
migration_thread |
在 CPU 之间迁移任务的高优先级的系统线程。 |
运行队列的结构也可以在 /usr/src/linux/kernel/sched.c 文件中找到。2.6 版本的调度器还可以提供一些统计信息(如果启用了CONFIG_SCHEDSTATS
)。这些统计信息可以从 /proc 文件系统中的 /proc/schedstat 看到,它为系统中的每个 CPU 都提供了很多数据,包括负载均衡和进程迁移的统计信息。