一种NUMA架构下平衡多线程间访存延迟的调度系统及方法技术方案

技术编号:13369025 阅读:67 留言:0更新日期:2016-07-19 15:30
本发明专利技术公开了一种NUMA架构下平衡多线程间访存延迟的调度系统及方法,所述系统包括检测模块、采样模块、分析模块、判断模块和调度模块,通过采样保存多线程程序运行过程中每个线程的访存信息,预测分析该多线程程序中各线程的访存延迟是否不平衡,根据分析结果进行合理的调度,对远端访存的线程访问变量进行迁移调度至线程所在节点或使用交错存放将其平均分配到各节点上,从而保证各线程的访存延迟基本相等。本发明专利技术通过平衡多线程间访存延迟的方式,优化多线程程序在NUMA架构下的运行性能,本发明专利技术通过一种细粒度,有针对性的方式进行实时调度,使多线程程序取得并行区域的性能优化。

【技术实现步骤摘要】

本专利技术属于计算机体系结构下的多线程性能优化领域,更具体的,涉及一种NUMA架构下平衡多线程间访存延迟的调度系统及方法
技术介绍
非一致访存(NUMA)架构是目前流行的商用服务器架构之一,它采用了分布式存储器模式,且其中所有节点的处理器都可以访问全部的物理内存,易于管理,可扩充性好,因此得到了广泛的应用。在NUMA架构中,每个CPU访问的内存可以分为两种:与CPU在同一个节点的内存称为本地内存,访问延迟非常低;与CPU在不同节点上的内存叫做远端内存,对于远端内存的访问,CPU需要通过节点互联的方式进行,所以其访问延迟要比本地内存的访问延迟长。这种访存延迟的不一致性是NUMA架构的最主要特点,但它却给程序的调度和运行带来了困难,如果没有得到合理的线程以及数据分配,那么很有可能导致该程序中所有的访存操作都成为远端访存,从而经历较大的访存延迟,程序运行时间大大延长,使程序的性能大打折扣。当然,这些由于远端访存造成的延迟可以通过系统仔细地将程序的线程和它所用的数据协同调度进一步减少或消除。针对程序在NUMA架构下运行的特殊性,目前已经提出了一些NUMA感知的调度算法。大部分NUMA感知的调度算法仅是针对单个线程,或者针对多个线程时仅单纯地将各个线程独立开来考虑,并没有考虑到多线程并行时的同步问题。对于运行过程中存在线程同步操作的多线程程序,在NUMA架构下运行时需要考虑各个线程的运行速度问题,如果在需要达到同步的线程中存在一些线程,由于执行的远端访存较多,导致运行速度慢,那么该线程成为了拖累程序运行速度的关键线程,这个时候为了减少其他线程远端访存所做的工作,其对于最终程序所表现出来的整体性能并不能有很好的提高。现有的针对NUMA架构下程序运行性能的优化工具中,缺乏针对多线程之间访存延迟均衡这一问题的优化方式。相应地,本领域亟需寻找一种适用于NUMA架构下平衡多线程访存延迟的方法。
技术实现思路
针对现有技术的以上缺陷或不足,本专利技术提出一种NUMA架构下平衡多线程间访存延迟的调度系统及方法。利用本专利技术中的系统及方法,相应能够有效解决由于NUMA架构下访存行为的非一致性导致的多线程程序各线程间访存延迟的不一致问题,显著提高了NUMA架构下分析调度的实时性,大大优化了NUMA架构下程序运行性能。为实现上述目的,本专利技术一种NUMA架构下平衡多线程间访存延迟的调度系统,其特征在于,所述系统包括检测模块、采样模块、分析模块、判断模块和调度模块,其中,检测模块,用于探测程序是否进入多线程并行执行区域,还用于在探测程序进入多线程并行执行区域后,启动采样模块;采样模块,用于对多线程程序运行过程中每个线程的访存行为进行采样,并将采样过程中获取的访存信息保存;分析模块,一方面用于根据所述采样模块获取的访存信息,定期对所述多线程程序中各线程的访存延迟不平衡度进行评估,还用于针对发生不平衡现象的多线程程序进行访存行为分析,此外,所述分析模块还用于根据所述采样模块获取的访存信息进行访存规律分析;判断模块,用于根据所述访存延迟不平衡度判断是否发生多线程间访存延迟不平衡现象,同时,还用于在访存延迟不平衡现象发生时进一步判断线程访问变量是否仅由一个线程访问、线程访问变量与访问该变量的线程是否处于同一个节点及线程访问变量大小是否小于第二阈值Size,此外,所述判断模块,还用于判断程序多线程并行执行的区域是否结束;调度模块,用于根据所述分析模块的访存行为分析和访问规律分析,及判断模块的判断结果对远端访存的线程访问变量进行迁移调度至线程所在节点或使用交错存放将其平均分配到各节点上。作为进一步优选的,所述访存信息包括发起访存行为的线程ID,访存行为的目的地址,完成访存行为所耗费的时钟周期数和访存行为的类型。作为进一步优选的,所述访存延迟不平衡度具体为:ξT=|DT-Davg|/Davg其中,ξT为线程T的访存延迟不平衡度,DT为线程T的平均访存延迟,Davg为所有线程的平均访存延迟。作为进一步优选的,所述访存行为分析具体包括:根据所述采样模块获取的访存信息,估计每个线程访问变量的线程平均访存延迟,并依次将线程平均访存延迟最大的线程访问变量交由判断模块进行处理。作为进一步优选的,所述访问规律分析具体为:观察多线程程序中每个线程访问变量中是否没有被多个线程共同访问的线程访问变量子块。作为进一步优选的,所述采样模块还用于保存采样过程中为线程访问数据分配的内存大小及分配的内存地址。按照本专利技术的另一个方面,提出了一种基于上述系统的NUMA架构下平衡多线程间访存延迟调度系统的调度方法,其特征在于,包括以下步骤:(1)检测模块检测程序是否进入多线程并行执行区域,一旦发现程序处于多线程并行执行区域,立即启动采样模块;(2)采样模块持续对程序的多线程访存行为进行采样,并将采样获取的访存信息根据线程ID进行分类并保存,根据访存行为的时间顺序为每个线程建立一个访存事件流,并通过分析模块不断更新计算每个线程的平均访存延迟;(3)分析模块定期对各线程的访存延迟不平衡度进行评估;(4)通过判断模块判断各线程的访存延迟不平衡度是否大于第一阈值Threshhold;若是,则跳转至步骤(5),否则,继续执行步骤(3);(5)分析模块对多线程程序进行访存行为分析,根据估计的每个线程访问变量的线程平均访存延迟,选取线程平均访存延迟最大的线程访问变量,并将该线程访问变量交由判断模块进行处理;(6)判断模块判断所述线程访问变量是否仅由一个线程访问,若是,则跳转至步骤(7),否则跳转至步骤(8)。(7)判断模块进一步判断所述线程访问变量与访问该变量的线程是否处于同一个节点,若是,则返回步骤(5)分析模块依次选取下一个访存延迟最大的线程访问变量进行访存行为分析,否则,调度模块将该线程访问变量迁移至访问该变量的线程所在节点;(8)判断模块进一步判断所述线程访问变量大小是否小于第二阈值Size,若是,则转入步骤(9),否则转入步骤(10);(9)将该线程访问变量复制分发到NUMA架构下的各个节点;(10)分析模块根据所述采样模块获取的访存信息对多线程程序进行访问规律分析,若所述线程访问变量中没有被多个线程共同访问的线程访问变量子块,则转入步骤(10-1),否则转入步骤(10-2);(10-1)将各线程访问的线程访问变量子块分别存放到本文档来自技高网
...

【技术保护点】
一种NUMA架构下平衡多线程间访存延迟的调度系统,其特征在于,所述系统包括检测模块、采样模块、分析模块、判断模块和调度模块,其中,检测模块,用于探测程序是否进入多线程并行执行区域,还用于在探测程序进入多线程并行执行区域后,启动采样模块;采样模块,用于对多线程程序运行过程中每个线程的访存行为进行采样,并将采样过程中获取的访存信息保存;分析模块,一方面用于根据所述采样模块获取的访存信息,定期对所述多线程程序中各线程的访存延迟不平衡度进行评估,还用于针对发生不平衡现象的多线程程序进行访存行为分析,此外,所述分析模块还用于根据所述采样模块获取的访存信息进行访存规律分析;判断模块,用于根据所述访存延迟不平衡度判断是否发生多线程间访存延迟不平衡现象,同时,还用于在访存延迟不平衡现象发生时进一步判断线程访问变量是否仅由一个线程访问、线程访问变量与访问该变量的线程是否处于同一个节点及线程访问变量大小是否小于第二阈值Size,此外,所述判断模块,还用于判断程序多线程并行执行的区域是否结束;调度模块,用于根据所述分析模块的访存行为分析和访问规律分析,及判断模块的判断结果对远端访存的线程访问变量进行迁移调度至线程所在节点或使用交错存放将其平均分配到各节点上。...

【技术特征摘要】
1.一种NUMA架构下平衡多线程间访存延迟的调度系统,其特征在
于,所述系统包括检测模块、采样模块、分析模块、判断模块和调度模块,
其中,
检测模块,用于探测程序是否进入多线程并行执行区域,还用于在探
测程序进入多线程并行执行区域后,启动采样模块;
采样模块,用于对多线程程序运行过程中每个线程的访存行为进行采
样,并将采样过程中获取的访存信息保存;
分析模块,一方面用于根据所述采样模块获取的访存信息,定期对所
述多线程程序中各线程的访存延迟不平衡度进行评估,还用于针对发生不
平衡现象的多线程程序进行访存行为分析,此外,所述分析模块还用于根
据所述采样模块获取的访存信息进行访存规律分析;
判断模块,用于根据所述访存延迟不平衡度判断是否发生多线程间访
存延迟不平衡现象,同时,还用于在访存延迟不平衡现象发生时进一步判
断线程访问变量是否仅由一个线程访问、线程访问变量与访问该变量的线
程是否处于同一个节点及线程访问变量大小是否小于第二阈值Size,此外,
所述判断模块,还用于判断程序多线程并行执行的区域是否结束;
调度模块,用于根据所述分析模块的访存行为分析和访问规律分析,
及判断模块的判断结果对远端访存的线程访问变量进行迁移调度至线程所
在节点或使用交错存放将其平均分配到各节点上。
2.根据权利要求1所述的系统,其特征在于,所述访存信息包括发起
访存行为的线程ID,访存行为的目的地址,完成访存行为所耗费的时钟周
期数和访存行为的类型。
3.根据权利要求1或2所述的系统,其特征在于,所述访存延迟不平
衡度具体为:
ξT=|DT-Davg|/Davg其中,ξT为线程T的访存延迟不平衡度,DT为线程T的平均访存延迟,
Davg为所有线程的平均访存延迟。
4.根据权利要求1或2所述的系统,其特征在于,所述访存行为分析
具体包括:
根据所述采样模块获取的访存信息,估计每个线程访问变量的线程平
均访存延迟,并依次将线程平均访存延迟最大的线程访问变量交由判断模
块进行处理。
5.根据权利要求1或2所述的系统,其特征在于,所述访问规律分析
具体为:观察多线程程序中每个线程访问变量中是否没有被多个线程共同
访问的线程访问变量子块。
6.根据权利要求1或2所述的系统,其特征在于,所述采样模块还用
于保存采样过程中为线程访问数据分配的内存大小及分配的内存地址。
7.一种基于权利要求1-6任一项的NUMA架构下平衡多线程间访存延
迟调度系统的调度方法,其特征在于,包括以下步骤:
(1)检测模块检测程序是否进入多线程并行执行区域,...

【专利技术属性】
技术研发人员:金海廖小飞朱亮曾丹
申请(专利权)人:华中科技大学
类型:发明
国别省市:湖北;42

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

1