Linux系统超线程感知的调度算法研究

ZDNet软件频道 时间:2008-07-01 作者:李亮 吴庆波 | 赛迪网 我要评论()
本文关键词:命令行 Linux 技巧
随着计算机应用的日益普及,用户对计算机的处理能力的需求也在成指数级增长。为了满足用户的需求,处理器生产厂商也采用了诸如超流水,分支预测,超标量,缓存等技术提高处理器的性能。

1 引言

随着计算机应用的日益普及,用户对计算机的处理能力的需求也在成指数级增长。为了满足用户的需求,处理器生产厂商也采用了诸如超流水,分支预测,超标量,乱序执行,缓存等技术提高处理器的性能,但是这些技术的采用也增加了微处理器的复杂性,带来了诸如材料,功耗,光刻,电磁兼容性等一系列问题。因此处理器设计人员开始寻找新的途径来提高处理器的性能。Intel公司于2002年底推出了超线程技术,通过共享处理器的执行资源,提高CPU的利用率,让处理单元获得更高的吞吐量。

2 超线程技术背景

传统的处理器内部存在着多种并行操作方式。①ILP(Instruction Level Paramllelism,指令级并行):既同时执行几条指令,单CPU就能完成。但是传统的单CPU处理器只能同时执行一个线程,很难保证CPU资源得到100%的利用,性能提高只能通过提升时钟频率和改进架构。②TLP(Thread Level Paramllesim,线程级并行):可以同时执行多个线程,但是需要多处理器系统的支持,通过增加CPU的数量来提高性能。

超线程微处理器将SMT(Simultaneous Multi-Threading,同时多线程技术)引入Intel体系结构,支持超线程技术的操作系统将一个物理处理器视为两个逻辑处理器,并且为每个逻辑处理器分配一个线程运行。物理处理器在两个逻辑处理器之间分配高速缓存,执行单元,总线等执行资源,让暂时闲置的运算单元去执行其它的线程代码,从而最大限度的提升CPU资源的利用率。

Superscalar粗粒度多线程细粒度,细粒度多线程以及同时多线程的执行时空图的比较。不同颜色表示不同程序的指令,白色表示空闲,同一横行中的指令在同一时刻执行。我们可以看出的同时多线程的系统利用率最高,系统的吞吐量也最高。

Intel 超线程技术通过复制、划分、共享Intel的Netburst微架构的资源让一个物理CPU中具有两个逻辑CPU。(1)复制的资源:每个逻辑CPU都维持了一套完整的体系结构状态,包括通用寄存器,控制寄存器,高级可编程寄存器(APIC),以及一些机器状态寄存器,体系结构状态对程序或线程流进行跟踪,从软件的角度,一旦体系结构状态被复制了,就可以将一个物理CPU视为两个逻辑CPU。(2)划分的资源:包括重定序(re-order)缓冲,Load/Store缓冲,队列等。划分的资源在多任务模式总分给两个逻辑CPU使用,在单任务模式时合并起来给一个逻辑CPU使用。(3)共享的资源:包括cache,执行单元等,逻辑 CPU共享物理CPU的执行单元进行加,减,取数等操作。

在线程调度时,体系结构状态对程序或线程流进行跟踪,各项工作(包括加、乘、加载等)由执行资源(处理器上的单元)负责完成。每个逻辑处理器可以单独对中断做出响应。第一个逻辑处理器可以跟踪一个线程,同时第二个逻辑处理器跟踪另一个线程。例如,当一个逻辑处理器在执行浮点运算时,另一个逻辑处理器可以执行加法运算和加载操作。

对于拥有超线程技术的CPU可以同时执行处理两个线程,它可以将来自两个线程的指令同时发送到处理器内核执行,处理器内核采用乱序指令调度并发执行两个线程,以确保其执行单元在各时钟周期均处于运行状态。传统的双处理器系统,每个处理器有一套独立的体系结构状态和处理器执行资源。每个处理器上只能同时执行一个线程。支持超线程的双处理器系统,每个处理器有两套独立体系结构状态,可以独立的响应中断。

3 Linux超线程感知调度优化

Linux从2.4.17开始支持超线程技术,传统的Linux O(1)调度器不能区分物理CPU和逻辑CPU,因此不能充分利用超线程处理器的特性。Ingo Monlar编写了“HT-aware scheduler patch”,针对超线程技术对O(1)调度器进行了调度算法优化,首先优先安排线程在空闲的物理CPU的逻辑CPU上运行,避免资源竞争带来的性能下降,并且在线程调度时考虑到了在两个逻辑CPU之间进行线程迁移的开销远远小于物理CPU之间的迁移开销以及逻辑CPU共享cache等资源的特性。这些优化的相关算法被Linux的后期版本吸收,具体如下:


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134