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

文档序号:9631441阅读:来源:国知局
间存在差异,但是同一应用的各进程运行 时间基本一致。在多应用实验并行进程数为4的场景中,系统内的资源利用率低于50%, 并且每个应用只有一个进程。由于它们的访存特征不同,因此在运行时对资源的争用不剧 烈。但是在并行进程数为8时,非延时感知处理下运行的进程间性能降低比值差异较大,进 程间的不公平也很明显。而在延时感知处理下,性能减低比值得到控制,进程间的不公平也 减小。
【主权项】
1. 一种适用于NUMA架构内多节点间访存延时平衡的延时感知-内存分配装置,其特征 在于:该装置包括有延时感知单元(1)和内存分配单元(2);所述延时感知单元(1)由事件 监控模块(11)和延时获取模块(12)组成;所述内存分配单元(2)由平衡状及延时最小生 成模块(21)和内存节点选取模块(22)组成;所述延时感知单元⑴内嵌在NUMA多核架构 的GQ单元;所述内存分配单元(2)内嵌在Linux操作系统中;Linux操作系统运行于NUMA 多核架构中; 事件监控模块(11) 一方面用于采集GQ单元的硬件事件,并记录下所述硬件事件对应 的事件计数值,即GQ事件计数序列EVENI^i{evA-'evB-1…,evN-,;另一方面将事件计 数值输出给延时获取模块(12); 延时获取模块(12) -方面用于接收GQ事件计数序列EVENT?^{evΑΛθνΒΛ…,e/-,,另一方面对EVENTGQ={evΑΛevB-i…,evN-,中的事件计数值进行比值处理,得到访 存延时序列CYCLE^z{CYA-'CYBm,…,CYNJ:Q};最后将CYCLE^输出给平衡状及延时最小生 成模块(21); 对于A-GQ单元的事件计数值evA-GQ={ortA-GQ,artA-GQ,owtA-1awtA-GQ,opptA-GQ,apptA-,得到读请求的平均访存延得到写请求的平得到远端访存请求的平均访存延时;采用 ppt-表征访存延时; 对于B-GQ单元的事件计数值evB-GQ={ortB-GQ,artB-GQ,owtB-1awtB-GQ,opptB-GQ,apptB-,得到读请求的平均访存延得到写请求的平得到远端访存请求的平均访存延时;采用表征访存延时; 对于N-GQ单元的事件计数值evN-GQ={ortN-GQ,artN-GQ,owtN-1awtN-GQ,opptN-GQ,apptN-,得到读请求的平均访存.得到写请求的平-得到远端访存请求的平均访存延时采用 (:ΥΛ'-印=印+ 印+e.);c/^7印表征访存延时; 平衡状态及延时最小生成模块(21)第一方面接收访存延时序列0¥0^(:()={0¥ ;'-(:(),0¥8-,…,CYNJM)},第二方面采用快排序算法对访存延时序列CYCLES()={CYΑΛCYBJ:Q,…,CYNJiQ} 进行从小到大的排序,得到排序后的访存延时序列11_0¥〇^= {CYΑΛ〇ΥΒΛ···,0¥_};第 三方面,选取所述ICYCLE^中的第一个访存延时CFf和最后一个访存延时CT|0 ;第四 方面,采用模糊边界方法,对作比,得到平衡状态的属性s= {True,False}; 并将S= {True,FalSe}输出给内存节点选取模块(22);第五方面,依据H_CYCLEsq = {ΟΥΑΛCYBJM),…,CYNJiQ}中的延时顺序,得到内存节点标识序列DSTS() ={NameΑΛNameB-' …,NameNJ:Q};第六方面,选取DST*^{NameAJ:Q,Name1^,…,NameNJ:Q}中的第一个内存节 点标识号,记为她騰f;并将論騰f输出给内存节点选取模块(22);所述的ΛΓ疆ef对 应的是按从小到大排序得到的ICYCLE?^ {CYAJ:Q,CYBJ:Q,…,CYNJM)}中的首个; 所述模糊边界中,若CT(f-C^fS 则平衡状态的属性记为多个内存 节点的访存延时平衡,符号为True;Level_diff表示同一级别的模糊边界阈值; 所述模糊边界中,若CTif- 疗',则平衡状态的属性记为多个内存 节点的访存延时不平衡,符号为False; 内存节点选取模块(22)第一方面接收S= {True,False}和第二方面依据S= {True,False}来选取内存目标节点;若S=True,贝1J直接选择本地内存节点作为内存 分配的内存目标节点;若S=False,则选择对应的内存作为内存分配的内存目标 节点;第三方面,将选取的内存目标节点输出给Linux操作系统的Buddy内存分配器。2. 根据权利要求1所述的一种适用于NUMA架构内多节点间访存延时平衡的延时感 知-内存分配装置,其特征在于:事件监控模块(11)是对NUMA多核架构服务器中存在的N 个GQ单元进程监控,同时也对每个GQ单元对应的内存以及内存节点的访存延时进行监控。3. -种适用于NUMA架构内多节点间访存延时平衡的内存分配方法,其特征在于包括 有下列步骤: 步骤一:系统启动; 开起计算机,并启动Linux操作系统; 步骤二:初始化伪平衡状态; 步骤21,初始化内存分配单元(2)中的内存节点选取模块(22)的伪平衡状态Sft = {True} ;True表示多个内存节点的访存延时平衡; 步骤22,内存节点选取模块(22)选取本地内存节点作为内存分配的内存目标节点;并 将内存目标节点输出给Linux操作系统的Buddy内存分配器; 步骤23,初始化访存延时最小内存节点,记为;所述是S= {True,False}中的属性为False时,选取的内存目标节点; 当延时感知单元(1)启动后,在平衡状态及延时最小生成模块(21)中平衡状态S= {True,False}将被不断更新为实时的多个内存节点间的访存延时平衡状态,此时内存节点 选取模块(22)根据实时平衡状态来选择内存目标节点; 步骤三:获取内存节点对应的GQ支持的硬件事件; 通过延时感知单元(1)中的事件监控模块(11)实时监控NUMA多核架构中内存 节点 #= {memA-'memB-0(1,…,memN-GQ}对应的GQ单元NUMAGQ= {A_GQ,B_GQ, ...,N_ GQ}所支持的硬件事件evG()= {ort,art,owt,awt,oppt,appt};然后通过ev^ = {ort,art,owt,awt,oppt,appt}得到GQ事件计数序列EVENT**^{evA-GQ,evB-GQ,…,evN-叫}; 步骤四:计算访存延时: 步骤41,通过延时感知单元(1)中的延时获取模块(12)对EVENTGQ= {evA-GQ,evB-'··· 采用分类比值处理,分别得到读请求、写请求和远端访存请求的平均访存延时; 步骤42,对读请求、写请求和远端访存请求的平均访存延时求和,得到GQ单元对应的 内存节点访存延时cycleS()={cyΑΛεγΒΛ…,cyn-; 对于A-GQ单元的事件计数值evA-GQ={ortA-GQ,artA-GQ,owtA-1awtA-GQ,opptA-GQ,apptA-步骤五:计算延时平衡状态: 在平衡状态及延时最小生成模块(21)中采用快排序算法对访存延时序列CYCLE^i{CYAJ:Q,CYBJ:Q,…,CYNJ:Q}进行从小到大的排序,得到排序后的访存延时序列H_CYCLESQ = {CYA-卬,CYB-GV",CYN-卬}; 选取所述ICYCLE^^的首尾两个访存延时€Τ|ρ、CTf?,并采用模糊边界方法对 〇/)|0与(77^£1作比,得到平衡状态的属性3={1'1'116,?3186},同时将5伪={1'1'116}更替为S= {True,False}; 所述模糊边界中,若CTp-CT;fS 故,则平衡状态的属性记为多个内存 节点的访存延时平衡,符号为True;Level_diff表示同一级别的模糊边界阈值; 所述模糊边界中,若- ,则平衡状态的属性记为多个内存 节点的访存延时不平衡,符号为False; 步骤六:计算最小访存延时的内存节点; 在平衡状态及延时最小生成模块(21)中依据ICYCLE?^ {CYAJ:Q,CYBJ:Q,···,0¥_}中 的延时顺序,得到内存节点标识序列DSI^ ={NameA-'NameB-'…,NameN-,;然后,选取 DSf={NameA-G(),NameB-G(),…,NameN-G()}中的第一个内存节点,记为 ;且将A/amel0 赋值给赚/?? ; 步骤七:选择内存目标节点; 步骤71,在内存节点选取模块(22)中依据延时平衡状态S= {True,False}来选取内 存目标节点;若S=True,贝lj直接选择本地内存节点作为内存分配的内存目标节点;若S= False,则选择作为内存分配的内存目标节点; 步骤72,当内存目标节点选定后,判断内存容量; MCg表示内存目标节点的空闲内存容量; MCag表示进程需要的内存容量; 若所选取的内存目标节点的空闲内存容量MC目标小于进程需要的内存容量MCag,即MC_<MCag,则从ICYCLE?^ {ΟΥΑΛ〇ΥΒΛ···,0'-,中剔除最小访存延时的内存节点;返 回步骤六; Η剔除-CYCLE?^{CYΑΛCYB-GV",CYN-叫}表示从H_CYCLEG()={CYΑΛCYB-GV",CYN-叫} 中剔除了最小访存延时的访存延时序列,简称为剔除后访存延时序列; DS^|={^/從印丨表示剔除后访存延时序列Η剔除_ CYCLE?^{CYAJ:Q,CYBJ:Q,…,CYN_SQ}对应的内存节点标识序列,简称为剔除后内存节点标识 序列; 再次依据H_JYCLE?^{CYA-'CYB-'…,CYN-,中的延时顺序,得到剔除后若所选取的内存目标节点的空闲内存容量MC目标小于进程需要的内存容量MCag,即MC目@多MCag,则将选取的内存目标节点输出给Linux操作系统的Buddy内存分配器。
【专利摘要】本发明公开了一种适用于NUMA架构内多节点间访存延时平衡的内存分配方法及延时感知-内存分配装置,该装置包括有内嵌在NUMA多核架构的GQ单元中的延时感知单元(1)和内嵌在Linux操作系统中的内存分配单元(2)。本发明的内存分配方法通过延时感知单元(1)周期性地感知内存节点间的访存延时,使得内存分配单元(2)获取各个内存节点的访存延时是否平衡,并根据平衡状态选择内存分配节点,最后输出给Linux操作系统的Buddy内存分配器,实现物理内存的分配。本发明装置针对NUMA多核架构服务器,在保证访存延时平衡的前提下,稳定了应用性能,降低了应用进程间共享内存的不公平性。
【IPC分类】G06F9/50
【公开号】CN105389211
【申请号】CN201510690606
【发明人】杨海龙, 李慧娟, 王辉, 刘岚, 栾钟治, 钱德沛
【申请人】北京航空航天大学
【公开日】2016年3月9日
【申请日】2015年10月22日
当前第4页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1