CN114442928B - 实现dram和pmem之间冷热数据迁移的方法及装置 - Google Patents
实现dram和pmem之间冷热数据迁移的方法及装置 Download PDFInfo
- Publication number
- CN114442928B CN114442928B CN202111585595.8A CN202111585595A CN114442928B CN 114442928 B CN114442928 B CN 114442928B CN 202111585595 A CN202111585595 A CN 202111585595A CN 114442928 B CN114442928 B CN 114442928B
- Authority
- CN
- China
- Prior art keywords
- node
- memory
- slow
- fast
- page
- 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.)
- Active
Links
- 230000005012 migration Effects 0.000 title claims abstract description 102
- 238000013508 migration Methods 0.000 title claims abstract description 102
- 238000000034 method Methods 0.000 title claims abstract description 29
- 230000015654 memory Effects 0.000 claims abstract description 221
- 230000007246 mechanism Effects 0.000 claims description 13
- 238000012544 monitoring process Methods 0.000 claims description 6
- 230000003247 decreasing effect Effects 0.000 claims description 5
- 230000002085 persistent effect Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000002688 persistence Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
- G06F3/0688—Non-volatile semiconductor memory arrays
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种实现DRAM和PMEM之间冷热数据迁移的方法及装置,属于内存管理技术领域,所述方法步骤:将PMEM内存和DRAM内存划分为不同的节点,并设定慢速节点和快速节点;获取各节点之间的距离,根据距离将一个慢速及快速节点划分为一个节点组;根据时间阈值在快速节点上识别冷页,以及在慢速节点上识别热页,并将冷页迁移到同一节点组内的慢速节点上,以及将热页迁移到同一节点组内的快速节点上;当进行冷热页迁移时,若目的节点内存已用完,则调整冷热页识别阈值。本发明实现内存页的冷热识别,并可将热页从PMEM迁移到DRAM,冷页从DRAM迁移到PMEM上,调整识别时间,实现冷热内存迁移趋于稳定。
Description
技术领域
本发明属于操作系统内存管理技术领域,具体涉及一种实现DRAM和PMEM之间冷热数据迁移的方法及装置。
背景技术
DRAM,是Dynamic Random Access Memory的简称,动态随机存取存储器。
PMEM,是的Persistent Memory简称,持久内存,是目前使用的一种新的内存,具有容量大,数据持久性的特点。
服务器操作系统中很多业务程序运行时需要大量的内存资源,比如大数据相关的业务,而当前DRAM内存的价格相对较高,所在很多公司都在研究如何最有效的利用有限的内存资源,比如优化现有的内存回收机制,将长时间未使用的内存进行回收。
PMEM持久内存具有容量大的特点,一根PMEM持久内存可以达到TB级别,并且Linux内核也已经支持将PMEM内存识别为普通内存,应用程序可以无感知的访问DRAM和PMEM,但现在在访问PMEM内存时还存在一个问题:PMEM内存的访问速度要比DRAM慢,但应用程序经常访问的热内存可能位于PMEM上,而不常访问的内存可能位于DRAM上,这样就会造成应用程序的性能降低。
此为现有技术的不足,因此,针对现有技术中的上述缺陷,提供一种实现DRAM和PMEM之间冷热数据迁移的方法及装置,是非常有必要的。
发明内容
针对现有技术的上述PMEM内存的访问速度要比DRAM慢,但应用程序经常访问的热内存可能位于PMEM上,而不常访问的内存可能位于DRAM上,这样就会造成应用程序的性能降低的缺陷,本发明提供一种实现DRAM和PMEM之间冷热数据迁移的方法及装置,以解决上述技术问题。
第一方面,本发明提供一种实现DRAM和PMEM之间冷热数据迁移的方法及装置,包括如下步骤:
S1.将同一内存控制器上的PMEM内存和DRAM内存划分为不同的numa节点,并设定PMEM内存对应numa节点为慢速节点,以及设定DRAM内存对应numa节点为快速节点;
S2.获取各numa节点之间的距离,并将距离最近的一个慢速节点及快速节点划分为一个节点组;
S3.根据第一时间阈值在快速节点上识别冷页,以及根据第二时间阈值在慢速节点上识别热页,并将快速节点上的冷页迁移到同一节点组内的慢速节点上,以及将慢速节点上的热页迁移到同一节点组内的快速节点上;
S4.当进行冷页迁移时,若节点组内慢速节点已使用完,则增大该节点组内第一时间阈值,减小该节点组内的第二时间阈值,而当进行热页迁移时,节点组内快速节点已使用完,则减小该节点组内第一时间阈值,增大该节点组内的第二时间阈值。
进一步地,步骤S1具体步骤如下:
S11.获取操作系统的CPU数目,为每个CPU对应内存控制器上的PMEM内存和DRAM内存创建不同的numa节点;
S12.将PMEM内存对应numa节点划分为慢速节点,而将DRAM内存对应numa节点划分为快速节点。慢速节点和快速节点的划分,为后续内存页迁移做准备。
进一步地,步骤S2具体步骤如下:
S21.获取各numa节点之间的距离;
S22.定位一个慢速节点,而查找numa节点中距离该定位慢速节点最近的快速节点,将该慢速节点与快速节点设定为一个节点组;
S23.对未划分节点组的numa节点重复步骤S22,直至各numa节点划分节点组完成。节点组的划分保证进行内存页迁移的个快速节点与慢速节点距离最近,保证迁移速度。
进一步地,步骤S3具体步骤如下:
S31.linux内核使用空闲页跟踪机制监控快速节点和慢速节点中所有内存页的访问频率;
S32.为快速节点中内存页的访问设置第一时间阈值,为慢速节点中内存页的访问设置第二时间阈值,其中第一时间阈值大于第二时间阈值;
S33.将快速节点中超过第一时间阈值未访问的内存页设置为冷页,而将慢速节点中超过第二时间阈值未访问的内存页设置为热页;
S34.linux内核调用页迁移接口将冷页迁移到同一节点组内的慢速节点上,以及将热页迁移到同一节点组内的快速节点上。Linux内核的空闲页跟踪机制可以通过位图设置每个内存页的状态为空闲,在指定时间再次检查页的状态,如果空闲状态被清除说明被访问过,如果还处于空闲状态说明未访问过。
进一步地,步骤S31具体步骤如下:
S311.linux内核分配内存时,判断快速节点是否使用完毕;
若是,使用慢速节点分配内存;
若否,使用快速节点分配内存;
S312.为快速节点和慢速节点创建页挑选线程,并设置页挑选线程选出设定时间未使用的LRU页,并通过空闲页跟踪机制将LRU页设置为空闲状态。页挑选线程根据快速节点或慢速节点结合页标志挑选LRU页。
进一步地,步骤S33具体步骤如下:
S331.将快速节点上超过第一时间阈值仍处于空闲状态的内存页,设置为冷页;
S332.将慢速节点上第二时间阈值后不再处于空闲状态的内存页,设置为热页。被使用过的即为热页,一直未被使用的即为冷页。
进一步地,步骤S34具体步骤如下:
S341.获取冷页待迁移的同一节点组内的目的慢速节点,并将冷页及目的慢速节点通知linux内核;
S342.获取热页待迁移的同一节点组内的目的快速节点,并将热页及目的快速节点通知linux内核;
S343.linux内核调用页迁移接口将冷页迁移到目的慢速节点上,以及将热页迁移到目的快速节点上。进行冷热页迁移之前,需要将要迁移的内存页及目的节点通知页迁移接口。
进一步地,步骤S4具体步骤如下:
S41.当进行冷页迁移时,判断节点组内慢速节点的内存是否使用完;
若是,进入步骤S42;
若否,进行对应冷页迁移,返回步骤S3;
S42.本次冷页不进行迁移,根据预设幅度将该节点组内冷页所在的快速节点的第一时间阈值进行增大,以及根据预设幅度将该节点组内的慢速节点的第二时间阈值进行减小,返回步骤S3;
S43.当进行热页迁移时,判断节点组内快速节点的内存是否使用完;
若是,进入步骤S44;
若否,进行对应热页迁移,返回步骤S3;
S44.本次热页不进行迁移,根据预设幅度将该节点组内热页所在的慢速节点的第二时间阈值进行增大,以及根据预设幅度将该节点组内的快速节点的第一时间阈值进行减小,返回步骤S3。冷页迁移时,慢速节点空间不足,停止本次迁移,并通过增大冷页识别时间将冷页的识别频率变小,同时,增大热页往冷页迁移的频率,反之,热页迁移时,快速节点空间不足,则停止本次迁移,并通过热页识别时间将热页的识别频率变小,同时增大冷页往热页迁移的频率。
第二方面,本发明提供一种实现DRAM和PMEM之间冷热数据迁移的装置,包括:
节点划分模块,用于将同一内存控制器上的PMEM内存和DRAM内存划分为不同的numa节点,并设定PMEM内存对应numa节点为慢速节点,以及设定DRAM内存对应numa节点为快速节点;
节点组设置模块,用于获取各numa节点之间的距离,并将距离最近的一个慢速节点及快速节点划分为一个节点组;
冷热页迁移模块,用于根据第一时间阈值在快速节点上识别冷页,以及根据第二时间阈值在慢速节点上识别热页,并将快速节点上的冷页迁移到同一节点组内的慢速节点上,以及将慢速节点上的热页迁移到同一节点组内的快速节点上;
时间阈值调整模块,用于当进行冷页迁移时,若节点组内慢速节点已使用完,则增大该节点组内第一时间阈值,减小该节点组内的第二时间阈值,而当进行热页迁移时,节点组内快速节点已使用完,则减小该节点组内第一时间阈值,增大该节点组内的第二时间阈值。
进一步地,节点划分模块包括:
numa节点创建单元,用于获取操作系统的CPU数目,为每个CPU对应内存控制器上的PMEM内存和DRAM内存创建不同的numa节点;
慢速节点及快速节点划分单元,用于将PMEM内存对应numa节点划分为慢速节点,而将DRAM内存对应numa节点划分为快速节点;
节点组设置模块包括:
节点距离获取单元,用于获取各numa节点之间的距离;
节点组设置单元,用于定位一个慢速节点,而查找numa节点中距离该定位慢速节点最近的快速节点,将该慢速节点与快速节点设定为一个节点组;
节点组划分完成单元,对未划分节点组的numa节点重复节点组设置单元工作,直至各numa节点划分节点组完成;
冷热页迁移模块包括:
访问频率监控单元,用于使用空闲页跟踪机制监控快速节点和慢速节点中所有内存页的访问频率;
时间阈值设置单元,用于为快速节点中内存页的访问设置第一时间阈值,为慢速节点中内存页的访问设置第二时间阈值,其中第一时间阈值大于第二时间阈值;
冷热页设置单元,用于将快速节点中超过第一时间阈值未访问的内存页设置为冷页,而将慢速节点中超过第二时间阈值未访问的内存页设置为热页;
冷热页迁移单元,用于调用页迁移接口将冷页迁移到同一节点组内的慢速节点上,以及将热页迁移到同一节点组内的快速节点上;
时间阈值调整模块包括:
慢速节点内存判断单元,用于当进行冷页迁移时,判断节点组内慢速节点的内存是否使用完;
冷页迁移单元,用于当慢速节点的内存未使用完毕时,进行对应冷页迁移;
时间阈值第一调整单元,用于当慢速节点的内存使用完毕时,本次冷页不进行迁移,根据预设幅度将该节点组内冷页所在的快速节点的第一时间阈值进行增大,以及根据预设幅度将该节点组内的慢速节点的第二时间阈值进行减小;
快速节点内存判断单元,用于当进行热页迁移时,判断节点组内快速节点的内存是否使用完;
热页迁移单元,用于当快速节点的内存未使用完毕时,进行对应热页迁移;
时间阈值第二调整单元,用于当快速节点的内存使用完毕时,本次热页不进行迁移,根据预设幅度将该节点组内热页所在的慢速节点的第二时间阈值进行增大,以及根据预设幅度将该节点组内的快速节点的第一时间阈值进行减小。
本发明的有益效果在于:
本发明提供的实现DRAM和PMEM之间冷热数据迁移的方法及装置,通过将系统DRAM和PMEM划分为不同的快速节点和慢速节点,并且做到了内存页的冷热识别,从而可以将热页从PMEM迁移到DRAM,将冷页从DRAM迁移到PMEM上;还实现了冷热页识别时间阈值的自动调整,可以根据快速节点和慢速节点之间的内存迁移情况自动调整阈值,让冷热内存的迁移最终趋于稳定。
本发明可以有效提升把PMEM内存当成普通内存使用时的内存访问性能,通过冷热页的识别和迁移,能够将系统经常访问的内存保持在DRAM、系统不常访问的内存保持在PMEM,充分利用PMEM的大容量和读写速度高的特点。
此外,本发明设计原理可靠,结构简单,具有非常广泛的应用前景。
由此可见,本发明与现有技术相比,具有突出的实质性特点和显著的进步,其实施的有益效果也是显而易见的。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明的实现DRAM和PMEM之间冷热数据迁移的方法实施例1流程示意图。
图2是本发明的实现DRAM和PMEM之间冷热数据迁移的方法实施例2流程示意图。
图3是本发明的实现DRAM和PMEM之间冷热数据迁移的装置示意图。
图中,1-节点划分模块;1.1-numa节点创建单元;1.2-慢速节点及快速节点划分单元;2-节点组设置模块;2.1-节点距离获取单元;2.2-节点组设置单元;2.3-节点组划分完成单元;3-冷热页迁移模块;3.1-访问频率监控单元;3.2-时间阈值设置单元;3.3-冷热页设置单元;3.4-冷热页迁移单元;4-时间阈值调整模块;4.1-慢速节点内存判断单元;4.2-冷页迁移单元;4.3-时间阈值第一调整单元;4.4-快速节点内存判断单元;4.5-热页迁移单元;4.6-时间阈值第二调整单元。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
NUMA,是Non-Uniform Memory Access的简称,非一致性内存访问。
LRU,是Least Recently Used的简称,最近最少使用,是一种常用的页面置换算法,选择最近最久未使用的页面予以淘汰。
实施例1:
如图1所示,本发明提供一种实现DRAM和PMEM之间冷热数据迁移的方法,包括如下步骤:
S1.将同一内存控制器上的PMEM内存和DRAM内存划分为不同的numa节点,并设定PMEM内存对应numa节点为慢速节点,以及设定DRAM内存对应numa节点为快速节点;
S2.获取各numa节点之间的距离,并将距离最近的一个慢速节点及快速节点划分为一个节点组;
S3.根据第一时间阈值在快速节点上识别冷页,以及根据第二时间阈值在慢速节点上识别热页,并将快速节点上的冷页迁移到同一节点组内的慢速节点上,以及将慢速节点上的热页迁移到同一节点组内的快速节点上;
S4.当进行冷页迁移时,若节点组内慢速节点已使用完,则增大该节点组内第一时间阈值,减小该节点组内的第二时间阈值,而当进行热页迁移时,节点组内快速节点已使用完,则减小该节点组内第一时间阈值,增大该节点组内的第二时间阈值。
实施例2:
如图2所示,本发明提供一种实现DRAM和PMEM之间冷热数据迁移的方法,包括如下步骤:
S1.将同一内存控制器上的PMEM内存和DRAM内存划分为不同的numa节点,并设定PMEM内存对应numa节点为慢速节点,以及设定DRAM内存对应numa节点为快速节点;具体步骤如下:
S11.获取操作系统的CPU数目,为每个CPU对应内存控制器上的PMEM内存和DRAM内存创建不同的numa节点;
S12.将PMEM内存对应numa节点划分为慢速节点,而将DRAM内存对应numa节点划分为快速节点;
S2.获取各numa节点之间的距离,并将距离最近的一个慢速节点及快速节点划分为一个节点组;具体步骤如下:
S21.获取各numa节点之间的距离;
S22.定位一个慢速节点,而查找numa节点中距离该定位慢速节点最近的快速节点,将该慢速节点与快速节点设定为一个节点组;
S23.对未划分节点组的numa节点重复步骤S22,直至各numa节点划分节点组完成;
S3.根据第一时间阈值在快速节点上识别冷页,以及根据第二时间阈值在慢速节点上识别热页,并将快速节点上的冷页迁移到同一节点组内的慢速节点上,以及将慢速节点上的热页迁移到同一节点组内的快速节点上;具体步骤如下:
S31.linux内核使用空闲页跟踪机制监控快速节点和慢速节点中所有内存页的访问频率;具体步骤如下:
S311.linux内核分配内存时,判断快速希哈节点是否回滚使用完毕;
若是,使用慢速节点分配内存;
若否,使用快速节点分配内存;
S312.为快速节点和慢速节点创建页挑选线程,并设置页挑选线程选出设定时间未使用的LRU页,并通过空闲页跟踪机制将LRU页设置为空闲状态;
S32.为快速节点中内存页的访问设置第一时间阈值,为慢速节点中内存页的访问设置第二时间阈值,其中第一时间阈值大于第二时间阈值;
S33.将快速节点中超过第一时间阈值未访问的内存页设置为冷页,而将慢速节点中超过第二时间阈值未访问的内存页设置为热页;具体步骤如下:
S331.将快速节点上超过第一时间阈值仍处于空闲状态的内存页,设置为冷页;
S332.将慢速节点上第二时间阈值后不再处于空闲状态的内存页,设置为热页;
S34.linux内核调用页迁移接口将冷页迁移到同一节点组内的慢速节点上,以及将热页迁移到同一节点组内的快速节点上;具体步骤如下:
S341.获取冷页待迁移的同一节点组内的目的慢速节点,并将冷页及目的慢速节点通知linux内核;
S342.获取热页待迁移的同一节点组内的目的快速节点,并将热页及目的快速节点通知linux内核;
S343.linux内核调用页迁移接口将冷页迁移到目的慢速节点上,以及
将热页迁移到目的快速节点上;
S4.当进行冷页迁移时,若节点组内慢速节点已使用完,则增大该节点组内第一时间阈值,减小该节点组内的第二时间阈值,而当进行热页迁移时,节点组内快速节点已使用完,则减小该节点组内第一时间阈值,增大该节点组内的第二时间阈值;具体步骤如下:
S41.当进行冷页迁移时,判断节点组内慢速节点的内存是否使用完;
若是,进入步骤S42;
若否,进行对应冷页迁移,返回步骤S3;
S42.本次冷页不进行迁移,根据预设幅度将该节点组内冷页所在的快速节点的第一时间阈值进行增大,以及根据预设幅度将该节点组内的慢速节点的第二时间阈值进行减小,返回步骤S3;
S43.当进行热页迁移时,判断节点组内快速节点的内存是否使用完;
若是,进入步骤S44;
若否,进行对应热页迁移,返回步骤S3;
S44.本次热页不进行迁移,根据预设幅度将该节点组内热页所在的慢速节点的第二时间阈值进行增大,以及根据预设幅度将该节点组内的快速节点的第一时间阈值进行减小,返回步骤S3。
上述实施例2中,PMEM内存和普通的DRAM内存一样都需要插在内存插槽上,系统在初始化时便会将同一内存控制器上的PMEM内存和DRAM内存划分为不同的numa节点,并且规划好不同的numa节点距离;
以当前系统有两颗CPU为例,每颗CPU对应的内存插槽上都插着DRAM和PMEM两种内存介质,系统初始化后会创建node0-node3四个numa节点,其中node0、node1中的内存为DRAM内存,称为快速节点,node2、node3中的内存为PMEM内存,称为慢速节点;其中node0与node2距离最近,将node0与node2分为一个节点组,将node0中的冷页迁移到node2中,将node2中的热页迁移到node0中;同理node1和node3类似,node1与node3距离最近,将node1与node3分为一个节点组,将node1中的冷页迁移到node3中,将node3中的热页迁移到node1中;
Linux内核的空闲页跟踪机制可以通过位图设置每个内存页的状态为空闲,在指定时间再次检查内存页的状态,如果空闲状态被清除说明被访问过,如果还处于空闲状态说明未访问过;
在默认的内存访问策略下,分配内存时会首先从快速节点分配,快速节点内存用完后会在慢速节点分配内存;为每个快速节点和慢速节点创建一个线程,线程会根据节点所管理的物理内存页并且结合页挑选标志/proc/kpageflags挑选出哪些物理页是属于LRU页,将这些页通过空闲页跟踪机制设置为空闲状态;
设定T1为第一时间阈值,作为为冷页识别阈值,设定T2为第二时间阈值,T1、T2单位为秒,作为热页识别阈值;
如果是快速节点,则经过T1后再次判断哪些内存页的状态还处于空闲状态,则这些内存页将被识别为冷页;
如果是慢速节点,则经过T2后再次判断哪些内存页的状态不再处于空闲状态,则这些内存页将被识别为热页;
第一时间阈值T1始终大于第二时间阈值,如设定T1>T2+2;
冷热页的识别是一个循环过程,即每隔T1/T2秒会判断当前节点上的内存页冷热情况;
在快速节点上被识别为冷页的内存将被迁移到对应的慢速节点上,在慢速节点上被识别为热页的内存将被迁移到对应的快速节点上,将需要迁移的页和迁移的目的节点通知linux内核,linux内核调用页迁移接口进行内存页迁移操作;
当慢速节点上的内存页需要迁移到快速节点上时,首先会判断快速节点上的内存是否用完,如果已用完,则本次不再进行迁移,同时会将快速节点上的冷页识别阈值第一时间阈值调整为T1=T1-1,慢速节点上的热页识别阈值调整为第二识别阈值T2=T2+1;
以慢速节点的热页识别阈值第二时间阈值T2=10,快速节点的冷页识别阈值第一时间阈值T1=50为例;当慢速节点上识别到1024个热页需要迁移到快速节点上,但快速节点上的内存页已用完,此时将不再迁移这1024个热页,但同时会将第一时间阈值T1调整为49,将第二时间阈值T2为11,下次慢速节点上识别到热页后快速节点还是没有空闲内存,则再次调整第一时间阈值T1为48,调整第二时间阈值T2为12,直到第一时间阈值T1、第二时间阈值T2调整为某值时在快速节点上识别到冷页并迁移到慢速节点上,此时慢速节点上的热页便可迁移到快速节点上;
当快速节点上的内存需要迁移到慢速节点上时,首先会判断慢速节点上的内存是否用完,如果已用完,则本次不再进行迁移,但同时会将快速节点上的冷页识别阈值第一时间阈值调整为T1=T1+1、慢速节点上的热页识别阈值第二时间阈值调整为T2=T2-1;
通过上述冷热页时间阈值的自动调整,经过一段时间的运行后,冷热页的识别会趋于稳定,比如最终快速节点上的内存都会在15秒内被访问,慢速节点上的内存页都在45秒内未被访问。
实施例3:
如图3所示,本发明提供一种实现DRAM和PMEM之间冷热数据迁移的装置,包括:
节点划分模块1,用于将同一内存控制器上的PMEM内存和DRAM内存划分为不同的numa节点,并设定PMEM内存对应numa节点为慢速节点,以及设定DRAM内存对应numa节点为快速节点;节点划分模块1包括:
numa节点创建单元1.1,用于获取操作系统的CPU数目,为每个CPU对应内存控制器上的PMEM内存和DRAM内存创建不同的numa节点;
慢速节点及快速节点划分单元1.2,用于将PMEM内存对应numa节点划分为慢速节点,而将DRAM内存对应numa节点划分为快速节点;
节点组设置模块2,用于获取各numa节点之间的距离,并将距离最近的一个慢速节点及快速节点划分为一个节点组;节点组设置模块2包括:
节点距离获取单元2.1,用于获取各numa节点之间的距离;
节点组设置单元2.2,用于定位一个慢速节点,而查找numa节点中距离该定位慢速节点最近的快速节点,将该慢速节点与快速节点设定为一个节点组;
节点组划分完成单元2.3,对未划分节点组的numa节点重复节点组设置单元2.2工作,直至各numa节点划分节点组完成;
冷热页迁移模块3,用于根据第一时间阈值在快速节点上识别冷页,以及根据第二时间阈值在慢速节点上识别热页,并将快速节点上的冷页迁移到同一节点组内的慢速节点上,以及将慢速节点上的热页迁移到同一节点组内的快速节点上;冷热页迁移模块3包括:
访问频率监控单元3.1,用于使用空闲页跟踪机制监控快速节点和慢速节点中所有内存页的访问频率;
时间阈值设置单元3.2,用于为快速节点中内存页的访问设置第一时间阈值,为慢速节点中内存页的访问设置第二时间阈值,其中第一时间阈值大于第二时间阈值;
冷热页设置单元3.3,用于将快速节点中超过第一时间阈值未访问的内存页设置为冷页,而将慢速节点中超过第二时间阈值未访问的内存页设置为热页;
冷热页迁移单元3.4,用于调用页迁移接口将冷页迁移到同一节点组内的慢速节点上,以及将热页迁移到同一节点组内的快速节点上;
时间阈值调整模块4,用于当进行冷页迁移时,若节点组内慢速节点已使用完,则增大该节点组内第一时间阈值,减小该节点组内的第二时间阈值,而当进行热页迁移时,节点组内快速节点已使用完,则减小该节点组内第一时间阈值,增大该节点组内的第二时间阈值;时间阈值调整模块4包括:
慢速节点内存判断单元4.1,用于当进行冷页迁移时,判断节点组内慢速节点的内存是否使用完;
冷页迁移单元4.2,用于当慢速节点的内存未使用完毕时,进行对应冷页迁移;
时间阈值第一调整单元4.3,用于当慢速节点的内存使用完毕时,本次冷页不进行迁移,根据预设幅度将该节点组内冷页所在的快速节点的第一时间阈值进行增大,以及根据预设幅度将该节点组内的慢速节点的第二时间阈值进行减小;
快速节点内存判断单元4.4,用于当进行热页迁移时,判断节点组内快速节点的内存是否使用完;
热页迁移单元4.5,用于当快速节点的内存未使用完毕时,进行对应热页迁移;
时间阈值第二调整单元4.6,用于当快速节点的内存使用完毕时,本次热页不进行迁移,根据预设幅度将该节点组内热页所在的慢速节点的第二时间阈值进行增大,以及根据预设幅度将该节点组内的快速节点的第一时间阈值进行减小。
尽管通过参考附图并结合优选实施例的方式对本发明进行了详细描述,但本发明并不限于此。在不脱离本发明的精神和实质的前提下,本领域普通技术人员可以对本发明的实施例进行各种等效的修改或替换,而这些修改或替换都应在本发明的涵盖范围内/任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (9)
1.一种实现DRAM和PMEM之间冷热数据迁移的方法,其特征在于,包括如下步骤:
S1.将同一内存控制器上的PMEM内存和DRAM内存划分为不同的numa节点,并设定PMEM内存对应numa节点为慢速节点,以及设定DRAM内存对应numa节点为快速节点;
S2.获取各numa节点之间的距离,并将距离最近的一个慢速节点及快速节点划分为一个节点组;
S3.根据第一时间阈值在快速节点上识别冷页,以及根据第二时间阈值在慢速节点上识别热页,并将快速节点上的冷页迁移到同一节点组内的慢速节点上,以及将慢速节点上的热页迁移到同一节点组内的快速节点上;步骤S3具体步骤如下:
S31.linux内核使用空闲页跟踪机制监控快速节点和慢速节点中所有内存页的访问频率;
S32.为快速节点中内存页的访问设置第一时间阈值,为慢速节点中内存页的访问设置第二时间阈值,其中第一时间阈值大于第二时间阈值;
S33.将快速节点中超过第一时间阈值未访问的内存页设置为冷页,而将慢速节点中超过第二时间阈值访问到的内存页设置为热页;
S34.linux内核调用页迁移接口将冷页迁移到同一节点组内的慢速节点上,以及将热页迁移到同一节点组内的快速节点上;
S4.当进行冷页迁移时,若节点组内慢速节点已使用完,则增大该节点组内第一时间阈值,减小该节点组内的第二时间阈值,而当进行热页迁移时,节点组内快速节点已使用完,则减小该节点组内第一时间阈值,增大该节点组内的第二时间阈值。
2.如权利要求1所述的实现DRAM和PMEM之间冷热数据迁移的方法,其特征在于,步骤S1具体步骤如下:
S11.获取操作系统的CPU数目,为每个CPU对应内存控制器上的PMEM内存和DRAM内存创建不同的numa节点;
S12.将PMEM内存对应numa节点划分为慢速节点,而将DRAM内存对应numa节点划分为快速节点。
3.如权利要求1所述的实现DRAM和PMEM之间冷热数据迁移的方法,其特征在于,步骤S2具体步骤如下:
S21.获取各numa节点之间的距离;
S22.定位一个慢速节点,而查找numa节点中距离该定位慢速节点最近的快速节点,将该慢速节点与快速节点设定为一个节点组;
S23.对未划分节点组的numa节点重复步骤S22,直至各numa节点划分节点组完成。
4.如权利要求1所述的实现DRAM和PMEM之间冷热数据迁移的方法,其特征在于,步骤S31具体步骤如下:
S311.linux内核分配内存时,判断快速节点是否使用完毕;
若是,使用慢速节点分配内存;
若否,使用快速节点分配内存;
S312.为快速节点和慢速节点创建页挑选线程,并设置页挑选线程选出设定时间未使用的LRU页,并通过空闲页跟踪机制将LRU页设置为空闲状态。
5.如权利要求4所述的实现DRAM和PMEM之间冷热数据迁移的方法,其特征在于,步骤S33具体步骤如下:
S331.将快速节点上超过第一时间阈值仍处于空闲状态的内存页,设置为冷页;
S332.将慢速节点上第二时间阈值后不再处于空闲状态的内存页,设置为热页。
6.如权利要求4所述的实现DRAM和PMEM之间冷热数据迁移的方法,其特征在于,步骤S34具体步骤如下:
S341.获取冷页待迁移的同一节点组内的目的慢速节点,并将冷页及目的慢速节点通知linux内核;
S342.获取热页待迁移的同一节点组内的目的快速节点,并将热页及目的快速节点通知linux内核;
S343.linux内核调用页迁移接口将冷页迁移到目的慢速节点上,以及将热页迁移到目的快速节点上。
7.如权利要求1所述的实现DRAM和PMEM之间冷热数据迁移的方法,其特征在于,步骤S4具体步骤如下:
S41.当进行冷页迁移时,判断节点组内慢速节点的内存是否使用完;
若是,进入步骤S42;
若否,进行对应冷页迁移,返回步骤S3;
S42.本次冷页不进行迁移,根据预设幅度将该节点组内冷页所在的快速节点的第一时间阈值进行增大,以及根据预设幅度将该节点组内的慢速节点的第二时间阈值进行减小,返回步骤S3;
S43.当进行热页迁移时,判断节点组内快速节点的内存是否使用完;
若是,进入步骤S44;
若否,进行对应热页迁移,返回步骤S3;
S44.本次热页不进行迁移,根据预设幅度将该节点组内热页所在的慢速节点的第二时间阈值进行增大,以及根据预设幅度将该节点组内的快速节点的第一时间阈值进行减小,返回步骤S3。
8.一种实现DRAM和PMEM之间冷热数据迁移的装置,其特征在于,包括:
节点划分模块(1),用于将同一内存控制器上的PMEM内存和DRAM内存划分为不同的numa节点,并设定PMEM内存对应numa节点为慢速节点,以及设定DRAM内存对应numa节点为快速节点;
节点组设置模块(2),用于获取各numa节点之间的距离,并将距离最近的一个慢速节点及快速节点划分为一个节点组;
冷热页迁移模块(3),用于根据第一时间阈值在快速节点上识别冷页,以及根据第二时间阈值在慢速节点上识别热页,并将快速节点上的冷页迁移到同一节点组内的慢速节点上,以及将慢速节点上的热页迁移到同一节点组内的快速节点上;冷热页迁移模块(3)包括:
访问频率监控单元(3.1),用于使用空闲页跟踪机制监控快速节点和慢速节点中所有内存页的访问频率;
时间阈值设置单元(3.2),用于为快速节点中内存页的访问设置第一时间阈值,为慢速节点中内存页的访问设置第二时间阈值,其中第一时间阈值大于第二时间阈值;
冷热页设置单元(3.3),用于将快速节点中超过第一时间阈值未访问的内存页设置为冷页,而将慢速节点中超过第二时间阈值访问到的内存页设置为热页;
冷热页迁移单元(3.4),用于调用页迁移接口将冷页迁移到同一节点组内的慢速节点上,以及将热页迁移到同一节点组内的快速节点上;
时间阈值调整模块(4),用于当进行冷页迁移时,若节点组内慢速节点已使用完,则增大该节点组内第一时间阈值,减小该节点组内的第二时间阈值,而当进行热页迁移时,节点组内快速节点已使用完,则减小该节点组内第一时间阈值,增大该节点组内的第二时间阈值。
9.如权利要求8所述的实现DRAM和PMEM之间冷热数据迁移的装置,其特征在于,节点划分模块(1)包括:
numa节点创建单元(1.1),用于获取操作系统的CPU数目,为每个CPU对应内存控制器上的PMEM内存和DRAM内存创建不同的numa节点;
慢速节点及快速节点划分单元(1.2),用于将PMEM内存对应numa节点划分为慢速节点,而将DRAM内存对应numa节点划分为快速节点;
节点组设置模块(2)包括:
节点距离获取单元(2.1),用于获取各numa节点之间的距离;
节点组设置单元(2.2),用于定位一个慢速节点,而查找numa节点中距离该定位慢速节点最近的快速节点,将该慢速节点与快速节点设定为一个节点组;
节点组划分完成单元(2.3),对未划分节点组的numa节点重复节点组设置单元(2.2)工作,直至各numa节点划分节点组完成;
时间阈值调整模块(4)包括:
慢速节点内存判断单元(4.1),用于当进行冷页迁移时,判断节点组内慢速节点的内存是否使用完;
冷页迁移单元(4.2),用于当慢速节点的内存未使用完毕时,进行对应冷页迁移;
时间阈值第一调整单元(4.3),用于当慢速节点的内存使用完毕时,本次冷页不进行迁移,根据预设幅度将该节点组内冷页所在的快速节点的第一时间阈值进行增大,以及根据预设幅度将该节点组内的慢速节点的第二时间阈值进行减小;
快速节点内存判断单元(4.4),用于当进行热页迁移时,判断节点组内快速节点的内存是否使用完;
热页迁移单元(4.5),用于当快速节点的内存未使用完毕时,进行对应热页迁移;
时间阈值第二调整单元(4.6),用于当快速节点的内存使用完毕时,本次热页不进行迁移,根据预设幅度将该节点组内热页所在的慢速节点的第二时间阈值进行增大,以及根据预设幅度将该节点组内的快速节点的第一时间阈值进行减小。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111585595.8A CN114442928B (zh) | 2021-12-23 | 2021-12-23 | 实现dram和pmem之间冷热数据迁移的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111585595.8A CN114442928B (zh) | 2021-12-23 | 2021-12-23 | 实现dram和pmem之间冷热数据迁移的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114442928A CN114442928A (zh) | 2022-05-06 |
CN114442928B true CN114442928B (zh) | 2023-08-08 |
Family
ID=81363879
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111585595.8A Active CN114442928B (zh) | 2021-12-23 | 2021-12-23 | 实现dram和pmem之间冷热数据迁移的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114442928B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115080264A (zh) * | 2022-05-18 | 2022-09-20 | 江苏华存电子科技有限公司 | 一种基于内存划分技术的共享内存优化方法及系统 |
CN118152303A (zh) * | 2022-11-04 | 2024-06-07 | 超聚变数字技术有限公司 | 内存管理方法及计算设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104268003A (zh) * | 2014-09-30 | 2015-01-07 | 南京理工大学 | 一种适用于虚拟机动态迁移的内存状态迁移方法 |
CN106354543A (zh) * | 2016-08-11 | 2017-01-25 | 上海交通大学 | 一种基于虚拟机和宿主机内存地址转换的numa内存迁页方法 |
CN110134492A (zh) * | 2019-04-18 | 2019-08-16 | 华中科技大学 | 一种异构内存虚拟机不停机的内存页面迁移系统 |
CN112714906A (zh) * | 2018-09-28 | 2021-04-27 | 英特尔公司 | 用以使用dram来作为用于高效云应用的慢速可按字节寻址存储器的缓存的方法和装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210157647A1 (en) * | 2019-11-25 | 2021-05-27 | Alibaba Group Holding Limited | Numa system and method of migrating pages in the system |
-
2021
- 2021-12-23 CN CN202111585595.8A patent/CN114442928B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104268003A (zh) * | 2014-09-30 | 2015-01-07 | 南京理工大学 | 一种适用于虚拟机动态迁移的内存状态迁移方法 |
CN106354543A (zh) * | 2016-08-11 | 2017-01-25 | 上海交通大学 | 一种基于虚拟机和宿主机内存地址转换的numa内存迁页方法 |
CN112714906A (zh) * | 2018-09-28 | 2021-04-27 | 英特尔公司 | 用以使用dram来作为用于高效云应用的慢速可按字节寻址存储器的缓存的方法和装置 |
CN110134492A (zh) * | 2019-04-18 | 2019-08-16 | 华中科技大学 | 一种异构内存虚拟机不停机的内存页面迁移系统 |
Also Published As
Publication number | Publication date |
---|---|
CN114442928A (zh) | 2022-05-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114442928B (zh) | 实现dram和pmem之间冷热数据迁移的方法及装置 | |
US20180067961A1 (en) | Adaptive caching replacement manager with dynamic updating granulates and partitions for shared flash-based storage system | |
CN113342615B (zh) | 命令监控方法、装置、控制器、系统、设备和存储介质 | |
EP2645259A1 (en) | Method, device and system for caching data in multi-node system | |
KR20160148700A (ko) | 다이나믹 랜덤 액세스 메모리(dram)를 리프레시하기 위한 방법, 장치 및 시스템 | |
CN107969153B (zh) | 一种资源分配方法、装置及numa系统 | |
CN104679669A (zh) | 高速缓存cache存储器系统及访问缓存行cache line的方法 | |
US10198180B2 (en) | Method and apparatus for managing storage device | |
CN106293953B9 (zh) | 一种访问共享显示数据的方法及系统 | |
CN112256433B (zh) | 基于Kafka集群的分区迁移方法和装置 | |
CN117056087B (zh) | 云数据中心混合内存优化方法、计算机装置及存储介质 | |
CN103455284A (zh) | 一种读写数据的方法及装置 | |
CN112269661A (zh) | 基于Kafka集群的分区迁移方法和装置 | |
CN114389955A (zh) | 嵌入式平台异构资源池化管理方法 | |
CN115421924A (zh) | 一种内存分配方法、装置及设备 | |
CN102122268B (zh) | 一种虚拟机内存分配访问方法、装置和系统 | |
CN111240901A (zh) | 分布式块存储系统的节点动态扩展系统、方法及设备 | |
CN113961302A (zh) | 资源分配方法、装置、电子设备及存储介质 | |
CN110018797B (zh) | 一种数据迁移方法、装置、设备及可读存储介质 | |
CN116541553A (zh) | 一种视频调度方法、装置、设备及可读存储介质 | |
CN115905049A (zh) | 一种基于傲腾内存的冷热内存分级迁移方法 | |
CN115509962A (zh) | 一种多级缓存管理方法、装置、设备及可读存储介质 | |
CN105095105A (zh) | 一种Cache分区的方法及装置 | |
CN110865768A (zh) | 写缓存资源分配方法、装置、设备以及存储介质 | |
CN116644006B (zh) | 一种内存页面管理方法、系统、装置、设备及计算机介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |