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

文档序号:9631441阅读:来源:国知局
实施例对本发明做进一步的详细说明。
[0030] 在NUMA多核架构服务器中存在有N个GQ单元,为了方便说明,第一个GQ单元记 为A-GQ,第二个GQ单元记为B-GQ,……,最后一个GQ单元记为N-GQ,采用集合形式表达为 NUMA?^ {A_GQ,B_GQ,. . .,N_GQ},NUMA称为GQ序列。每个GQ单元中至少支持一个硬件 事件计数器,多个硬件事件计数器也可以同时存在于一个GQ单元中。
[0031] GQ单元对应的内存节点查询表:
[0032] 由于NUMA多核架构服务器中存在有N个GQ单元,每个GQ单元对应一块内存,则 N个GQ单元对应的所有内存记为#= {memA-W, . . .,。为了实现对内存的识 另IJ,对属于NUMA多核架构服务器中的内存节点设置了数字标识号,S卩:内存节点标识号查 询表DST(digitalsignaturetable):
[0033]
[0034] 内存节点标识序列记为DST*^{NameAJ:Q,Name1^,. . .,NameNJMi}。在本发明中,对 内存节点标识号采用8位二进制记数。如NameA-S()= [00000000]、NameB-[00000001]、 NameN-GQ= [11111111] 〇
[0035] Μ0? ={memA-1memB-GQ, · · ·,memN-GQ}中memA-w表示A-GQ单元对应的内存,memB-示B-GQ单元对应的内存,memNJM)表示N-GQ单元对应的内存。
[0036] GQ单元支持的硬件事件表:
[0037] NUMA多核架构服务器中的GQ单元对硬件性能事件包括有两类,即访存请求的占 用周期事件和访存请求的分配事件;具体事件如下表:
[0038]
[0039] GQ单元的硬件事件记为ev0?: {ort,art,owt,awt,oppt,appt} 〇
[0040] 参见图1、图2所示,本发明设计的一种适用于NUMA多核架构内多节点间访存延时 平衡的延时感知-内存分配装置,该装置包括有延时感知单元1和内存分配单元2 ;
[0041] 所述延时感知单元1由事件监控模块11和延时获取模块12组成。
[0042] 所述内存分配单元2由平衡状及延时最小生成模块21和内存节点选取模块22组 成。
[0043] 所述延时感知单元1内嵌在NUMA多核架构的GQ单元。
[0044] 所述内存分配单元2内嵌在Linux操作系统中。
[0045] Linux操作系统运行于NUMA多核架构中。
[0046] 事件监控模块11:
[0047] 在本发明中,在一个采样周期里,事件监控模块11 一方面用于采集GQ单元的硬件 事件,并记录下所述硬件事件对应的事件计数值,即GQ事件计数序列EVENI^i{evA-'evB-,...,evNJ:Q};另一方面将事件计数值输出给延时获取模块12 ;
[0048] 针对A-GQ单元的硬件事件所对应的事件计数值,记为evA-'所述evA-G(i={ortA-artA-GQ,owtA-GQ,awt^,oppt^,apptA-GQ} 〇
[0049] 针对B-GQ单元的硬件事件所对应的事件计数值,记为evB-'所述evB-G(i= {ortB-artB-GQ,owtB-GQ,awt8^,oppt8^,apptB-GQ} 〇
[0050] 针对N-GQ单元的硬件事件所对应的事件计数值,记为evN-'所述evN-G(i= {ortN-artN-GQ,owtN-GQ,awt^,oppt^,apptN-GQ} 〇
[0051 ] 对于GQ序列NUMAWz{A_GQ,B_GQ,. . .,N_GQ}的硬件事件所对应的事件计数值, 记为EVENTG()={evΑΛθνΒΛ…,evN-G()},EVENTG()称为GQ事件计数序列。
[0052] 在本发明中,事件监控模块11是对NUMA多核架构服务器中存在的N个GQ单元进 程监控,同时也对每个GQ单元对应的内存以及内存节点的访存延时进行监控。
[0053] 延时获取模块12 :
[0054] 在本发明中,延时获取模块12 -方面用于接收GQ事件计数序列EVENI^i{evA-,evB-GQ,…,evN-GQ},另一方面对EVENTGQ={evA-GQ,θνΒΛ…,evN-,中的事件计数值进行 比值处理,得到访存延时序列CYCLES()= {CYAJM),CYBJ:Q,. . .,CYNJM)};最后将CYCLES()输出给平 衡状及延时最小生成模块21 ;
[0055] 对于A-GQ单元的事件计数值evA-GQ={ortA-GQ,artA-叫,owtA-GQ,awtA-GQ,opptA-
^A_GQ 'apptAJ:Q}采用〇 ,得到读请求的平均访存延时 得到写请求 art1JjQ
的平均访存延RI到远端访存请求的平均访存延go为 C)LlCΙψ?Q- 了满足NUMA多核架构服务器中LLC(最后一级缓存)UMC(内存控制器)和QPI(快速片间 互联)的争用程度得以体现,采用= 〇'c/<⑷⑷表征访 存延时。
[0056] 对于B-GQ单元的事件计数值evB-GQ={ortB-GQ,artB-叫,owtB-GQ,awtB-GQ,opptB- 'apptBJ:Q}采用
得到读请求的平均访存延时
得到写请求
的平均访存延时 :到远端访存请求的平均访存延时€ 为 .....^ppt° 了满足NUMA多核架构服务器中LLC(最后一级缓存)UMC(内存控制器)和QPI(快速片间 互联)的争用程度得以体现,采用
表征访存 延时。
[0057] 对于N-GQ单元的事件计数值evN-GQ={ortN-GQ,artN-1owtN-GQ,awtN-GQ,opptN-

7: 'apptNJMJ}采用 箱到读请求的平均访存延_ I到写请求
的平均访存延时 #到远端访存请求的平均访存延时为 :( CVCUρ:..Ο 了满足NUMA多核架构服务器中LLC(最后一级缓存)UMC(内存控制器)和QPI(快速片间 互联)的争用程度得以体现,采用
表征访 存延时。
[0058] 平衡状态及延时最小生成模块21 :
[0059] 在本发明中,平衡状态及延时最小生成模块21第一方面接收访存延时序列 cyclegq={cya-gq,CYb-gq, ...,CY^},
[0060] 第二方面采用快排序算法对访存延时序列CYCLE^z{CYAJ:Q,CYBJ:Q,. . .,CYNJ:Q}进 行从小到大的排序,得到排序后的访存延时序列h_cyclesq= {CYA-SQ,0ΥΒΛ...,CYN-,;
[0061] 第三方面,选取所述ILCYCLEW*的首尾两个访存延时,记为CTf(位于Η_ CYCLE^中的第一个访存延时)、CFj0 (位于iLCYCLEW*的最后一个访存延时);
[0062] 第四方面,采用模糊边界方法,对CT|0与作比,得到平衡状态的属性S= {True,False};并将S= {True,False}输出给内存节点选取模块22。
[0063] 第五方面,依据ICYCLE?^{CYAJM),CYBJ:Q,. . .,CYNJ:Q}中的延时顺序,得到内存节 点标识序列DSTGQ={NameA-GQ,NameB-1· ··,NameN-GQ};
[0064] 第六方面,选取DSI^z{NameAJiQ,NameBJMi,. . .,NameNJMi}中的第一个内存节点标识 号,记为并将偷騰f输出给内存节点选取模块22。所述的施服对应的是 按从小到大排序得到的11_0¥〇^= {0ΥΑΛCYBJM),. . .,CYN_SQ}中的首个,因此它的访存延时 也是最小的。
[0065] 所述模糊边界中,若cr/f-cy^s访%则平衡状态的属性记为多个 内存节点的访存延时平衡,符号为True。LeVel_diff表示同一级别的模糊边界阈值。
[0066] 所述模糊边界中,若CTp-CTf> ,则平衡状态的属性记为多个 内存节点的访存延时不平衡,符号为False。
[0067] 在本发明中,能够通过所述DSI^能够得到GQ单元对应的内存节点标识号。
[0068] 内存节点选取模块22:
[0069] 在本发明中,内存节点选取模块22第一方面接收S= {True,False}和;
[0070] 第二方面依据S= {True,False}来选取内存目标节点;若S=True,贝lj直接选择 本地内存节点作为内存分配的内存目标节点;若S=False,则选择对应的内存作 为内存分配的内存目标节点;
[0071] 第三方面,将选取的内存目标节点输出给Linux操作系统的Buddy内存分配器。
[0072] 应用本发明设计的延时感知-内存分配装置进行的基于NUMA多核架构内多节点 间访存延时平衡的内存分配方法,包括有下列步骤:
[0073] 步骤一:系统启动;
[0074] 计算机开机后,同时启动Linux操作系统和延时感知单元1 ;基于NUMA多核架构 内多节点间访存延时平衡的内存分配进入后台运行状态。
[0075] 在本发明中,延时感知单元1可以设置为自动启动或者手动启动。
[0076] 步骤二:初始化伪平衡状态;
[0077] 步骤21,初始化内存分配单元2中的内存节点选取模块22的伪平衡状态= {True} ;True表示多个内存节点的访存延时平衡。
[0078]步骤22,内存节点选取模块22选取本地内存节点作为内存分配的内存目标节点; 并将内存目标节点输出给Linux操作系统的Buddy内存分配器。
[0079]步骤23,初始化访存延时最小内存节点,记为me/wH;·_所述是S= {True,False}中的属性为False时,选取的内存目标节点;
[0080] 在本发明中,当延时感知单元1启动后,在平衡状态及延时最小生成模块21中平 衡状态s= {True,False}将被不断更新为实时的多个内存节点间的访存延时平衡状态,此 时内存节点选取模块22根据实时平衡状态来选择内存目标节点。
[0081] 步骤三:获取内存节点对应的GQ支持的硬件事件;
[0082] 通过延时感知单元1中的事件监控模块11实时监控NUMA多核架构中内存 节点MGQ={memA-GQ,memB-GQ,…,memN-叫}对应的GQ单元NUMAGQ= {A_GQ,B_GQ,
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1