一种适用于numa架构内多节点间访存延时平衡的内存分配方法及延时感知-内存分配装置的制造方法_3

文档序号:9631441阅读:来源:国知局
· · ·,N_ GQ}所支持的硬件事件evG()= {ort,art,owt,awt,oppt,appt};然后通过ev^ = {ort,art,owt,awt,oppt,appt}得到GQ事件计数序列EVENTGQ= {evA-1evB-GQ, · · ·,evN-叫};
[0083] 步骤四:计算访存延时:
[0084] 步骤41,通过延时感知单元1中的延时获取模块12对EVENI^:{evA-'evB-,...,eVN-SQ}采用分类比值处理,分别得到读请求、写请求和远端访存请求的平均访存延 时;
[0085] 步骤42,对读请求、写请求和远端访存请求的平均访存延时求和,得到GQ单元对 应的内存节点访存延时cycle?^ {〇γΑΛεγΒΛ...,cyn-,;

[0086] 对于A-GQ单元的事件计数值evA-GQ={ortA-GQ,artA-'owtA-GQ,awtA-GQ,opptA- 3 'apptAJ:Q}采用 p得到读请求的平均访存延R 得到写请求 的平均访存延时
得到远端访存请求的平均访存延时为 了满足NUMA多核架构服务器中LLC(最后一级缓存)UMC(内存控制器)和QPI(快速片间 互联)的争用程度得以体现,采用
表征访存 延时。
[0087] 对于B-GQ单元的事件计数值evB-GQ={ortB-GQ,artB-叫,owtB-GQ,awtB-GQ,opptB-
'apptBJ:Q}采月得到读请求的平均访存延的 得到写请求 Uli
的平均访存延时
,得到远端访存请求的平均访存延时为 了满足NUMA多核架构服务器中LLC(最后一级缓存)UMC(内存控制器)和QPI(快速片间 互联)的争用程度得以体现,采用:&表征访 存延时。
[0088] 对于N-GQ单元的事件计数值evN-GQ={ortN-GQ,artN-⑶,owtN-GQ,awtN-GQ,opptN- ,apptNJ;Q}采月
,得到读请求的平均访存延时
到写请求 的平均访存延时
到远端访存请求的平均访存延时。为 了满足NUMA多核架构服务器中LLC(最后一级缓存)UMC(内存控制器)和QPI(快速片间 互联)的争用程度得以体现,采用
2表征访 存延时。
[0089] 步骤五:计算延时平衡状态:
[0090] 在平衡状态及延时最小生成模块21中采用快排序算法对访存延时序列CYCLE^ =CYBJ;?,. . .,cyN_g?}进行从小到大的排序,得到排序后的访存延时序列H_CYCLE?J = ?),CYB-GQ,…,CYN-GQ};
[0091] 选取所的首尾两个访存延时CT|e、:CTf^,并采用模糊边界方法 对〇7!|0与(77|1£>作比,得到平衡状态的属性3={1'1'116,?3186},同时将^ ;={1'1'116}更替 为S= {True,False};
[0092] 所述模糊边界中,若CTf-C>^ < 访%则平衡状态的属性记为多个 内存节点的访存延时平衡,符号为True。LeVel_diff表示同一级别的模糊边界阈值。
[0093] 所述模糊边界中,若erf-crp> &叱/_^'//',,则平衡状态的属性记为多个 内存节点的访存延时不平衡,符号为False。
[0094] 步骤六:计算最小访存延时的内存节点;
[0095] 在平衡状态及延时最小生成模块21中依据H_CYCLESQ ={CYΑΛCYB-SQ,. . .,CYN-,中的延时顺序,得到内存节点标识序列DSfl{NameA-'NameB-' . . .,NameN-,;然后, 选取DSf={Namea-'NameBJM),. . .,NameNJM)}中的第一个内存节点,记为;且将 #漏<0赋值给舰讲篇}
[0096] 步骤七:选择内存目标节点;
[0097] 步骤71,在内存节点选取模块22中依据延时平衡状态S= {True,False}来选取 内存目标节点;若S=True,贝lj直接选择本地内存节点作为内存分配的内存目标节点;若S =False,则选择作为内存分配的内存目标节点;
[0098] 步骤72,当内存目标节点选定后,判断内存容量;
[0099] ]?(:_;5;表示内存目标节点的空闲内存容量;
[0100] MCag表示进程需要的内存容量;
[0101] 若所选取的内存目标节点的空闲内存容量MCW小于进程需要的内存容量MCag, 即MCW<MCag,则从ICYCLE?^ {0ΥΑΛCYB-' . . .,CYN-,中剔除最小访存延时的内存节 点;返回步骤六;
[0102] %除_CYCLEG()={CYΑΛCYB-即,· · ·,CYN-G()}表示从ICYCLE*^{CYΑΛCYB-,...,CYNJ:Q}中剔除了最小访存延时的访存延时序列,简称为剔除后访存延时序列。
[0103]
不剔除后访存延时序列Η s__CYCLESQ={CYΑΛCYB-SQ,. . .,CYN-SQ}对应的内存节点标识序列,简称为剔除后内存节点 标识序列。
[0104] 再次依据H_JYCLEW={CYA-'CYB-' . . .,CYN-,中的延时顺序,得到剔除 后内存节点标识序列
;然后,选取
+的第一个内存f点,记为; 且将iVameJ0赋值给;
[0105] 若所选取的内存目标节点的空闲内存容量MC目标小于进程需要的内存容量MC进g, 即MC目标彡MCag,则将选取的内存目标节点输出给Linux操作系统的Buddy内存分配器。 [0106] 在本发明中,通过实时感知多个内存节点间的访存延时和延时平衡状态,来保证 多个应用并行运行时,公平地共享资源并且稳定应用性能。
[0107] 本发明的访存延时平衡内存分配方法,首先感知节点间的延时平衡状态,然后根 据平衡状态选出内存分配节点,最后调用分页函数实现物理内存分配。针对实时运行的系 统环境,基于底层硬件计数器采集的信息,通过共享变量传递给内存分配单元2。然后分配 方法根据平衡状态选出内存节点并调用底层分页函数分配物理内存。
[0108] 本发明设计的一种适用于NUMA架构内多节点间访存延时平衡的延时感知-内存 分配装置,所要解决的是如何在现有Linux操作系统中来感知多个内存节点间的访存延时 平衡状态的技术问题,通过在NUMA多核架构的GQ单元中扩展延时感知单元1,并由延时感 知单元1来采集多个GQ单元的访存请求(memoryrequests)的平均滞留时间(average stillcycles),并依据平均滞留时间来得到各个内存节点的访存延时的技术手段,从而在 保证访存延时平衡的前提下,稳定了应用性能(applicationperformance),降低了应用进 程间共享内存的不公平性的技术效果。
[0109] 实施例1
[0110] 实施例采用具有两个内存节点的NUMA架构,运用本发明的多节点间访存延时平 衡的内存分配方法及延时感知-内存分配装置进行延时感知平衡的内存分配测试。
[0111] 实验条件:含有两个IntelE5620处理器和两个内存节点的服务器,该服务器是 一台IBM的刀片服务器,采用RedHatCent0S6. 5操作系统,内核版本是linux-2. 6. 32。启 动服务器后,将超线程和预取配置为disable(译文,不启用)。
[0112] 测试过程(一):采用单一应用多个并行实例运行场景下,对非感知延时的内存分 配处理与本发明感知访存延时平衡状态的内存分配处理进行实验并加以对比。并行运行的 进程数为1~8,其中运行1个进程将作为多个进程并行执行时,性能降低的对比。表1数 据是stream(译文,流测试用例)的7个并行场景在"非延时感知"与"延时感知"下运行 的对比结果。
[0113] 表1并行进程数不同的各进程执行时间及进程间的不公平对比:
[0114]
[0115] 注:非延时感知是指未使用本发明访存延时平衡方法的内存分配方法。延时感知 是指使用本发明访存延时平衡的内存分配方法。并行场景下每个进程的性能降低比值=并 行执行时间/单独一个进程执行的时间。同一并行场景下,进程间的不公平=性能降低比 值的最大值/性能降低比值的最小值。
[0116] 如图3A、图3B、图3C及表1中所示,在并行进程数低于5的并行场景中,在非延时 感知分配下运行的进程性能降低比值和不公平是不稳定的,在并行进程数高于5以后,每 个进程的性能降低比值明显,且进程间的不公平也很明显。并行进程数低于5的并行场景 下运行应用时,系统内的多种资源利用低于50%,并且非延时感知在分配内存时,不作延时 平衡感知,导致应用运行时性能不稳定,时好时坏。在延时感知分配内存时,每个并行场景 中的各进程性能降低比值维持在单个进程执行时间的1. 2倍,并且进程间的不公平降低至 1. 05以下。因为延时感知分配方法,在分配时会首先考虑当前内存节点间的延时平衡,因此 各并行场景下,应用的性能稳定,且进程间的不公平减小。
[0117]测试过程(二):采用多应用并行运行场景下,对本发明感知访存延时平衡状态的 内存分配处理和未感知延时的内存分配处理进行实验并加以对比。针对不同的应用组合进 行测试,并且进行实验数据对比。并行运行的进程数为1~8,其中运行1个进程将作为多 个进程并行执行时,性能降低的对比。表1数据是stream测试用例的7个并行场景在两种 方法下运行的对比结果。
[0118] 在多应用的并行场景中,延时感知分配方法也能将每个进程的性能降低稳定在1.2,不公平稳定在1. 1以下。下面以SPEC CPU 2006中提出的mile(量子力学测试用例)、 leslie3d(流体力学测试用例)和GemsFDTD(计算电磁学测试用例)和stream(流测试用 例)四个应用并行运行的实验作对比展示。其中并行进程数为4,表示每个应用运行1个进 程,共4个;进程数为8,表示每个应用运行2个进程,共8个。表2是四个应用的2个并行 场景在两种策略下运行的实验结果对比。
[0119] 表2混合应用场景下各进程的性能下降和进程间的不公平
[0120]
[0121] 注:各进程的性能下降=某个应用的进程并行执行时间/仅该应用单个进程执行 的时间。
[0122] 如表2所示,在多应用并行执行场景下,延时感知处理下的每个应用的进程的性 能降低比值都维持在1. 2以下,并且进程间不公平在1. 10以下。在多应用并行运行时,由 于不同应用的访存特征不一样,各应用的运行时
当前第3页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1