扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
挖掘更多潜能
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 都提供了很多数据,包括负载均衡和进程迁移的统计信息。
展望
Linux 2.6 调度器从早先的 Linux 调度器已经跨越了一大步。它极大地改善了最大化利用 CPU 的能力,同时还为用户提供了很好的响应体验。抢占和对多处理器体系架构的更好支持使整个系统更接近于多桌面和实时系统都非常有用的操作系统。Linux 2.8 版本的内核现在谈论还为时尚早,但是从 2.6 版本的变化中,我们可以期望会有更多的好东西。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者