CN105389211A - 一种适用于numa架构内多节点间访存延时平衡的内存分配方法及延时感知-内存分配装置 - Google Patents
一种适用于numa架构内多节点间访存延时平衡的内存分配方法及延时感知-内存分配装置 Download PDFInfo
- Publication number
- CN105389211A CN105389211A CN201510690606.7A CN201510690606A CN105389211A CN 105389211 A CN105389211 A CN 105389211A CN 201510690606 A CN201510690606 A CN 201510690606A CN 105389211 A CN105389211 A CN 105389211A
- Authority
- CN
- China
- Prior art keywords
- memory
- delay
- cycle
- node
- unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Abstract
本发明公开了一种适用于NUMA架构内多节点间访存延时平衡的内存分配方法及延时感知-内存分配装置,该装置包括有内嵌在NUMA多核架构的GQ单元中的延时感知单元(1)和内嵌在Linux操作系统中的内存分配单元(2)。本发明的内存分配方法通过延时感知单元(1)周期性地感知内存节点间的访存延时,使得内存分配单元(2)获取各个内存节点的访存延时是否平衡,并根据平衡状态选择内存分配节点,最后输出给Linux操作系统的Buddy内存分配器,实现物理内存的分配。本发明装置针对NUMA多核架构服务器,在保证访存延时平衡的前提下,稳定了应用性能,降低了应用进程间共享内存的不公平性。
Description
技术领域
本发明涉及一种对NUMA架构服务器的内存分配,更特别地说,是指一种适用于Linux操作系统的NUMA架构服务器的访存延时平衡的内存分配方法。
背景技术
随着多核架构的普及和发展,NUMA(NonUniformMemoryAccessArchitecture,非统一内存访问架构)多核架构凭借其本地访存低延时的优势,被各大数据中心以及科学计算集群广泛采用。但是NUMA复杂的结构导致操作系统管理内存更加复杂。虽然Linux操作系统可以充分利用NUMA多核架构的本地访存低延时的特点,但是多个内存节点间的访存延时平衡问题还没有解决。如何有效地管理NUMA多核架构下内存资源的使用已经是Linux操作系统开发的关键所在。
参考“64andIA-32ArchitecturesOptimizationReferenceManual”,序号248966-030,2014年9月。在此手册的图B-5和图B-6中公开了NUMA多核架构中包含GQ(GlobalQueue,全局队列)单元的示意图。GQ单元用于缓存Core单元中未命中两级缓存(L1、L2)的访存请求(memoryrequests)。
访存延时(memoryaccesslatency)是多核架构下影响应用性能(applicationperformance)的重要因素,在NUMA多核架构下尤为突出。NUMA多核架构缓解了多核对同一个内存控制器(IMC)的争用,但是多个内存节点之间的访存延时不平衡导致运行的多个应用进程(process)之间共享内存资源的不公平性,进而增大进程应用性能(processperformance)的差异,从而导致整体应用性能(applicationperformance)的波动。Linux操作系统的内存分配方法在分配内存时只考虑内存节点可分配的内存容量(memorycapacity),这样会造成内存节点间的访存延时(memoryaccesslatency)的不平衡。因此,有效地保持多个内存节点的访存延时(memoryaccesslatency)平衡是非常重要的。在支持NUMA多核架构的Linux操作系统的内存分配方法,需要直接获取访存延时(memoryaccesslatency)是比较困难的,因此需要一种感知访存延时的内存分配方法是解决问题的关键。
发明内容
本发明的目的之一是设计了一种适用于NUMA架构内多节点间访存延时平衡的延时感知-内存分配装置,该装置包括有延时感知单元(1)和内存分配单元(2)。所述延时感知单元(1)由事件监控模块(11)和延时获取模块(12)组成。所述内存分配单元(2)由平衡状及延时最小生成模块(21)和内存节点选取模块(22)组成。所述延时感知单元(1)内嵌在NUMA多核架构的GQ单元。所述内存分配单元(2)内嵌在Linux操作系统中。Linux操作系统运行于NUMA多核架构中。
本发明的目的另一是提出了一种适用于NUMA架构内多节点间访存延时平衡的内存分配方法,该方法是针对含多个内存节点的NUMA多核架构服务器,处于不同访存延时平衡状态时进行的内存分配的处理。访存延时是借助GQ单元中访存请求的平均滞留时间得到访存延时。本发明方法通过延时感知单元(1)周期性地感知内存节点间的访存延时,使得内存分配单元(2)获取各个内存节点的访存延时是否平衡,并根据平衡状态选择内存分配节点(目标内存节点),最后输出给Linux操作系统的Buddy内存分配器,实现物理内存的分配。本发明方法中的延时感知周期(latencyawarenessperiod)能够根据平衡状态的变化频率做出适应性地调整,并且将延时感知单元(1)设置为系统自启动或者手动启动两种。本发明方法针对NUMA多核架构服务器,在保证访存延时平衡的前提下,稳定了应用性能(applicationperformance),降低了应用进程间共享内存的不公平性。
本发明设计了一种适用于NUMA架构内多节点间访存延时平衡的延时感知-内存分配装置,其特征在于:该装置包括有延时感知单元(1)和内存分配单元(2);所述延时感知单元(1)由事件监控模块(11)和延时获取模块(12)组成;所述内存分配单元(2)由平衡状及延时最小生成模块(21)和内存节点选取模块(22)组成;所述延时感知单元(1)内嵌在NUMA多核架构的GQ单元;所述内存分配单元(2)内嵌在Linux操作系统中;Linux操作系统运行于NUMA多核架构中;
事件监控模块(11)一方面用于采集GQ单元的硬件事件,并记录下所述硬件事件对应的事件计数值,即GQ事件计数序列EVENTGQ={evA_GQ,evB_GQ,...,evN_GQ};另一方面将事件计数值输出给延时获取模块(12);
延时获取模块(12)一方面用于接收GQ事件计数序列EVENTGQ={evA_GQ,evB_GQ,...,evN_GQ},另一方面对EVENTGQ={evA_GQ,evB_GQ,...,evN_GQ}中的事件计数值进行比值处理,得到访存延时序列CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ};最后将CYCLEGQ输出给平衡状及延时最小生成模块(21);
对于A-GQ单元的事件计数值evA_GQ={ortA_GQ,artA_GQ,owtA_GQ,awtA_GQ,opptA_GQ,apptA_GQ}采用得到读请求的平均访存延时 得到写请求的平均访存延时 得到远端访存请求的平均访存延时采用 表征访存延时;
对于B-GQ单元的事件计数值evB_GQ={ortB_GQ,artB_GQ,owtB_GQ,awtB_GQ,opptB_GQ,apptB_GQ}采用得到读请求的平均访存延时 得到写请求的平均访存延时 得到远端访存请求的平均访存延时采用 表征访存延时;
对于N-GQ单元的事件计数值evN_GQ={ortN_GQ,artN_GQ,owtN_GQ,awtN_GQ,opptN_GQ,apptN_GQ}采用得到读请求的平均访存延时 得到写请求的平均访存延时 得到远端访存请求的平均访存延时采用 表征访存延时;
平衡状态及延时最小生成模块(21)第一方面接收访存延时序列CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ},第二方面采用快排序算法对访存延时序列CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ}进行从小到大的排序,得到排序后的访存延时序列H_CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ};第三方面,选取所述H_CYCLEGQ中的第一个访存延时和最后一个访存延时第四方面,采用模糊边界方法,对与作比,得到平衡状态的属性S={True,False};并将S={True,False}输出给内存节点选取模块(22);第五方面,依据H_CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ}中的延时顺序,得到内存节点标识序列DSTGQ={NameA_GQ,NameB_GQ,...,NameN_GQ};第六方面,选取DSTGQ={NameA_GQ,NameB_GQ,...,NameN_GQ}中的第一个内存节点标识号,记为并将输出给内存节点选取模块(22);所述的对应的是按从小到大排序得到的H_CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ}中的首个;
所述模糊边界中,若则平衡状态的属性记为多个内存节点的访存延时平衡,符号为True;Level_diff表示同一级别的模糊边界阈值;
所述模糊边界中,若则平衡状态的属性记为多个内存节点的访存延时不平衡,符号为False;
内存节点选取模块(22)第一方面接收S={True,False}和第二方面依据S={True,False}来选取内存目标节点;若S=True,则直接选择本地内存节点作为内存分配的内存目标节点;若S=False,则选择对应的内存作为内存分配的内存目标节点;第三方面,将选取的内存目标节点输出给Linux操作系统的Buddy内存分配器。
本发明设计的延时感知-内存分配装置的优点在于:
①通过在Linux操作系统中扩展内存分配单元(2),使得已有的Linux操作系统能够感知多个内存节点间的访存延时平衡状态。在已有的Linux操作系统中通过软件编程得到内存分配单元(2),使Linux内核的改动很小,不会给内核造成很大的负担。
②通过在NUMA多核架构的GQ单元中扩展延时感知单元(1),并由延时感知单元(1)来采集多个GQ单元的访存请求(memoryrequests)的平均滞留时间(averagestillcycles),并依据平均滞留时间来得到各个内存节点的访存延时。
本发明提出的适用于NUMA多核架构内多节点间访存延时平衡的内存分配方法的优点在于:
①采用快排序算法对访存延时序列进行从小到大的排序,降低了排序对Linux操作系统带来的开销。
②采用模糊边界方法来计算平衡状态,保证了平衡状态的稳定性。
③应用目标内存节点来进行内存分配,保证进程所分配到的内存页面在同一个内存节点上,同时保证进程间共享内存的公平性。
附图说明
图1是本发明延时感知-内存分配装置与NUMA多核架构服务器和Linux操作系统的关系框图。
图2是本发明多节点间访存延时平衡的内存分配方法及延时感知-内存分配装置的结构图。
图3A是stream在非延时感知分配下运行的各个进程的性能降低比值示意图。
图3B是stream在访存延时平衡的分配下运行的各个进程的性能降低比值示意图。
图3C是stream在有无延时感知分配下运行的进程间不公平的对比示意图。
具体实施方式
下面将结合附图和实施例对本发明做进一步的详细说明。
在NUMA多核架构服务器中存在有N个GQ单元,为了方便说明,第一个GQ单元记为A-GQ,第二个GQ单元记为B-GQ,……,最后一个GQ单元记为N-GQ,采用集合形式表达为NUMAGQ={A_GQ,B_GQ,...,N_GQ},NUMAGQ称为GQ序列。每个GQ单元中至少支持一个硬件事件计数器,多个硬件事件计数器也可以同时存在于一个GQ单元中。
GQ单元对应的内存节点查询表:
由于NUMA多核架构服务器中存在有N个GQ单元,每个GQ单元对应一块内存,则N个GQ单元对应的所有内存记为MGQ={memA_GQ,memB_GQ,...,memN_GQ}。为了实现对内存的识别,对属于NUMA多核架构服务器中的内存节点设置了数字标识号,即:内存节点标识号查询表DST(digitalsignaturetable):
GQ单元 | 内存节点标识号 |
A_GQ | NameA_GQ |
B_GQ | NameB_GQ |
…… | …… |
N_GQ | NameN_GQ |
内存节点标识序列记为DSTGQ={NameA_GQ,NameB_GQ,...,NameN_GQ}。在本发明中,对内存节点标识号采用8位二进制记数。如NameA_GQ=[00000000]、NameB_GQ=[00000001]、NameN_GQ=[11111111]。
MGQ={memA_GQ,memB_GQ,...,memN_GQ}中memA_GQ表示A-GQ单元对应的内存,memB_GQ表示B-GQ单元对应的内存,memN_GQ表示N-GQ单元对应的内存。
GQ单元支持的硬件事件表:
NUMA多核架构服务器中的GQ单元对硬件性能事件包括有两类,即访存请求的占用周期事件和访存请求的分配事件;具体事件如下表:
GQ单元的硬件事件记为evGQ={ort,art,owt,awt,oppt,appt}。
参见图1、图2所示,本发明设计的一种适用于NUMA多核架构内多节点间访存延时平衡的延时感知-内存分配装置,该装置包括有延时感知单元1和内存分配单元2;
所述延时感知单元1由事件监控模块11和延时获取模块12组成。
所述内存分配单元2由平衡状及延时最小生成模块21和内存节点选取模块22组成。
所述延时感知单元1内嵌在NUMA多核架构的GQ单元。
所述内存分配单元2内嵌在Linux操作系统中。
Linux操作系统运行于NUMA多核架构中。
事件监控模块11:
在本发明中,在一个采样周期里,事件监控模块11一方面用于采集GQ单元的硬件事件,并记录下所述硬件事件对应的事件计数值,即GQ事件计数序列EVENTGQ={evA_GQ,evB_GQ,...,evN_GQ};另一方面将事件计数值输出给延时获取模块12;
针对A-GQ单元的硬件事件所对应的事件计数值,记为evA_GQ;所述evA_GQ={ortA_GQ,artA_GQ,owtA_GQ,awtA_GQ,opptA_GQ,apptA_GQ}。
针对B-GQ单元的硬件事件所对应的事件计数值,记为evB_GQ;所述evB_GQ={ortB_GQ,artB_GQ,owtB_GQ,awtB_GQ,opptB_GQ,apptB_GQ}。
针对N-GQ单元的硬件事件所对应的事件计数值,记为evN_GQ;所述evN_GQ={ortN_GQ,artN_GQ,owtN_GQ,awtN_GQ,opptN_GQ,apptN_GQ}。
对于GQ序列NUMAGQ={A_GQ,B_GQ,...,N_GQ}的硬件事件所对应的事件计数值,记为EVENTGQ={evA_GQ,evB_GQ,...,evN_GQ},EVENTGQ称为GQ事件计数序列。
在本发明中,事件监控模块11是对NUMA多核架构服务器中存在的N个GQ单元进程监控,同时也对每个GQ单元对应的内存以及内存节点的访存延时进行监控。
延时获取模块12:
在本发明中,延时获取模块12一方面用于接收GQ事件计数序列EVENTGQ={evA_GQ,evB_GQ,...,evN_GQ},另一方面对EVENTGQ={evA_GQ,evB_GQ,...,evN_GQ}中的事件计数值进行比值处理,得到访存延时序列CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ};最后将CYCLEGQ输出给平衡状及延时最小生成模块21;
对于A-GQ单元的事件计数值evA_GQ={ortA_GQ,artA_GQ,owtA_GQ,awtA_GQ,opptA_GQ,apptA_GQ}采用得到读请求的平均访存延时 得到写请求的平均访存延时 得到远端访存请求的平均访存延时为了满足NUMA多核架构服务器中LLC(最后一级缓存)、IMC(内存控制器)和QPI(快速片间互联)的争用程度得以体现,采用 表征访存延时。
对于B-GQ单元的事件计数值evB_GQ={ortB_GQ,artB_GQ,owtB_GQ,awtB_GQ,opptB_GQ,apptB_GQ}采用得到读请求的平均访存延时 得到写请求的平均访存延时 得到远端访存请求的平均访存延时为了满足NUMA多核架构服务器中LLC(最后一级缓存)、IMC(内存控制器)和QPI(快速片间互联)的争用程度得以体现,采用 表征访存延时。
对于N-GQ单元的事件计数值evN_GQ={ortN_GQ,artN_GQ,owtN_GQ,awtN_GQ,opptN_GQ,apptN_GQ}采用得到读请求的平均访存延时 得到写请求的平均访存延时 得到远端访存请求的平均访存延时为了满足NUMA多核架构服务器中LLC(最后一级缓存)、IMC(内存控制器)和QPI(快速片间互联)的争用程度得以体现,采用 表征访存延时。
平衡状态及延时最小生成模块21:
在本发明中,平衡状态及延时最小生成模块21第一方面接收访存延时序列CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ},
第二方面采用快排序算法对访存延时序列CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ}进行从小到大的排序,得到排序后的访存延时序列H_CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ};
第三方面,选取所述H_CYCLEGQ中的首尾两个访存延时,记为(位于H_CYCLEGQ中的第一个访存延时)、(位于H_CYCLEGQ中的最后一个访存延时);
第四方面,采用模糊边界方法,对与作比,得到平衡状态的属性S={True,False};并将S={True,False}输出给内存节点选取模块22。
第五方面,依据H_CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ}中的延时顺序,得到内存节点标识序列DSTGQ={NameA_GQ,NameB_GQ,...,NameN_GQ};
第六方面,选取DSTGQ={NameA_GQ,NameB_GQ,...,NameN_GQ}中的第一个内存节点标识号,记为并将输出给内存节点选取模块22。所述的对应的是按从小到大排序得到的H_CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ}中的首个,因此它的访存延时也是最小的。
所述模糊边界中,若则平衡状态的属性记为多个内存节点的访存延时平衡,符号为True。Level_diff表示同一级别的模糊边界阈值。
所述模糊边界中,若则平衡状态的属性记为多个内存节点的访存延时不平衡,符号为False。
在本发明中,能够通过所述DSTGQ能够得到GQ单元对应的内存节点标识号。
内存节点选取模块22:
在本发明中,内存节点选取模块22第一方面接收S={True,False}和
第二方面依据S={True,False}来选取内存目标节点;若S=True,则直接选择本地内存节点作为内存分配的内存目标节点;若S=False,则选择对应的内存作为内存分配的内存目标节点;
第三方面,将选取的内存目标节点输出给Linux操作系统的Buddy内存分配器。
应用本发明设计的延时感知-内存分配装置进行的基于NUMA多核架构内多节点间访存延时平衡的内存分配方法,包括有下列步骤:
步骤一:系统启动;
计算机开机后,同时启动Linux操作系统和延时感知单元1;基于NUMA多核架构内多节点间访存延时平衡的内存分配进入后台运行状态。
在本发明中,延时感知单元1可以设置为自动启动或者手动启动。
步骤二:初始化伪平衡状态;
步骤21,初始化内存分配单元2中的内存节点选取模块22的伪平衡状态S伪={True};True表示多个内存节点的访存延时平衡。
步骤22,内存节点选取模块22选取本地内存节点作为内存分配的内存目标节点;并将内存目标节点输出给Linux操作系统的Buddy内存分配器。
步骤23,初始化访存延时最小内存节点,记为所述是S={True,False}中的属性为False时,选取的内存目标节点;
在本发明中,当延时感知单元1启动后,在平衡状态及延时最小生成模块21中平衡状态S={True,False}将被不断更新为实时的多个内存节点间的访存延时平衡状态,此时内存节点选取模块22根据实时平衡状态来选择内存目标节点。
步骤三:获取内存节点对应的GQ支持的硬件事件;
通过延时感知单元1中的事件监控模块11实时监控NUMA多核架构中内存节点MGQ={memA_GQ,memB_GQ,...,memN_GQ}对应的GQ单元NUMAGQ={A_GQ,B_GQ,...,N_GQ}所支持的硬件事件evGQ={ort,art,owt,awt,oppt,appt};然后通过evGQ={ort,art,owt,awt,oppt,appt}得到GQ事件计数序列EVENTGQ={evA_GQ,evB_GQ,...,evN_GQ};
步骤四:计算访存延时:
步骤41,通过延时感知单元1中的延时获取模块12对EVENTGQ={evA_GQ,evB_GQ,...,evN_GQ}采用分类比值处理,分别得到读请求、写请求和远端访存请求的平均访存延时;
步骤42,对读请求、写请求和远端访存请求的平均访存延时求和,得到GQ单元对应的内存节点访存延时CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ};
对于A-GQ单元的事件计数值evA_GQ={ortA_GQ,artA_GQ,owtA_GQ,awtA_GQ,opptA_GQ,apptA_GQ}采用得到读请求的平均访存延时 得到写请求的平均访存延时 得到远端访存请求的平均访存延时为了满足NUMA多核架构服务器中LLC(最后一级缓存)、IMC(内存控制器)和QPI(快速片间互联)的争用程度得以体现,采用 表征访存延时。
对于B-GQ单元的事件计数值evB_GQ={ortB_GQ,artB_GQ,owtB_GQ,awtB_GQ,opptB_GQ,apptB_GQ}采用得到读请求的平均访存延时 得到写请求的平均访存延时 得到远端访存请求的平均访存延时为了满足NUMA多核架构服务器中LLC(最后一级缓存)、IMC(内存控制器)和QPI(快速片间互联)的争用程度得以体现,采用 表征访存延时。
对于N-GQ单元的事件计数值evN_GQ={ortN_GQ,artN_GQ,owtN_GQ,awtN_GQ,opptN_GQ,apptN_GQ}采用得到读请求的平均访存延时 得到写请求的平均访存延时 得到远端访存请求的平均访存延时为了满足NUMA多核架构服务器中LLC(最后一级缓存)、IMC(内存控制器)和QPI(快速片间互联)的争用程度得以体现,采用 表征访存延时。
步骤五:计算延时平衡状态:
在平衡状态及延时最小生成模块21中采用快排序算法对访存延时序列CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ}进行从小到大的排序,得到排序后的访存延时序列H_CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ};
选取所述H_CYCLEGQ中的首尾两个访存延时并采用模糊边界方法对与作比,得到平衡状态的属性S={True,False},同时将S伪={True}更替为S={True,False};
所述模糊边界中,若则平衡状态的属性记为多个内存节点的访存延时平衡,符号为True。Level_diff表示同一级别的模糊边界阈值。
所述模糊边界中,若则平衡状态的属性记为多个内存节点的访存延时不平衡,符号为False。
步骤六:计算最小访存延时的内存节点;
在平衡状态及延时最小生成模块21中依据H_CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ}中的延时顺序,得到内存节点标识序列DSTGQ={NameA_GQ,NameB_GQ,...,NameN_GQ};然后,选取DSTGQ={NameA_GQ,NameB_GQ,...,NameN_GQ}中的第一个内存节点,记为且将赋值给
步骤七:选择内存目标节点;
步骤71,在内存节点选取模块22中依据延时平衡状态S={True,False}来选取内存目标节点;若S=True,则直接选择本地内存节点作为内存分配的内存目标节点;若S=False,则选择作为内存分配的内存目标节点;
步骤72,当内存目标节点选定后,判断内存容量;
MC目标表示内存目标节点的空闲内存容量;
MC进程表示进程需要的内存容量;
若所选取的内存目标节点的空闲内存容量MC目标小于进程需要的内存容量MC进程,即MC目标<MC进程,则从H_CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ}中剔除最小访存延时的内存节点;返回步骤六;
H剔除_CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ}表示从H_CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ}中剔除了最小访存延时的访存延时序列,简称为剔除后访存延时序列。
表示剔除后访存延时序列H剔除_CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ}对应的内存节点标识序列,简称为剔除后内存节点标识序列。
再次依据H剔除_CYCLEGQ={CYA_GQ,CYB_GQ,...,CYN_GQ}中的延时顺序,得到剔除后内存节点标识序列然后,选取中的第一个内存节点,记为且将赋值给
若所选取的内存目标节点的空闲内存容量MC目标小于进程需要的内存容量MC进程,即MC目标≥MC进程,则将选取的内存目标节点输出给Linux操作系统的Buddy内存分配器。
在本发明中,通过实时感知多个内存节点间的访存延时和延时平衡状态,来保证多个应用并行运行时,公平地共享资源并且稳定应用性能。
本发明的访存延时平衡内存分配方法,首先感知节点间的延时平衡状态,然后根据平衡状态选出内存分配节点,最后调用分页函数实现物理内存分配。针对实时运行的系统环境,基于底层硬件计数器采集的信息,通过共享变量传递给内存分配单元2。然后分配方法根据平衡状态选出内存节点并调用底层分页函数分配物理内存。
本发明设计的一种适用于NUMA架构内多节点间访存延时平衡的延时感知-内存分配装置,所要解决的是如何在现有Linux操作系统中来感知多个内存节点间的访存延时平衡状态的技术问题,通过在NUMA多核架构的GQ单元中扩展延时感知单元1,并由延时感知单元1来采集多个GQ单元的访存请求(memoryrequests)的平均滞留时间(averagestillcycles),并依据平均滞留时间来得到各个内存节点的访存延时的技术手段,从而在保证访存延时平衡的前提下,稳定了应用性能(applicationperformance),降低了应用进程间共享内存的不公平性的技术效果。
实施例1
实施例采用具有两个内存节点的NUMA架构,运用本发明的多节点间访存延时平衡的内存分配方法及延时感知-内存分配装置进行延时感知平衡的内存分配测试。
实验条件:含有两个IntelE5620处理器和两个内存节点的服务器,该服务器是一台IBM的刀片服务器,采用RedHatCentOS6.5操作系统,内核版本是linux-2.6.32。启动服务器后,将超线程和预取配置为disable(译文,不启用)。
测试过程(一):采用单一应用多个并行实例运行场景下,对非感知延时的内存分配处理与本发明感知访存延时平衡状态的内存分配处理进行实验并加以对比。并行运行的进程数为1~8,其中运行1个进程将作为多个进程并行执行时,性能降低的对比。表1数据是stream(译文,流测试用例)的7个并行场景在“非延时感知”与“延时感知”下运行的对比结果。
表1并行进程数不同的各进程执行时间及进程间的不公平对比:
注:非延时感知是指未使用本发明访存延时平衡方法的内存分配方法。延时感知是指使用本发明访存延时平衡的内存分配方法。并行场景下每个进程的性能降低比值=并行执行时间/单独一个进程执行的时间。同一并行场景下,进程间的不公平=性能降低比值的最大值/性能降低比值的最小值。
如图3A、图3B、图3C及表1中所示,在并行进程数低于5的并行场景中,在非延时感知分配下运行的进程性能降低比值和不公平是不稳定的,在并行进程数高于5以后,每个进程的性能降低比值明显,且进程间的不公平也很明显。并行进程数低于5的并行场景下运行应用时,系统内的多种资源利用低于50%,并且非延时感知在分配内存时,不作延时平衡感知,导致应用运行时性能不稳定,时好时坏。在延时感知分配内存时,每个并行场景中的各进程性能降低比值维持在单个进程执行时间的1.2倍,并且进程间的不公平降低至1.05以下。因为延时感知分配方法,在分配时会首先考虑当前内存节点间的延时平衡,因此各并行场景下,应用的性能稳定,且进程间的不公平减小。
测试过程(二):采用多应用并行运行场景下,对本发明感知访存延时平衡状态的内存分配处理和未感知延时的内存分配处理进行实验并加以对比。针对不同的应用组合进行测试,并且进行实验数据对比。并行运行的进程数为1~8,其中运行1个进程将作为多个进程并行执行时,性能降低的对比。表1数据是stream测试用例的7个并行场景在两种方法下运行的对比结果。
在多应用的并行场景中,延时感知分配方法也能将每个进程的性能降低稳定在1.2,不公平稳定在1.1以下。下面以SPECCPU2006中提出的milc(量子力学测试用例)、leslie3d(流体力学测试用例)和GemsFDTD(计算电磁学测试用例)和stream(流测试用例)四个应用并行运行的实验作对比展示。其中并行进程数为4,表示每个应用运行1个进程,共4个;进程数为8,表示每个应用运行2个进程,共8个。表2是四个应用的2个并行场景在两种策略下运行的实验结果对比。
表2混合应用场景下各进程的性能下降和进程间的不公平
注:各进程的性能下降=某个应用的进程并行执行时间/仅该应用单个进程执行的时间。
如表2所示,在多应用并行执行场景下,延时感知处理下的每个应用的进程的性能降低比值都维持在1.2以下,并且进程间不公平在1.10以下。在多应用并行运行时,由于不同应用的访存特征不一样,各应用的运行时间存在差异,但是同一应用的各进程运行时间基本一致。在多应用实验并行进程数为4的场景中,系统内的资源利用率低于50%,并且每个应用只有一个进程。由于它们的访存特征不同,因此在运行时对资源的争用不剧烈。但是在并行进程数为8时,非延时感知处理下运行的进程间性能降低比值差异较大,进程间的不公平也很明显。而在延时感知处理下,性能减低比值得到控制,进程间的不公平也减小。
Claims (3)
1.一种适用于NUMA架构内多节点间访存延时平衡的延时感知-内存分配装置,其特征在于:该装置包括有延时感知单元(1)和内存分配单元(2);所述延时感知单元(1)由事件监控模块(11)和延时获取模块(12)组成;所述内存分配单元(2)由平衡状及延时最小生成模块(21)和内存节点选取模块(22)组成;所述延时感知单元(1)内嵌在NUMA多核架构的GQ单元;所述内存分配单元(2)内嵌在Linux操作系统中;Linux操作系统运行于NUMA多核架构中;
事件监控模块(11)一方面用于采集GQ单元的硬件事件,并记录下所述硬件事件对应的事件计数值,即GQ事件计数序列EVENTGQ={evA_GQ,evB_GQ,…,evN_GQ};另一方面将事件计数值输出给延时获取模块(12);
延时获取模块(12)一方面用于接收GQ事件计数序列EVENTGQ={evA_GQ,evB_GQ,…,evN_GQ},另一方面对EVENTGQ={evA_GQ,evB_GQ,…,evN_GQ}中的事件计数值进行比值处理,得到访存延时序列CYCLEGQ={CYA_GQ,CYB_GQ,…,CYN_GQ};最后将CYCLEGQ输出给平衡状及延时最小生成模块(21);
对于A-GQ单元的事件计数值evA_GQ={ortA_GQ,artA_GQ,owtA_GQ,awtA_GQ,opptA_GQ,apptA_GQ}采用得到读请求的平均访存延时得到写请求的平均访存延时 得到远端访存请求的平均访存延时采用 表征访存延时;
对于B-GQ单元的事件计数值evB_GQ={ortB_GQ,artB_GQ,owtB_GQ,awtB_GQ,opptB_GQ,apptB_GQ}采用得到读请求的平均访存延时 得到写请求的平均访存延时 得到远端访存请求的平均访存延时采用 表征访存延时;
对于N-GQ单元的事件计数值evN_GQ={ortN_GQ,artN_GQ,owtN_GQ,awtN_GQ,opptN_GQ,apptN_GQ}采用得到读请求的平均访存延时 得到写请求的平均访存延时 得到远端访存请求的平均访存延时采用 表征访存延时;
平衡状态及延时最小生成模块(21)第一方面接收访存延时序列CYCLEGQ={CYA_GQ,CYB_GQ,…,CYN_GQ},第二方面采用快排序算法对访存延时序列CYCLEGQ={CYA_GQ,CYB_GQ,…,CYN_GQ}进行从小到大的排序,得到排序后的访存延时序列H_CYCLEGQ={CYA_GQ,CYB_GQ,…,CYN_GQ};第三方面,选取所述H_CYCLEGQ中的第一个访存延时和最后一个访存延时第四方面,采用模糊边界方法,对与作比,得到平衡状态的属性S={True,False};并将S={True,False}输出给内存节点选取模块(22);第五方面,依据H_CYCLEGQ={CYA_GQ,CYB_GQ,…,CYN_GQ}中的延时顺序,得到内存节点标识序列DSTGQ={NameA_GQ,NameB_GQ,…,NameN_GQ};第六方面,选取DSTGQ={NameA_GQ,NameB_GQ,…,NameN_GQ}中的第一个内存节点标识号,记为并将输出给内存节点选取模块(22);所述的对应的是按从小到大排序得到的H_CYCLEGQ={CYA_GQ,CYB_GQ,…,CYN_GQ}中的首个;
所述模糊边界中,若则平衡状态的属性记为多个内存节点的访存延时平衡,符号为True;Level_diff表示同一级别的模糊边界阈值;
所述模糊边界中,若则平衡状态的属性记为多个内存节点的访存延时不平衡,符号为False;
内存节点选取模块(22)第一方面接收S={True,False}和第二方面依据S={True,False}来选取内存目标节点;若S=True,则直接选择本地内存节点作为内存分配的内存目标节点;若S=False,则选择对应的内存作为内存分配的内存目标节点;第三方面,将选取的内存目标节点输出给Linux操作系统的Buddy内存分配器。
2.根据权利要求1所述的一种适用于NUMA架构内多节点间访存延时平衡的延时感知-内存分配装置,其特征在于:事件监控模块(11)是对NUMA多核架构服务器中存在的N个GQ单元进程监控,同时也对每个GQ单元对应的内存以及内存节点的访存延时进行监控。
3.一种适用于NUMA架构内多节点间访存延时平衡的内存分配方法,其特征在于包括有下列步骤:
步骤一:系统启动;
开起计算机,并启动Linux操作系统;
步骤二:初始化伪平衡状态;
步骤21,初始化内存分配单元(2)中的内存节点选取模块(22)的伪平衡状态S伪={True};True表示多个内存节点的访存延时平衡;
步骤22,内存节点选取模块(22)选取本地内存节点作为内存分配的内存目标节点;并将内存目标节点输出给Linux操作系统的Buddy内存分配器;
步骤23,初始化访存延时最小内存节点,记为所述是S={True,False}中的属性为False时,选取的内存目标节点;
当延时感知单元(1)启动后,在平衡状态及延时最小生成模块(21)中平衡状态S={True,False}将被不断更新为实时的多个内存节点间的访存延时平衡状态,此时内存节点选取模块(22)根据实时平衡状态来选择内存目标节点;
步骤三:获取内存节点对应的GQ支持的硬件事件;
通过延时感知单元(1)中的事件监控模块(11)实时监控NUMA多核架构中内存节点MGQ={memA_GQ,memB_GQ,…,memN_GQ}对应的GQ单元NUMAGQ={A_GQ,B_GQ,…,N_GQ}所支持的硬件事件evGQ={ort,art,owt,awt,oppt,appt};然后通过evGQ={ort,art,owt,awt,oppt,appt}得到GQ事件计数序列EVENTGQ={evA_GQ,evB_GQ,…,evN_GQ};
步骤四:计算访存延时:
步骤41,通过延时感知单元(1)中的延时获取模块(12)对EVENTGQ={evA_GQ,evB_GQ,…,evN_GQ}采用分类比值处理,分别得到读请求、写请求和远端访存请求的平均访存延时;
步骤42,对读请求、写请求和远端访存请求的平均访存延时求和,得到GQ单元对应的内存节点访存延时CYCLEGQ={CYA_GQ,CYB_GQ,…,CYN_GQ};
对于A-GQ单元的事件计数值evA_GQ={ortA_GQ,artA_GQ,owtA_GQ,awtA_GQ,opptA_GQ,apptA_GQ}采用得到读请求的平均访存延时 得到写请求的平均访存延时 得到远端访存请求的平均访存延时采用 表征访存延时;
对于B-GQ单元的事件计数值evB_GQ={ortB_GQ,artB_GQ,owtB_GQ,awtB_GQ,opptB_GQ,apptB_GQ}采用得到读请求的平均访存延时 得到写请求的平均访存延时 得到远端访存请求的平均访存延时采用 表征访存延时;
对于N-GQ单元的事件计数值evN_GQ={ortN_GQ,artN_GQ,owtN_GQ,awtN_GQ,opptN_GQ,apptN_GQ}采用得到读请求的平均访存延时 得到写请求的平均访存延时 得到远端访存请求的平均访存延时采用 表征访存延时;
步骤五:计算延时平衡状态:
在平衡状态及延时最小生成模块(21)中采用快排序算法对访存延时序列CYCLEGQ={CYA_GQ,CYB_GQ,…,CYN_GQ}进行从小到大的排序,得到排序后的访存延时序列H_CYCLEGQ={CYA_GQ,CYB_GQ,…,CYN_GQ};
选取所述H_CYCLEGQ中的首尾两个访存延时并采用模糊边界方法对与作比,得到平衡状态的属性S={True,False},同时将S伪={True}更替为S={True,False};
所述模糊边界中,若则平衡状态的属性记为多个内存节点的访存延时平衡,符号为True;Level_diff表示同一级别的模糊边界阈值;
所述模糊边界中,若则平衡状态的属性记为多个内存节点的访存延时不平衡,符号为False;
步骤六:计算最小访存延时的内存节点;
在平衡状态及延时最小生成模块(21)中依据H_CYCLEGQ={CYA_GQ,CYB_GQ,…,CYN_GQ}中的延时顺序,得到内存节点标识序列DSTGQ={NameA_GQ,NameB_GQ,…,NameN_GQ};然后,选取DSTGQ={NameA_GQ,NameB_GQ,…,NameN_GQ}中的第一个内存节点,记为且将赋值给
步骤七:选择内存目标节点;
步骤71,在内存节点选取模块(22)中依据延时平衡状态S={True,False}来选取内存目标节点;若S=True,则直接选择本地内存节点作为内存分配的内存目标节点;若S=False,则选择作为内存分配的内存目标节点;
步骤72,当内存目标节点选定后,判断内存容量;
MC目标表示内存目标节点的空闲内存容量;
MC进程表示进程需要的内存容量;
若所选取的内存目标节点的空闲内存容量MC目标小于进程需要的内存容量MC进程,即MC目标<MC进程,则从H_CYCLEGQ={CYA_GQ,CYB_GQ,…,CYN_GQ}中剔除最小访存延时的内存节点;返回步骤六;
H剔除_CYCLEGQ={CYA_GQ,CYB_GQ,…,CYN_GQ}表示从H_CYCLEGQ={CYA_GQ,CYB_GQ,…,CYN_GQ}中剔除了最小访存延时的访存延时序列,简称为剔除后访存延时序列;
表示剔除后访存延时序列H剔除_CYCLEGQ={CYA_GQ,CYB_GQ,…,CYN_GQ}对应的内存节点标识序列,简称为剔除后内存节点标识序列;
再次依据H剔除_CYCLEGQ={CYA_GQ,CYB_GQ,…,CYN_GQ}中的延时顺序,得到剔除后内存节点标识序列然后,选取中的第一个内存节点,记为且将赋值给
若所选取的内存目标节点的空闲内存容量MC目标小于进程需要的内存容量MC进程,即MC目标≥MC进程,则将选取的内存目标节点输出给Linux操作系统的Buddy内存分配器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510690606.7A CN105389211B (zh) | 2015-10-22 | 2015-10-22 | 适用于numa架构的内存分配方法及延时感知-内存分配装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510690606.7A CN105389211B (zh) | 2015-10-22 | 2015-10-22 | 适用于numa架构的内存分配方法及延时感知-内存分配装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105389211A true CN105389211A (zh) | 2016-03-09 |
CN105389211B CN105389211B (zh) | 2018-10-30 |
Family
ID=55421518
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510690606.7A Expired - Fee Related CN105389211B (zh) | 2015-10-22 | 2015-10-22 | 适用于numa架构的内存分配方法及延时感知-内存分配装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105389211B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107967180A (zh) * | 2017-12-19 | 2018-04-27 | 上海交通大学 | 基于numa虚拟化环境下资源全局亲和度网络优化方法和系统 |
CN108701062A (zh) * | 2016-03-25 | 2018-10-23 | 英特尔公司 | 通过分层性能平衡来减轻负载不平衡 |
CN110597616A (zh) * | 2018-06-13 | 2019-12-20 | 华为技术有限公司 | 一种神经网络的内存分配方法及装置 |
CN111756802A (zh) * | 2020-05-26 | 2020-10-09 | 深圳大学 | 一种数据流任务在numa平台上的调度方法及系统 |
KR20210058609A (ko) * | 2019-11-13 | 2021-05-24 | 서강대학교산학협력단 | Numa 시스템에서 메모리 버스에 연결하여 사용하는 저장장치의 할당 방법 |
US11042412B2 (en) | 2017-08-07 | 2021-06-22 | Huawei Technologies Co., Ltd. | Memory allocation method and server |
WO2021140385A1 (en) * | 2020-01-07 | 2021-07-15 | International Business Machines Corporation | Managing data structures in a plurality of memory devices that are indicated to demote after initialization of data structures |
US11573709B2 (en) | 2020-01-07 | 2023-02-07 | International Business Machines Corporation | Maintaining data structures in a memory subsystem comprised of a plurality of memory devices |
US11907543B2 (en) | 2020-01-07 | 2024-02-20 | International Business Machines Corporation | Managing swappable data structures in a plurality of memory devices based on access counts of the data structures |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102439570A (zh) * | 2011-10-27 | 2012-05-02 | 华为技术有限公司 | 针对多步长非一致性内存访问numa架构的内存管理方法及装置 |
CN104375899A (zh) * | 2014-11-21 | 2015-02-25 | 北京应用物理与计算数学研究所 | 高性能计算机numa感知的线程和内存资源优化方法与系统 |
CN104850461A (zh) * | 2015-05-12 | 2015-08-19 | 华中科技大学 | 一种面向numa架构的虚拟cpu调度优化方法 |
-
2015
- 2015-10-22 CN CN201510690606.7A patent/CN105389211B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102439570A (zh) * | 2011-10-27 | 2012-05-02 | 华为技术有限公司 | 针对多步长非一致性内存访问numa架构的内存管理方法及装置 |
CN104375899A (zh) * | 2014-11-21 | 2015-02-25 | 北京应用物理与计算数学研究所 | 高性能计算机numa感知的线程和内存资源优化方法与系统 |
CN104850461A (zh) * | 2015-05-12 | 2015-08-19 | 华中科技大学 | 一种面向numa架构的虚拟cpu调度优化方法 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108701062B (zh) * | 2016-03-25 | 2022-07-29 | 英特尔公司 | 通过分层性能平衡来减轻负载不平衡 |
CN108701062A (zh) * | 2016-03-25 | 2018-10-23 | 英特尔公司 | 通过分层性能平衡来减轻负载不平衡 |
US11042412B2 (en) | 2017-08-07 | 2021-06-22 | Huawei Technologies Co., Ltd. | Memory allocation method and server |
CN107967180A (zh) * | 2017-12-19 | 2018-04-27 | 上海交通大学 | 基于numa虚拟化环境下资源全局亲和度网络优化方法和系统 |
CN107967180B (zh) * | 2017-12-19 | 2019-09-10 | 上海交通大学 | 基于numa虚拟化环境下资源全局亲和度网络优化方法和系统 |
CN110597616A (zh) * | 2018-06-13 | 2019-12-20 | 华为技术有限公司 | 一种神经网络的内存分配方法及装置 |
CN110597616B (zh) * | 2018-06-13 | 2022-07-29 | 华为技术有限公司 | 一种神经网络的内存分配方法及装置 |
KR20210058609A (ko) * | 2019-11-13 | 2021-05-24 | 서강대학교산학협력단 | Numa 시스템에서 메모리 버스에 연결하여 사용하는 저장장치의 할당 방법 |
KR102565873B1 (ko) * | 2019-11-13 | 2023-08-11 | 서강대학교 산학협력단 | Numa 시스템에서 메모리 버스에 연결하여 사용하는 저장장치의 할당 방법 |
WO2021140385A1 (en) * | 2020-01-07 | 2021-07-15 | International Business Machines Corporation | Managing data structures in a plurality of memory devices that are indicated to demote after initialization of data structures |
US11907543B2 (en) | 2020-01-07 | 2024-02-20 | International Business Machines Corporation | Managing swappable data structures in a plurality of memory devices based on access counts of the data structures |
GB2607478A (en) * | 2020-01-07 | 2022-12-07 | Ibm | Managing data structures in a plurality of memory devices that are indicated to demote after initialization of data structures |
US11573709B2 (en) | 2020-01-07 | 2023-02-07 | International Business Machines Corporation | Maintaining data structures in a memory subsystem comprised of a plurality of memory devices |
US11620055B2 (en) | 2020-01-07 | 2023-04-04 | International Business Machines Corporation | Managing data structures in a plurality of memory devices that are indicated to demote after initialization of the data structures |
CN111756802A (zh) * | 2020-05-26 | 2020-10-09 | 深圳大学 | 一种数据流任务在numa平台上的调度方法及系统 |
CN111756802B (zh) * | 2020-05-26 | 2021-09-03 | 深圳大学 | 一种数据流任务在numa平台上的调度方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105389211B (zh) | 2018-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105389211A (zh) | 一种适用于numa架构内多节点间访存延时平衡的内存分配方法及延时感知-内存分配装置 | |
Kc et al. | Scheduling hadoop jobs to meet deadlines | |
CN107038069B (zh) | Hadoop平台下动态标签匹配DLMS调度方法 | |
US8082400B1 (en) | Partitioning a memory pool among plural computing nodes | |
US7694107B2 (en) | Dynamic performance ratio proportionate distribution of threads with evenly divided workload by homogeneous algorithm to heterogeneous computing units | |
US20170235601A1 (en) | Dynamically adaptive, resource aware system and method for scheduling | |
US8910153B2 (en) | Managing virtualized accelerators using admission control, load balancing and scheduling | |
US8127300B2 (en) | Hardware based dynamic load balancing of message passing interface tasks | |
US20070162720A1 (en) | Apparatus and method for autonomically adjusting one or more computer program configuration settings when resources in a logical partition change | |
US20210191765A1 (en) | Method for static scheduling of artificial neural networks for a processor | |
Chen et al. | HAT: history-based auto-tuning MapReduce in heterogeneous environments | |
EP3040868A1 (en) | Memory resource optimization method and apparatus | |
WO2018086467A1 (zh) | 一种云环境下应用集群资源分配的方法、装置和系统 | |
CN110659278A (zh) | 基于cpu-gpu异构架构的图数据分布式处理系统 | |
US20230145437A1 (en) | Execution prediction for compute clusters with multiple cores | |
Ma et al. | vLocality: Revisiting data locality for MapReduce in virtualized clouds | |
CN108874508A (zh) | 一种云计算虚拟服务器系统负载均衡调度方法 | |
CN107423114B (zh) | 一种基于服务分类的虚拟机动态迁移方法 | |
CN109412865B (zh) | 一种虚拟网络资源分配方法、系统及电子设备 | |
CN112612613B (zh) | 用于在虚拟分布式异构环境下实现多gpu调度的方法和系统 | |
Wang et al. | A throughput driven task scheduler for improving mapreduce performance in job-intensive environments | |
Zhao et al. | Insight and reduction of MapReduce stragglers in heterogeneous environment | |
CN103955397A (zh) | 一种基于微架构感知的虚拟机调度多策略选择方法 | |
CN107341060B (zh) | 一种虚拟机内存分配方法和装置 | |
Markthub et al. | Using rcuda to reduce gpu resource-assignment fragmentation caused by job scheduler |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20210423 Address after: 100160, No. 4, building 12, No. 128, South Fourth Ring Road, Fengtai District, Beijing, China (1515-1516) Patentee after: Kaixi (Beijing) Information Technology Co.,Ltd. Address before: 100191 Haidian District, Xueyuan Road, No. 37, Patentee before: BEIHANG University |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181030 Termination date: 20211022 |