一种感知微体系结构信息的操作系统线程调度方法技术方案

技术编号:6042341 阅读:224 留言:0更新日期:2012-04-11 18:40
本发明专利技术涉及一种感知微体系结构信息的操作系统线程调度方法。该方法包含两个层面上的调度策略:在结点内部,针对CMP结构特点,通过实时获取缓存失效的相关信息,使相互过度竞争共享缓存资源的线程在时间和空间维度上错开运行,使相互间能进行有效数据共享的线程得到同时或者相继运行;在结点间层面,抽样线程频繁访问的内存数据区,尽量将线程绑定到数据所在结点以减少对远程内存的访问,同时降低片间通信量。减少因对共享缓存争用较大的多个线程同时运行产生的访存延迟,提高了线程的运行速度和系统吞吐率。

Operating system thread scheduling method for perceiving micro architecture information

The invention relates to an operating system thread scheduling method for perceiving micro architecture information. The method includes two aspects: the internal node scheduling strategy in CMP, according to the structural characteristics, through access to relevant information cache invalidation in real time, make excessive competition in the shared cache resource thread running staggered in time and space dimensions, so that each other can effectively share the data obtained simultaneously or successively running thread level; in between the nodes, the memory data sampling thread access frequently, try to bind threads to data nodes in order to reduce remote memory access, and reduce the amount of communication between chips. Reducing the memory latency caused by running multiple threads at the same time for shared cache contention improves the running speed and system throughput of threads.

【技术实现步骤摘要】

本专利技术主要涉及操作系统中的线程调度设计领域,特别是针对共享Cache片上多 核处理器(CMP)结点内以及由多片组成的分布式共享存储结构系统结点间的线程调度设 计。特指。
技术介绍
当前的多核处理器技术在一定程度上缓解了处理器性能快速增长与存储器性能 增长缓慢之间的矛盾,但存储器的存储速度仍然是制约处理器性能提升的关键因素。现代 计算机系统通过硬件的方式实现了乱序执行、多指令发射、循环展开等功能,大大隐藏了处 理器访存延迟。在操作系统层面,也可以根据线程的阻塞特点来进行优先级的调整,但就整 体而言还缺乏解决这种矛盾的有效手段。造成系统延迟的主要因素有IO延迟、内存延迟和CPU延迟。在商业数据库应用中, 处理器近一半的执行时间花在了阻塞延迟上。在总的延迟中,存储访问延迟大约占到75%, Cache访问延迟约占存储访问延迟的31 %,内存延迟占69%,并且存储延迟主要是由最后 一级共享Cache失效所致。这一现象的出现不仅源于存储器速度的相对缓慢,也与当前商 业应用及科学计算领域普遍采用的系统体系结构有很大关系。由CMP结点组成的ccNUMA 处理器结构(下面有时也称为多片多核)中的每个结点有多个处理器核,每个核有自己独 立的Cache (有时还区分为指令和数据Cache),每个片上有一个较大容量且为片上的多个 核所共享的Cache (这个Cache有时也称为LLC,Last Level Cache)。内存储器通常采用 分布式结构,各CMP结点带有局部存储,这样,每个CMP中的线程访问本地结点的内存速度 较快,而访问远程结点的内存速度较慢,与访问本地结点内存的时间可以相差1到2个数量 级。最新的操作系统一般都支持多片组成的ccNUMA处理器结构,Linux操作系统将同 一进程的子进程优先分配到父进程所在结点、以减少进程对远程结点内存的访问。在CMP 结点内部,同时运行于各个核上的线程共享LLC,这些并行线程可能对共享Cache产生争 用,当某个线程将数据读入到LLC中后,马上被运行在另一核上的其他线程的数据所覆盖 (多数情况下使用LRU淘汰算法),接着前一线程又再次将数据读入,这种相互的干扰不仅 会导致单个进程的运行速度下降,也严重影响到系统的吞吐率。在结点间,虽然刚产生的线 程默认在本地结点上执行,但由于负载平衡或线程读取内存区的改变,使得某些线程频繁 访问远程内存,进一步加剧访存延迟,感知底层体系结构信息和针对ccNUMA的结点规模进 行可扩展性设计成为操作系统线程设计所面临的新挑战。当然,为提高单个进程运行速度的多线程处理技术和为获得更高吞吐量的事务处 理、Web应用等不尽相同,对事务处理应用而言,应当关注的底层体系结构主要表现在LLC 失效方面,而不是每个核的专有Cache。考虑到线程调度算法必须简单和高效的特点,在没 有硬件支持的情况下,往往难以进行Cache失效率以及访存地址分析处理。现代处理器一 般都提供了 PMU,它是一组可以统计处理器底层事件的计数器,虽然目前大多数处理器的计数器都是体系结构相关的,没有给用户提供一个统一的接口,但大多能提供如Cache失效率以及访存地址分析这些基本信息的统计,如何充分利用PMU实时感知底层的信息并为操 作系统进行进(线)程调度提供指导已受到学术界越来越多的关注。在本专利技术中,假定PMU为操作系统提供LLC失效率获取和线程数据地址抽样及事 件计数器功能,为调度器高效获取底层信息提供帮助。
技术实现思路
本专利技术要解决的问题就在于在以片上多处理器(CMP,Chip Multi Processor)为 结点组成的ccNUMA多处理器结构中,现有调度方法只是根据线程的优先级进行调度,而优 先级没有反映运行时系统内部的资源竞争和使用情况,无法对同时运行的线程是否存在严 重的资源冲突等情况进行感知,而一旦出现上述现象,将会严重影响到单个线程的执行速 度以及系统的整体吞吐量。另一方面,基于线程队列中线程多寡的负载均衡机制不能反映 出线程对内存区域的亲和特征,将与本地访存亲和度大的线程迁移到远程结点上会导致远 程内存访问增加,不能很好地适应ccNUMA结构的分布式内存结构。为解决上述问题,本专利技术提出的解决方案为一种感知微体系结构信息的操作系 统线程调度方法 MSTS (Micro-Architecture Sensitive Threads Scheduling),该方法能 很好地适应以片上多处理器(CMP,Chip Multi Processor)为结点组成的ccNUMA多处理器 结构,它包含两个层面上的调度策略。在结点内部,针对CMP结构特点,通过实时获取缓存 失效的相关信息,使相互过度竞争共享缓存资源的线程在时间和空间维度上错开运行,使 相互间能进行有效数据共享的线程得到同时或者相继运行。在具体实现方式上,采用修改 权值的方法达到与Linux操作系统现有完全公平调度算法(CFS)的有效结合,使之成为实 际可用的调度方法。在结点间层面,抽样线程频繁访问的内存数据区,尽量将线程绑定到数 据所在结点以减少对远程内存的访问,同时降低片间通信量,该方法在调度的负载均衡和 任务迁移过程中使用。上述调度方法充分利用硬件性能监测单元提供的底层信息,使操作 系统调度器在较小的微信息感知开销下,在两个层面上对线程调度方法进行优化,在保持 相对公平的情况下提高系统吞吐率。现代操作系统通常将用户进程(线程)根据其响应时间的要求不同划分为实时、 交互式以及普通三种类型,实时线程的优先级比交互式线程高,交互式线程的优先级比普 通线程高,现有的调度算法正是基于优先级来进行线程调度的,对于实时线程,操作系统实 现的实时调度是软实时调度,一般采用先来先服及轮循法,这种进程对实时性有较高的要 求,通常不能随意改变其优先级,首次运行后也不能随意进行迁移操作。本专利技术对这一类线 程的调度不作优化。对后两类而言,其处理方法相同。比如在Linux早期版本的调度器中, 通过动态获取进程运行特征进行优先级修改,这个过程非常复杂,并且使用了许多经验公 式,在后来的公平调度算法中,统一对待,根据线程权值的不同分配不同大小的时间,并通 过特殊的计算方法使得他们运行相同的虚拟时间。本专利技术适用上述线程类型。如果一个片上有N个核,LLC的大小为T。该N个核可以有单独的运行队列,因而 可以在空间上同时运行N个线程,如图3所示,因为共享内存地址空间的原因,这N个线程 可以访问相同的地址空间,也可以访问完全不同的地址空间,在不考虑不同地址空间映射 到同一 Cahce行(也称为Cache Line)的情况下,如果这些地址空间之和(共享时只计算一次)小于LLC的大小,则各线程可以使用自己在LLC上的空间。如果访问的数据范围之 和大于T字节,或虽然总的访存范围不超过T,但多个线程访存区域频繁发生因组相联(现 在的LLC多为N路组相联结构)映射到相同缓存线而产生交叉覆盖,如图4所示,则表明 各线程之间产生了缓存争用(以下有时也将因组相联映射冲突而导致多个线程产生缓存 交叉覆盖视为缓存空间不够)。另一方面,对同一核上的多个线程而言,由于并发执行的原 因,也会产生同样的LLC访问冲突情况,这是因为一个线程的运行,会将它的工作集调入到 C本文档来自技高网
...

【技术保护点】
一种感知微体系结构信息的操作系统线程调度方法,其特征在于,该方法包含两个层面上的调度策略:在结点内部,针对CMP结构特点,通过实时获取缓存失效的相关信息,使相互过度竞争共享缓存资源的线程在时间和空间维度上错开运行,使相互间能进行有效数据共享的线程得到同时或者相继运行;在结点间层面,抽样线程频繁访问的内存数据区,尽量将线程绑定到数据所在结点以减少对远程内存的访问,同时降低片间通信量。

【技术特征摘要】

【专利技术属性】
技术研发人员:阳国贵余飞姜波
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:43

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1