论文部分内容阅读
在复合了片上多核(CMP)、同时多线程(SMT)技术的SMP系统中,不合理的资源共享机制可能会造成并发多线程对公共资源的不可控争用,从而导致系统吞吐量与资源利用率的降低。因此,设计与实现侧重于优化系统资源使用的SMP调度机制一直是操作系统研究中的重要方向。本论文首先介绍了多处理器多核架构技术的演进与相应特点。接着,对相应架构下线程调度策略的研究进行了回顾与总结。随后,论文概述了Linux调度器的发展历程与相应版本调度器的特点,通过深入地分析Linux3.0时代仍然沿用的CFS调度器框架和基于调度域的负载均衡实现找到了Linux调度器的不足之处——执行负载均衡时只考虑的是均衡各CPU的工作负载,而没有考虑总线带宽使用的均衡操作恰恰会引起总线有效利用率的下降。举例来说,可能会出现过高带宽需求的进程被迁移后得到了充分执行从而耗尽了总线的可用带宽;也可能出现有合理带宽需求的进程始终无法迁出重载的CPU从而缺少执行机会,这些情况都会使总线带宽资源无法得到有效的利用。最后,论文提出了考虑总线带宽使用优化的SMP调度策略与基于当前Linux调度器的改进方法。改进的思路是通过获取线程运行时的性能计数来评估其在最近的采样时间窗口内总线带宽使用状况,以此为任务调度提供直接的决策依据。利用处理器内建的硬件性能计数器就可获取线程运行时有效执行指令数目、各层级Cache未命中数,从而计算出采样时间窗口内使用的平均总线带宽。由于是基于总线使用的历史情况做调控,采样周期与时间窗口值的确定就很关键。采样时间窗口宽度过小,就无法评估近期线程平均带宽使用情况;宽度过大则调度分配带宽的时机就不好,也许会错过可以提前避免争用高峰的调控时机。在具体实现时通过重复测试确定了时间窗口的合适取值。在对原SMP负载均衡算法实现做优化时,不仅考虑到CPU/Cache亲和性同时也基于进程总线带宽的使用状况来挑选迁移进程。针对采用了STREAM Benchmark的三组测试结果的分析表明改进方案在不影响原有算法CPU负载均衡效果的基础上优化了总线带宽的使用、提升了总线的有效利用率。