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

文档序号:9631441阅读:628来源:国知局
一种适用于numa架构内多节点间访存延时平衡的内存分配方法及延时感知-内存分配装置的制造方法
【技术领域】
[0001] 本发明涉及一种对NUMA架构服务器的内存分配,更特别地说,是指一种适用于 Linux操作系统的NUMA架构服务器的访存延时平衡的内存分配方法。
【背景技术】
[0002] 随着多核架构的普及和发展,NUMA(NonUniformMemoryAccessArchitecture, 非统一内存访问架构)多核架构凭借其本地访存低延时的优势,被各大数据中心以及科学 计算集群广泛采用。但是NUMA复杂的结构导致操作系统管理内存更加复杂。虽然Linux 操作系统可以充分利用NUMA多核架构的本地访存低延时的特点,但是多个内存节点间的 访存延时平衡问题还没有解决。如何有效地管理NUMA多核架构下内存资源的使用已经是 Linux操作系统开发的关键所在。
[0003]参考"Intelif.64andIA-32ArchitecturesOptimizationReferenceManual", 序号248966-030, 2014年9月。在此手册的图B-5和图B-6中公开了NUMA多核架构中包 含GQ(GlobalQueue,全局队列)单元的示意图。GQ单元用于缓存Core单元中未命中两级 缓存(L1、L2)的访存请求(memoryrequests)。
[0004] 访存延时(memoryaccesslatency)是多核架构下影响应用性能(application performance)的重要因素,在NUMA多核架构下尤为突出。NUMA多核架构缓解了多核对同 一个内存控制器(MC)的争用,但是多个内存节点之间的访存延时不平衡导致运行的多 个应用进程(process)之间共享内存资源的不公平性,进而增大进程应用性能(process performance)的差异,从而导致整体应用性能(applicationperformance)的波动。 Linux操作系统的内存分配方法在分配内存时只考虑内存节点可分配的内存容量(memory capacity),这样会造成内存节点间的访存延时(memoryaccesslatency)的不平衡。因 此,有效地保持多个内存节点的访存延时(memoryaccesslatency)平衡是非常重要的。 在支持NUMA多核架构的Linux操作系统的内存分配方法,需要直接获取访存延时(memory accesslatency)是比较困难的,因此需要一种感知访存延时的内存分配方法是解决问题 的关键。

【发明内容】

[0005] 本发明的目的之一是设计了一种适用于NUMA架构内多节点间访存延时平衡的延 时感知-内存分配装置,该装置包括有延时感知单元(1)和内存分配单元(2)。所述延时感 知单元(1)由事件监控模块(11)和延时获取模块(12)组成。所述内存分配单元(2)由平 衡状及延时最小生成模块(21)和内存节点选取模块(22)组成。所述延时感知单元(1)内 嵌在NUMA多核架构的GQ单元。所述内存分配单元(2)内嵌在Linux操作系统中。Linux 操作系统运行于NUMA多核架构中。
[0006] 本发明的目的另一是提出了一种适用于NUMA架构内多节点间访存延时平衡的内 存分配方法,该方法是针对含多个内存节点的NUMA多核架构服务器,处于不同访存延时平 衡状态时进行的内存分配的处理。访存延时是借助GQ单元中访存请求的平均滞留时间得 到访存延时。本发明方法通过延时感知单元(1)周期性地感知内存节点间的访存延时,使 得内存分配单元(2)获取各个内存节点的访存延时是否平衡,并根据平衡状态选择内存分 配节点(目标内存节点),最后输出给Linux操作系统的Buddy内存分配器,实现物理内存 的分配。本发明方法中的延时感知周期(latencyawarenessperiod)能够根据平衡状态 的变化频率做出适应性地调整,并且将延时感知单元(1)设置为系统自启动或者手动启动 两种。本发明方法针对NUMA多核架构服务器,在保证访存延时平衡的前提下,稳定了应用 性能(applicationperformance),降低了应用进程间共享内存的不公平性。
[0007] 本发明设计了一种适用于NUMA架构内多节点间访存延时平衡的延时感知-内存 分配装置,其特征在于:该装置包括有延时感知单元(1)和内存分配单元(2);所述延时感 知单元(1)由事件监控模块(11)和延时获取模块(12)组成;所述内存分配单元(2)由平 衡状及延时最小生成模块(21)和内存节点选取模块(22)组成;所述延时感知单元(1)内 嵌在NUMA多核架构的GQ单元;所述内存分配单元(2)内嵌在Linux操作系统中;Linux操 作系统运行于NUMA多核架构中;
[0008] 事件监控模块(11) 一方面用于采集GQ单元的硬件事件,并记录下所述硬件事件 对应的事件计数值,即GQ事件计数序列EVENI^i{evA-1evB-' . . .,evN-,;另一方面将事 件计数值输出给延时获取模块(12);
[0009] 延时获取模块(12) -方面用于接收GQ事件计数序列EVENTGQ ={evA-GQ,evB-,...,evN-GQ},另一方面对EVENTGQ= {θνΑΛθνΒΛ. . .,evN-,中的事件计数值进行比值处 理,得到访存延时序列CYCLES()= {CYAJM),CYBJ:Q,. . .,CYNJM)};最后将CYCLES()输出给平衡状及 延时最小生成模块(21);
[0010]对于A-GQ单元的事件计数值evA-GQ={ortA-GQ,artA-1owtA-GQ,awtA-GQ,opptA- 'apptAJ:Q}采用
-,得到读请求的平均访存延时
辱到写请求
的平均访存延时 到远端访存请求的平均访存延时η采 C}'ClL ;>pt , 月
2表征访存延时;
[0011]对于B-GQ单元的事件计数值evB-GQ={ortB-GQ,artB-1owtB-GQ,awtB-GQ,opptB- 'apptBJ:Q}采用
,得到读请求的平均访存延时
-得到写请求 的平均访存延时
I到远端访存请求的平均访存延时采 用
表征访存延时;
[0012] 对于N-GQ单元的事件计数值evN-GQ={ortN-GQ,artN-1owtN-GQ,awtN-GQ,opptN- 〇rtN-GQ
,apptNJ:Q}采用~^,得到读请求的平均访存延时 得到写请求 artN-GQ < 的平均访存延时
#到远端访存请求的平均访存延时
,采 用
'表征访存延时;
[0013] 平衡状态及延时最小生成模块(21)第一方面接收访存延时序列0¥〇^()={0¥ ;'-,CYBJM),. . .,CYNJM)},第二方面采用快排序算法对访存延时序列0¥0^()={0¥ ;'-(:(),〇¥8-,...,CYNJ:Q}进行从小到大的排序,得到排序后的访存延时序列H_CYCLESQ={CYΑΛCYB- ,...,CYN-SQ};第三方面,选取所述H_CYCLESQ中的第一个访存延时CZ|e和最后一个访存 延时CTf^第四方面,采用模糊边界方法,对CTjf与crj0作比,得到平衡状态的属性3 ={True,False};并将S= {True,False}输出给内存节点选取模块(22);第五方面,依 据ICYCLE?^{CYΑΛCYB-'. ..,CYN-3中的延时顺序,得到内存节点标识序列DST?^ {NameA-1NameB-GQ,…,NameN-GQ};第六方面,选取DST0^ {NameA-GQ,NameB-1…,NameN-中 的第一个内存节点标识号,记;并将输出给内存节点选取模块(22); 所述的_;?02°对应的是按从小到大排序得到的ICYCLE?^{CYAJM),CYBJiQ,. . .,CYNJiQ}中 的首个;
[0014] 所述模糊边界中,若CKp-S ,则平衡状态的属性记为多个 内存节点的访存延时平衡,符号为True;LeVel_diff表示同一级别的模糊边界阈值;
[0015] 所述模糊边界中,若>LevWj/,,则平衡状态的属性记为多个 内存节点的访存延时不平衡,符号为False;
[0016] 内存节点选取模块(22)第一方面接收S= {True,False}和;第二方面 依据S= {True,False}来选取内存目标节点;若S=True,贝IJ直接选择本地内存节点作为 内存分配的内存目标节点;若S=False,则选择Abwdf对应的内存作为内存分配的内存 目标节点;第三方面,将选取的内存目标节点输出给Linux操作系统的Buddy内存分配器。
[0017] 本发明设计的延时感知-内存分配装置的优点在于:
[0018]①通过在Linux操作系统中扩展内存分配单元(2),使得已有的Linux操作系统能 够感知多个内存节点间的访存延时平衡状态。在已有的Linux操作系统中通过软件编程得 到内存分配单元(2),使Linux内核的改动很小,不会给内核造成很大的负担。
[0019]②通过在NUMA多核架构的GQ单元中扩展延时感知单元(1),并由延时感知单元 (1)来采集多个GQ单元的访存请求(memoryrequests)的平均滞留时间(averagestill eye1es),并依据平均滞留时间来得到各个内存节点的访存延时。
[0020]本发明提出的适用于NUMA多核架构内多节点间访存延时平衡的内存分配方法的 优点在于:
[0021] ①采用快排序算法对访存延时序列进行从小到大的排序,降低了排序对Linux操 作系统带来的开销。
[0022] ②采用模糊边界方法来计算平衡状态,保证了平衡状态的稳定性。
[0023] ③应用目标内存节点来进行内存分配,保证进程所分配到的内存页面在同一个内 存节点上,同时保证进程间共享内存的公平性。
【附图说明】
[0024] 图1是本发明延时感知-内存分配装置与NUMA多核架构服务器和Linux操作系 统的关系框图。
[0025] 图2是本发明多节点间访存延时平衡的内存分配方法及延时感知-内存分配装置 的结构图。
[0026] 图3A是stream在非延时感知分配下运行的各个进程的性能降低比值示意图。
[0027] 图3B是stream在访存延时平衡的分配下运行的各个进程的性能降低比值示意 图。
[0028] 图3C是stream在有无延时感知分配下运行的进程间不公平的对比示意图。
【具体实施方式】
[0029] 下面将结合附图和
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1