Linux调度器

2.6 版本调度器的源代码都很好地封装到了 /usr/src/linux/kernel/sched.c 文件中。我们在表 1 中对在这个文件中可以找到的一些有用的函数进行了总结。

表 1. Linux 2.6 调度器的功能
函数名函数说明
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 都提供了很多数据,包括负载均衡和进程迁移的统计信息。

更多信息可参考: http://www.ibm.com/developerworks/cn/linux/l-scheduler/index.html

原文地址:https://www.cnblogs.com/westwind/p/1914185.html