CN116521608A - 数据迁移方法及计算设备 - Google Patents
数据迁移方法及计算设备 Download PDFInfo
- Publication number
- CN116521608A CN116521608A CN202310279463.5A CN202310279463A CN116521608A CN 116521608 A CN116521608 A CN 116521608A CN 202310279463 A CN202310279463 A CN 202310279463A CN 116521608 A CN116521608 A CN 116521608A
- Authority
- CN
- China
- Prior art keywords
- memory
- data migration
- processor
- data
- delay
- 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.)
- Pending
Links
- 238000013508 migration Methods 0.000 title claims abstract description 342
- 230000005012 migration Effects 0.000 title claims abstract description 342
- 238000000034 method Methods 0.000 title claims abstract description 83
- 230000015654 memory Effects 0.000 claims abstract description 844
- 238000013507 mapping Methods 0.000 claims abstract description 108
- 230000004044 response Effects 0.000 claims abstract description 10
- 230000001934 delay Effects 0.000 claims description 28
- 238000006243 chemical reaction Methods 0.000 claims description 5
- 230000008569 process Effects 0.000 abstract description 16
- 238000010586 diagram Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 10
- 238000004364 calculation method Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000004458 analytical method Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- WVCHIGAIXREVNS-UHFFFAOYSA-N 2-hydroxy-1,4-naphthoquinone Chemical compound C1=CC=C2C(O)=CC(=O)C(=O)C2=C1 WVCHIGAIXREVNS-UHFFFAOYSA-N 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/167—Interprocessor communication using a common memory, e.g. mailbox
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
- G06F15/163—Interprocessor communication
- G06F15/17—Interprocessor communication using an input/output type connection, e.g. channel, I/O port
-
- 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/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- 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/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种数据迁移方法及计算设备,涉及计算设备技术领域,可以提高应用程序的内存访问性能。该方法应用于第一处理器,第一处理器为计算设备包括的多个处理器中的其中一个,多个处理器中每一个处理连接至少一个内存;第一处理器所访问的第一内存中包括待迁移数据;该方法包括:响应于数据迁移指令,从数据迁移映射表中确定第二内存;数据迁移映射表包括第一内存对应的内存集合,第一内存对应的内存集合基于各个内存的综合访问时延得到,各个内存的综合访问时延是根据第一处理器至该内存的真实访问时延,以及第一处理器至该内存的等效访问时延确定的;将待迁移数据从第一内存迁移至第二内存。本申请实施例可用于服务器优化的过程中。
Description
技术领域
本申请涉及计算设备技术领域,尤其涉及一种数据迁移升级方法及计算设备。
背景技术
在计算设备中,应用程序的运行往往会占用一定的内存空间。随着企业数字化、信息化转型的持续推进,各种多样化的应用程序层出不穷,对计算设备的内容容量有了更高的要求。计算快速链路(compute express link,CXL)是一种基于行业标准协议的总线架构,用于对计算设备进行内存扩展,以提升计算设备的内存带宽和容量。由于CXL协议及链路本身存在一定的时延,因此经过CXL扩展后的计算设备中存在不同访问时延的内存。
应用程序在运行的过程中,计算设备需要将高时延的内存中的访问数据转移到低时延的内存上,以提高应用程序的运行性能。而目前数据迁移的方案在实际运作的过程中存在导致应用程序性能下降的问题。
发明内容
本申请实施例提供一种数据迁移方法及计算设备,可以在数据迁移时有效地提高应用程序的性能。
第一方面,本申请实施例提供一种数据迁移方法,应用于第一处理器,第一处理器为计算设备包括的多个处理器中的一个,多个处理器中每一个处理连接至少一个内存;第一处理器所访问的第一内存中包括待迁移数据;方法包括:响应于数据迁移指令,从数据迁移映射表中确定第二内存;数据迁移映射表包括第一内存对应的内存集合,第二内存为内存集合中的一个,第一内存对应的内存集合基于各个内存的综合访问时延得到,各个内存的综合访问时延是根据第一处理器至该内存的真实访问时延,以及第一处理器至该内存的等效访问时延确定的,等效访问时延用于指示第一处理器访问内存时的性能损失;将待迁移数据从第一内存迁移至第二内存。
本申请实施例提供的数据迁移方法,在接收到数据迁移指令后,从基于各个内存的综合访问时延确定的数据迁移映射表中确定第二内存,并将待迁移数据迁移至第二内存。其中,综合访问时延不仅考虑到了处理器访问内存的真实访问时延,还考虑了处理器访问内存时带来的性能损失。相较于传统的仅考虑真实访问时延确定迁移的第二内存,本申请实施例提供的数据迁移方法更符合实际场景下跨处理器访问内存会存在的性能损失的情况,基于此方法进行数据迁移,可以充分发挥硬件性能,有效地提高应用程序的内存访问性能。
一种可能的实现方式中,数据迁移映射表存储于计算设备的存储器中;响应于数据迁移指令,从数据迁移映射表中确定第二内存,包括:响应与数据迁移指令,从存储器中获取数据迁移映射表;从数据迁移映射表中确定第二内存。应理解,数据迁移映射表事先建立好保存的存储器中,处理器在进行数据迁移时可以直接调用使用,无需额外花费时间与算力创建数据迁移映射表,提高数据迁移效率的同时减少算力资源的浪费。
另一种可能的实现方式中,在响应于数据迁移指令之后,上述方法还包括:获取内存时延表,内存时延表包括第一处理器至各个内存的综合访问时延;基于内存时延表及内存的综合访问时延大小排序,获取数据迁移映射表。
又一种可能的实现方式中,在响应于数据迁移指令之后,方法还包括:基于内存关系映射表构建获取内存时延表;内存关系映射表包括多个处理器中每个处理器与各自连接的内存之间的连接方式;内存关系映射表由各个内存的内存信息确定;内存时延表包括第一处理器至各个内存的综合访问时延;基于内存时延表及内存的综合访问时延大小排序,获取数据迁移映射表。
又一种可能的实现方式中,在响应于数据迁移指令之后,方法还包括:获取各个内存的内存信息;基于内存信息,获取内存关系映射表;内存关系映射表包括多个处理器中每个处理器与各自连接的内存之间的连接方式;基于内存关系映射表获取内存时延表;内存时延表包括第一处理器至各个内存的综合访问时延;基于内存时延表及内存的综合访问时延大小排序,获取数据迁移映射表。
又一种可能的实现方式中,数据迁移映射表中每一个内存的综合访问时延满足:
T_total=T_equal+T_real
其中,T_total表示综合访问时延,T_real表示真实访问时延,T_equal表示等效访问时延。
又一种可能的实现方式中,等效访问时延满足:
T_equal=α×T_remote
其中,当内存与第一处理器连接的情况下,α为第一取值;当内存与第二处理器连接的情况下,α为第二取值;第二处理器为多个处理器中除第一处理器中的一个;第二取值大于第一取值;T_remote表示内存与第二处理器连接的情况下,第一处理器访问内存时的性能损失对应的时延折算系数。
又一种可能的实现方式中,数据迁移指令包括:第一数据迁移方向;第一数据迁移方向用于指示热数据的迁移方向;从数据迁移映射表中确定第二内存,包括:从数据迁移映射表中确定第一内存在第一数据迁移方向上对应的第一内存集合;第一内存集合中每个内存的综合访问时延均小于第一内存的综合访问时延;将第一内存集合中的目标内存作为第二内存,目标内存的综合访问时延小于第一内存集合中的其他内存的综合访问时延。应理解,针对热数据迁移,可以使得热数据处于较低时延的内存中,缩短处理器访问热数据所花费时间,进而保证应用程序的内存访问性能。
又一种可能的实现方式中,在将待迁移数据从第一内存迁移至第二内存之后,方法还包括:在迁移失败的情况下,按照综合访问时延从小到大的顺序,将第一内存集合中目标内存的下一个内存作为第二内存。应理解,在热数据迁移失败的情况下,依次选择新的内存进行重试,可以在满足数据迁移的需求下保证低时延内存容量的充分利用,进一步保证应用程序的内存访问性能。
又一种可能的实现方式中,数据迁移指令包括:第二数据迁移方向;第二数据迁移方向用于指示冷数据的迁移方向;从数据迁移映射表中确定第二内存,包括:从数据迁移映射表中确定第一内存在第二数据迁移方向上对应的第二内存集合;第二内存集合中每个内存的综合访问时延均大于第一内存的综合访问时延;将第二内存集合中的一个内存作为第二内存。应理解,针对冷数据进行迁移,可以释放更多较低时延内存的容量,以使得更多的热数据可以迁移到较低时延的内存中,进一步保证应用程序的内存访问性能。
又一种可能的实现方式中,在将待迁移数据从第一内存迁移至第二内存之后,方法还包括:在迁移失败的情况下,按照综合访问时延大小,重新从第二内存集合中选取一个内存作为第二内存。
又一种可能的实现方式中,至少一个内存与处理器的连接方式包括以下一种或多种方式:直接连接、通过CXL连接、通过CXL交换芯片连接。
第二方面,本申请实施例提供一种数据迁移装置,应用于第一处理器,第一处理器为计算设备包括的多个处理器中的一个,多个处理器中每一个处理连接至少一个内存;第一处理器所访问的第一内存中包括待迁移数据;该装置包括:确定模块和迁移模块。确定模块用于,从数据迁移映射表中确定第二内存;数据迁移映射表包括第一内存对应的内存集合,第二内存为内存集合中的一个,第一内存对应的内存集合基于各个内存的综合访问时延得到,各个内存的综合访问时延是根据第一处理器至该内存的真实访问时延,以及第一处理器至该内存的等效访问时延确定的,等效访问时延用于指示第一处理器访问内存时的性能损失;迁移模块用于,将待迁移数据从第一内存迁移至第二内存。
一种可能的实现方式中,数据迁移映射表存储于计算设备的存储器中;确定模块具体用于,响应与数据迁移指令,从存储器中获取数据迁移映射表;从数据迁移映射表中确定第二内存。
另一种可能的实现方式中,上述装置还包括:获取模块。获取模块用于,获取内存时延表,内存时延表包括第一处理器至各个内存的综合访问时延;基于内存时延表及内存的综合访问时延大小排序,获取数据迁移映射表。
又一种可能的实现方式中,获取模块还用于,基于内存关系映射表获取内存时延表;内存关系映射表包括多个处理器中每个处理器与各自连接的内存之间的连接方式;内存关系映射表由各个内存的内存信息确定;内存时延表包括第一处理器至各个内存的综合访问时延;基于内存时延表及内存的综合访问时延大小排序,获取数据迁移映射表。
又一种可能的实现方式中,获取模块还用于,获取各个内存的内存信息;基于内存信息,获取内存关系映射表;内存关系映射表包括多个处理器中每个处理器与各自连接的内存之间的连接方式;基于内存关系映射表获取内存时延表;内存时延表包括第一处理器至各个内存的综合访问时延;基于内存时延表及内存的综合访问时延大小排序,获取数据迁移映射表。
又一种可能的实现方式中,数据迁移映射表中每一个内存的综合访问时延满足:
T_total=T_equal+T_real
其中,T_total表示综合访问时延,T_real表示真实访问时延,T_equal表示等效访问时延。
又一种可能的实现方式中,等效访问时延满足:
T_equal=α×T_remote
其中,当内存与第一处理器连接的情况下,α为第一取值;当内存与第二处理器连接的情况下,α为第二取值;第二处理器为多个处理器中除第一处理器中的一个;第二取值大于第一取值;T_remote表示内存与第二处理器连接的情况下,第一处理器访问内存时的性能损失对应的时延折算系数。
又一种可能的实现方式中,第一数据迁移方向;第一数据迁移方向用于指示热数据的迁移方向;确定模块具体用于,从数据迁移映射表中确定第一内存在第一数据迁移方向上对应的第一内存集合;第一内存集合中每个内存的综合访问时延均小于第一内存的综合访问时延;将第一内存集合中的目标内存作为第二内存,目标内存的综合访问时延小于第一内存集合中的其他内存的综合访问时延。
又一种可能的实现方式中,迁移模块还用于,在迁移失败的情况下,按照综合访问时延从小到大的顺序,将第一内存集合中目标内存的下一个内存作为第二内存。
又一种可能的实现方式中,数据迁移指令包括:第二数据迁移方向;第二数据迁移方向用于指示冷数据的迁移方向;确定模块具体用于,从数据迁移映射表中确定第一内存在第二数据迁移方向上对应的第二内存集合;第二内存集合中每个内存的综合访问时延均大于第一内存的综合访问时延;将第二内存集合中的一个内存作为第二内存。
又一种可能的实现方式中,迁移模块还用于,在迁移失败的情况下,按照综合访问时延大小,重新从第二内存集合中选取一个内存作为第二内存。
又一种可能的实现方式中,至少一个内存与处理器的连接方式包括以下一种或多种方式:直接连接、通过计算快速链路CXL连接、通过CXL交换芯片连接。
第三方面,本申请实施例提供一种计算设备,该计算设备包括:处理器和存储器;存储器存储有处理器可执行的指令;处理器被配置为执行指令时,使得计算设备实现上述第一方面的方法。
第四方面,本申请实施例提供一种计算设备,该计算设备包括多个处理器,多个处理器中每一个处理器连接至少一个内存,第一处理器为多个处理中的一个,第一处理器用于:响应于数据迁移指令,从数据迁移映射表中确定第二内存;数据迁移映射表包括第一内存对应的内存集合,第二内存为内存集合中的一个,第一内存对应的内存集合基于各个内存的综合访问时延得到,各个内存的综合访问时延是根据第一处理器至该内存的真实访问时延,以及第一处理器至该内存的等效访问时延确定的,等效访问时延用于指示第一处理器访问内存时的性能损失;将待迁移数据从第一内存迁移至第二内存。
第五方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质包括:计算机软件指令;当计算机软件指令在计算设备中运行时,使得计算设备实现上述第一方面的方法。
第六方面,本申请实施例提供一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述第一方面描述的相关方法的步骤,以实现上述第一方面的方法。
上述第二方面至第六方面的有益效果可以参考第一方面的对应描述,不再赘述。
附图说明
图1为本申请实施例提供的一种计算设备的组成示意图;
图2为本申请实施例提供的一种本地内存与远端内存的连接示意图;
图3为本申请实施例提供的一种多级时延内存的关系示意图;
图4为本申请实施例一提供的一种数据迁移方法的流程示意图;
图5为本申请实施例一提供的另一种数据迁移方法的流程示意图;
图6为本申请实施例一提供的又一种数据迁移方法的流程示意图;
图7为本申请实施例二提供的一种数据迁移方法的流程示意图;
图8为本申请实施例三提供的一种数据迁移方法的流程示意图;
图9为本申请实施例四提供的一种数据迁移方法的流程示意图;
图10为本申请实施例提供的一种系统架构示意图;
图11为本申请实施例提供的一种数据迁移装置的组成示意图;
图12为本申请实施例提供的另一种计算设备的组成示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请实施例中,“示例性地”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性地”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性地”或者“例如”等词旨在以具体方式呈现相关概念。
为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能和作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不是在对数量和执行次序进行限定。
为便于理解本申请实施例的技术方案,下面先对文中所涉及的术语进行简单的介绍。
1、数据迁移:一种为了提高数据的访问速度,提高应用程序的性能,而将常用的数据转移至低时延内存,将不常用的数据转移至高时延内存的技术手段。
2、计算快速链路:compute express link,简称CXL。是一种开放的行业标准的总线架构,可在数据中心内的专用计算、内存、输入输出接口和存储元素之间提供高带宽、低延迟的连接。经过CXL对计算设备进行内存扩展,可以提升该计算设备的内存带宽和容量,以更好适用内存密集型的应用场景。
如背景技术的描述,为满足多样化的应用程序对内存容量与内存带宽的需求,相关技术中往往采用CXL使得计算设备可以连接更多的内存,实现对计算设备的内存容量与内存带宽的扩展。由于CXL本身存在一定的时延,因此经过CXL连接的内存在读写访问时延上相较于传统直挂的内存更大。因此,通过CXL连接内存后,计算设备就存在不同访问时延的内存,当应用程序不加区分的随机访问时延不同的内存时可能导致该应用程序性能下降。因此,目前一般通过数据迁移的方式,将应用程序使用的数据从高时延内存迁移到低时延内存,尽可能保证应用程序可以快速读取数据,进而提高应用程序的性能。
这里说的计算设备可以是塔式服务器、机架式服务器、或者刀片服务器,本申请实施例对计算设备的具体形态不作限制。
图1为本申请实施例提供的一种计算设备的结构示意图,如图1所示,该计算设备的硬件部分可以包括主板、多个处理器(图中以两个为例示出)以及基本输入输出系统(basic input output system,BIOS)芯片。BIOS芯片以及多个处理器设置于主板上,BIOS芯片分别与多个处理器连接,多个处理器中每个处理器连接至少一个内存。需要说明的是,多个处理器之间可以两两互相连接,也可以依次连接成环,具体可以根据实际的场景而定,本申请实施例对此不作具体限制。另外该计算设备的软件部分可以包括操作系统(operating system,OS)内核(OS内核也可以称为OS管理单元)以及BIOS。OS内核可以位于一个或多个处理器内,BIOS位于BIOS芯片内。
在本申请实施例中,处理器可以是基于x86架构,或者ARM(advanced RISCmachines)架构的处理器。例如,该处理器可以为中央处理器(central processing unit,CPU)。
以处理器为CPU为例,在多CPU的计算设备中,应用程序执行时会存在CPU空闲状态不定的情况,因此一个应用程序进程可能在不同的CPU上执行,存在动态变化。另外,每个CPU均连接有内存,因此,运行在某个CPU(如称为第一CPU)上的应用程序在申请内存时,若第一CPU连接的内存容量满足该应用程序,则为该应用程序分配第一CPU连接的内存,对于应用程序而言,该内存是本地内存。若第一CPU连接的内存容量不足,则可以为该应用程序分配其他CPU(如称为第二CPU)连接的内存,该内存不是第一CPU连接的内存,对于该应用程序而言,该内存是非本地内存或远端内存。而一般来说远端内存的访问时延大于本地内存的访问时延,因此在多CPU的计算设备中,该应用程序在访问内存时有可能是直接访问时延较小的本地内存,也可能是访问时延较大的非本地内存,内存访问存在一定的优化空间。
图2为本申请实施例提供的一种本地内存与远端内存的连接示意图。如图1所示,CPU0连接内存0,CPU1连接内存1,且CPU0与CPU1连接。例如,这里的内存0和内存1可以是双列直插式存储模块(dual-inline-memory-modules,DIMM)。以CPU0为上述第一CPU为例,CPU0访问内存0是直接访问,即访问本地内存。CPU0访问内存1需要跨CPU1进行访问,即访问非本地内存或者访问远端内存。因此,在应用程序访问非本地内存中的数据时,可以通过一定的技术手段,在本地内存容量充足的前提下把非本地内存的数据迁移到本地内存,以使运行在CPU0中的应用程序可以从时延较小的本地内存中读写数据,以提升应用程序的内存访问性能。
针对不同的处理器而言,经过CXL扩展内存后,计算设备中每个处理器会存在不同访问时延的内存,例如,图3为本申请实施例提供的一种多级时延内存的关系示意图。其中,计算设备可以包括两个处理器,分别为CPU0和CPU1。其中,CPU0直接连接内存1,通过CXL连接内存3和内存4,通过CXL交换芯片(CXL Switch)连接内存7和内存8。CPU1直接连接内存2,通过CXL连接内存5和内存6,通过CXL交换芯片连接内存9和内存10。其中,上述直接连接指的是内存与CPU提供的引脚(pin)直连。CXL交换芯片是一种基于CXL协议的交换芯片,可以用于扩展连接多个内存,并根据实际的需求配置扩展连接的内存所对应的处理器。例如,图3中CXL交换芯片连接的内存7-内存10,其中内存7和8被配置为CPU0所连接的内存,内存9和10配置为CPU1所连接的内存。
目前在数据迁移过程中,选择要迁入的内存(如称为第二内存)的方式一般是按照内存的真实访问时延大小来选择目标内存。其中,真实访问时延指的是处理器执行读写操作的状态就绪前,等待内存响应的时间。例如,结合图3进行说明。以CPU0为例,CPU0访问本地内存(内存1)的真实访问时延约为100纳秒,访问远端内存(内存2)的真实访问时延约为180纳秒,访问本地CXL内存(内存3或内存4)的真实访问时延约为260纳秒,访问远端CXL内存(内存5或内存6)的真实访问时延约为440纳秒,访问本地CXL Switch内存(内存7或内存8)的真实访问时延约为500纳秒,访问远端CXL Switch内存(内存9或内存10)的真实访问时延约为600纳秒。
若CPU0正在访问的数据位于内存7上,在需要将数据迁移至低时延的内存时,可以选择内存3或者内存2为目标进行迁移。可以看出,虽然内存2的真实访问时延小于内存3的真实访问时延,但是针对CPU0来说,内存2属于远端访问的内存,若将内存2作为第二内存进行数据迁移,会导致本地内存紧张时频繁将本地内存的常用数据迁移至远端内存(例如CPU1连接的内存2)。在这种情况下,对于CPU1来说,由于内存2被占用,当CPU1进行数据迁移时,也存在由于本地内存紧张的问题导致不得不将数据迁移至CPU0连接的内存,进而导致运行在CPU0或CPU1上的应用程序频繁地访问远端内存中的数据,进而导致应用程序性能的下降。
也就是说,目前的数据迁移方案,仅考虑内存的真实访问时延,没有考虑跨处理器访问内存的因素。尤其是在访问远端内存(图3中路径1的真实访问时延)和访问本地CXL内存(图3中路径2的真实方式时延)较为接近的情况下,跨处理器的因素对应用程序的性能影响更大。
基于此,本申请实施例提供一种数据迁移方法,该方法在进行数据迁移时,综合考虑真实访问时延以及访问内存时的性能损失来确定要迁入的第二内存,优化相关技术中数据迁移方案的不足,从而有效提高应用程序的性能。
本申请实施例提供的数据迁移方法,可以应用于图1或者图3所示的场景中。需要说明的是,针对每个处理器,本申请实施例提供的数据迁移的方法的具体执行步骤是类似的,下文以任一个处理器(如称为第一处理器)为例进行说明。其中,第一处理器所访问的第一内存中包括待迁移数据,需要说明的是,这里的第一内存是计算设备中的任一个内存。
实施例一
图4为本申请实施例一提供的一种数据迁移方法的流程示意图。示例性的,如图4所示,本申请实施例一提供的数据迁移方法具体可以包括以下步骤:
S401、响应于数据迁移指令,第一处理器从数据迁移映射表中确定第二内存。
其中,数据迁移指令用于指示第一处理器需要对待迁移数据执行迁移操作。该数据迁移指令可以来自操作系统内核,本申请实施例对操作系统内核发送数据迁移指令的具体时机不作限制,例如用户通过操作系统手动对第一处理器下发数据迁移指令,或者,操作系统内核本身就支持内存管理的功能,操作系统内核可以周期性地扫描各个内存的属性信息(例如利用率,剩余空间等),在属性信息满足预设条件下下发数据迁移指令。
在本申请实施例中,当运行在第一处理器的应用程序正在访问第一内存时,若第一处理器接收到数据迁移指令,则可以响应于该数据迁移指令,从数据迁移映射表中确定第二内存(即迁移的目标)。
上述数据迁移映射表包括第一内存对应的内存集合,第二内存为内存集合中的一个,第一内存对应的内存集合基于各个内存的综合访问时延得到,各个内存的综合访问时延是根据第一处理器至该内存的真实访问时延,以及第一处理器至该内存的等效访问时延确定的,这里的各个内存指的是计算设备中多个处理器所连接的多个内存。等效访问时延用于指示第一处理器访问内存时的性能损失;或者说第一处理器跨处理器访问内存所带来的性能损失。
需要说明的是,在本申请实施例中,上述数据迁移映射表可以由计算设备中任一个处理器事先构建好,并存储于计算设备的存储器中。示例性的,存储器可以是计算设备中的随机存取器、动态存储设备、磁盘存储介质或者其他任何形式的存储设备。具体的,S401可以实现为,响应于数据迁移指令,从存储器中获取数据迁移映射表,进而从数据迁移映射表中确定第二内存。应理解,数据迁移映射表事先建立好保存的存储器中,处理器在进行数据迁移时可以直接调用使用,无需额外花费时间与算力创建数据迁移映射表,提高数据迁移效率的同时减少算力资源的浪费。
其中,数据迁移映射表中每一个内存的综合访问时延满足如下表达式:
T_total=T_equal+T_real
其中,T_total表示综合访问时延,T_real表示真实访问时延,T_equal表示等效访问时延。等效访问时延满足如下表达式:
T_equal=α×T_remote
其中,α表示内存是否属于第一处理器。当该内存与第一处理器连接的情况下,α为第一取值;当内存与第二处理器的情况下,α为第二取值;第二处理器为多个处理器中除第一处理器中的一个,且第二取值大于第一取值。上述T_remote表示该内存与第二处理器连接的情况下,第一处理器访问该内存时的性能损失对应的时延折算系数。其中,该T_remote的值可以根据实验积累确定。另外,T_remote的大小与跨处理器的个数相关,例如跨一个处理器访问内存,T_remote的值可以为100纳秒,跨两个处理器访问内存,T_remote的值可以为200纳秒,依次类推。
需要说明的是,计算设备中的数据包括热数据和冷数据,相应地,数据迁移分为热数据迁移以及冷数据迁移。若为热数据迁移,则说明数据需要频繁使用,则需要将热数据从时延较大的内存迁移至时延较小的内存,以提高访问效率。若为冷数据迁移,则说明数据使用次数较少,则需要将冷数据从时延较小的内存迁移至时延较大的内存,以保证时延较小的内存上拥有更大的容量。
本申请实施例对热数据和热数据具体的区分方式不作限定,作为一种示例,操作系统内核可以采用专门的统计计数器进行计数,若数据访问次数大于一定阈值则确定为热数据,若数据访问次数小于或等于一定阈值则确定为冷数据。作为又一种示例,也可以采用目前行业内内存管理使用的最近最少使用(least recently used,LRU)算法划分热数据和冷数据,具体可以参见相关技术,本申请实施例对此不作详细赘述。根据冷热数据的不同,操作系统内核下发的数据迁移指令中可以包括数据迁移方向,数据迁移方向用于指示热数据的迁移方向或冷数据的迁移方向。本申请实施例中针对冷热数据的不同确定第二内存的详细步骤见如下描述:
在一种实施方式中,数据迁移方向包括:第一数据迁移方向。该第一数据迁移方向用于指示热数据的迁移方向,则第一内存中的待迁移数据为热数据。基于此,如图5所示,上述S401具体可以实现为如下S401a-S401b。
S401a、第一处理器从数据迁移映射表中确定第一内存在第一数据迁移方向上对应的第一内存集合。
其中,第一内存集合中每个内存的综合访问时延均小于第一内存的综合访问时延。
S401b、第一处理器将第一内存集合中的目标内存作为第二内存。
其中,目标内存的综合访问时延小于第一内存集合中的其他内存的综合访问时延。
如前所述,数据迁移表中包括第一内存对应的内存集合。在接收到数据迁移指令后,第一处理器根据第一数据迁移方向,从数据迁移映射表中确定第一内存在第一数据迁移方向上对应的第一内存集合,进而从第一内存集合中选取综合访问时延最小的一个内存(即候选内存)作为热数据需要迁移的第二内存。
应理解,针对热数据迁移,可以使得热数据处于较低时延的内存中,缩短处理器访问热数据所花费时间,进而保证应用程序的内存访问性能。
在另一种实施方式中,数据迁移方向包括:第二数据迁移方向。该第二数据迁移方向用于指示冷数据的迁移方向,则第一内存中的待迁移数据为冷数据。如图6所示,上述S401具体可以实现为S401c-S401d。
S401c、第一处理器从数据迁移映射表中确定第一内存在第二数据迁移方向上对应的第二内存集合。
其中,第二内存集合中每个内存的综合访问时延均大于第一内存的综合访问时延。
S401d、第一处理器将第二内存集合中的一个内存作为第二内存。
如前所述,数据迁移表中包括第一内存对应的内存集合。在接收到数据迁移指令后,第一处理器根据第二数据迁移方向,从数据迁移映射表中确定第一内存在第二数据迁移方向上对应的第一内存集合,进而从第一内存集合中一个内存作为冷数据需要迁移的第二内存。需要说明的是,这里选取的内存的方式可以是选取综合访问时延最小的内存,也可以是选取综合访问时延最大的内存,亦或是随机选取,可以根据实际场景而定,本申请实施例对此不作具体限定。
应理解,针对冷数据进行迁移,可以释放更多较低时延内存的容量,以使得更多的热数据可以迁移到较低时延的内存中,进一步保证应用程序的内存访问性能。
下面结合具体的示例对上述两种实施方式进行详细说明。
结合前述图3所示的示意图以及内存的综合访问时延表达式,以α的第一取值为0,第二取值为1,T_remote的取值为100纳秒为例进行说明。以第一处理器为CPU0为例,内存1与CPU0连接,则α的取值为0,则内存1的综合访问时延为0×100+100=100纳秒,也即内存1的综合访问时延等同于真实访问时延。内存2没有与CPU0连接,则α的取值为1,则内存2的综合访问时延为1×100+180=280纳秒。同理,内存3与内存4的综合访问时延均为260纳秒,内存5与内存6的综合访问时延均为540纳秒,内存7与内存8的综合访问时延均为500纳秒,内存9与内存10的综合访问时延均为600纳秒。
进一步的,基于综合访问时延大小比对,针对内存1来说,没有其他内存的综合访问时延小于内存1,内存2-内存10的综合访问时延均大于内存1。因此,确定内存1在热数据迁移方向上的第一内存集合为空(NA),内存2在冷数据迁移方向上的第二内存集合包括:内存3、内存4、内存2、内存7、内存8、内存5、内存6、内存9和内存10(按综合访问时延从小到大排序)。基于上述分析的原理,确定出的数据迁移映射表如下表1所示。
表1
/>
表1中,针对CPU0来说,每个内存在热数据迁移方向上对应的第一内存集合,以及在冷数据迁移方向上对应的第二内存集合。当CPU0接收到数据迁移指令后,则可以基于表1选取第二内存进行迁移。
例如,结合表1进行说明,当运行在CPU0中的应用程序访问的数据位于内存5中,则内存5即为上述第一内存。在接收到热数据迁移指令后,CPU可以从表1中确定综合访问时延小于内存5的有内存1、内存3、内存4、内存2、内存7和内存8。其中,内存1(即上述目标内存)的综合访问时延最小,则作为内存5中的热数据需要迁移至的第二内存。
同理,在接收到冷数据迁移指令后,CPU0可以从表1中确定综合访问时延大于内存5的有内存9和内存10。则内存9和内存10组成第二内存子集。其中,内存9和内存10的综合访问时延一致,则可以从中任意确定一个,作为内存5中的冷数据需要迁移至的第二内存。
需要说明的是,表1所示的数据迁移映射表是针对CPU0来说的,若针对CPU1来说,则建立的数据迁移映射表如下表2所示。
表2
/>
表2中,针对CPU1来说,每个内存在热数据迁移方向上对应的第一内存集合,以及在冷数据迁移方向上对应的第二内存集合。当CPU1接收到数据迁移指令后,则可以基于表2选取第二内存进行迁移。
S402、第一处理器将待迁移数据从第一内存迁移至第二内存。
在本申请实施例中,在确定待迁移数据所要迁移的目标位置,即第二内存后,第一处理器可以将待迁移数据从所在的第一内存迁移至第二内存。本申请实施例对具体的迁移过程不作限制。作为一种示例,CPU中提供了数据迁移(页面迁移)的函数,CPU可以调用该函数实现数据迁移。作为又一种示例,CPU可以建立一个进程,实现页面的复制以实现数据迁移的目的。
需要说明的是,在数据迁移的过程中可能会遇见内存容量不足的情况,则会导致迁移失败。在这种情况下,则需要重新确定一个内存进行数据迁移,具体如描述如下:
在一种实施方式中,在热数据迁移的情况下,在S402之后,本申请实施例提供的数据迁移方法还可以包括如下S403a。
S403a、在迁移失败的情况下,按照综合访问时延从小到大的顺序,将第一内存集合中目标内存的下一个内存作为第二内存。
其中,下一个内存指的是第一内存集合中,比目标内存的综合访问时延大,但是比其他内存的综合访问时延都小的一个内存。
应理解,在热数据迁移失败的情况下,说明当前确定的第二内存容量不足,无法容纳待迁移数据。因此,第一处理器可以按照综合方式时延从小到大的顺序,重新从第一内存子集中确定下一个内存作为新的第二内存,并执行数据迁移的操作。
在另一些实施方式中,在冷数据迁移的情况下,在S402之后,本申请实施例提供的数据迁移方法还包括如下S403b。
S403b、在迁移失败的情况下,按照综合访问时延大小,重新从第二内存集合中选取一个内存作为第二内存。
同理,在冷数据迁移失败的情况下,第一处理器可以按照综合访问时延大小,重新从第二内存子集中确定下一个内存作为新的第二内存,并执行数据迁移的操作。这里的选取方式可以是按照综合访问时延从小到大的顺序选取,也可以是按照综合访问时延从大到小的顺序选取,具体可以根据实际场景而定,本申请实施例对此不作具体限制。
应理解,在迁移失败的情况下,按照综合访问时延大小重新选择第二内存节点来进行迁移重试,可以在满足数据迁移需求的情况下保证内存容量的充分利用,进一步保证应用程序的性能。
结合上述表1或表2对数据迁移的过程进行详细的举例说明。
以热数据迁移为例,当CPU0接收到数据迁移指令,需要对内存5上的数据进行迁移时,根据表1中确定内存5在热数据迁移方向上对应的第一内存集合,从左到右分别为内存1、内存3、内存4、内存2、内存7和内存8。因此,在进行数据迁移时,CPU0首先以综合访问时延最小的内存1为目标进行迁移,若迁移失败,则再依次以内存3、内存4、内存2、内存7和内存8为目标尝试进行迁移。应理解,当某个内存迁移成功时,则结束,不再对后面的内存执行尝试迁移过程。当所有的尝试迁移均失败,则取消本次对内存5中数据的迁移。
以冷数据迁移为例,当CPU1接收到数据迁移指令,需要对内存10进行迁移时,CPU1根据表2中确定内存10在冷数据迁移方向上对应的第二内存集合,从左到右分别为内存3、内存4、内存7以及内存8。因此,在进行数据迁移时,CPU1可以按照综合访问时延从小到大的顺序(即表中从左到右的顺序),选取第二内存尝试进行迁移。也可以按照综合访问时延从大到小(即表中从右到左的顺序),选取第二内存尝试进行迁移。同样的,当某个内存迁移成功时,则结束,不再继续后面内存的尝试迁移过程。当所有的尝试迁移均失败,则取消本次对内存10中数据的迁移。
上述实施例提供的技术方案至少带来以下有益效果,本申请实施例提供的数据迁移方法,在接收到数据迁移指令后,从基于各个内存的综合访问时延确定的数据迁移映射表中确定第二内存,并将待迁移数据迁移至第二内存。其中,综合访问时延不仅考虑到了处理器访问内存的真实访问时延,还考虑了处理器访问内存时带来的性能损失。相较于传统的仅考虑真实访问时延确定迁移的第二内存,本申请实施例提供的数据迁移方法更符合实际场景下跨处理器访问内存会存在的性能损失的情况,基于此方法进行数据迁移,可以充分发挥硬件性能,有效地提高应用程序的内存访问性能。
进一步的,在数据迁移失败的情况下,可以基于综合访问时延的大小,依次选择新的内存进行重试,在满足数据迁移的需求下保证内存容量的充分利用,进一步保证应用程序的内存访问性能。
需要说明的是,上述实施例一是数据迁移映射表事先建立好,在数据迁移时直接使用为例进行说明的。在另一些实施例中,数据迁移映射表可以是在第一处理器接收到数据迁移指令后获取的,具体描述见下述实施例二-实施例四。
实施例二
图7为本申请实施例二提供的一种数据迁移方法的流程示意图。示例性的,如图7所示,本申请实施例二提供的数据迁移方法具体可以包括以下步骤:
S701、响应于数据迁移指令,获取各个内存的内存信息;基于内存信息,获取内存关系映射表;基于内存关系映射表获取内存时延表;基于内存时延表及内存的综合访问时延大小排序,获取数据迁移映射表。
其中,内存关系映射表包括多个处理器中每个处理器与各自连接的内存之间的连接方式。内存时延表包括第一处理器至各个内存的综合访问时延。
在本申请实施例中,计算设备在启动时,多个处理器都执行自检过程,以从多个处理器中选取一个处理器(如称为主处理器),该主处理器负责调用BIOS来开始执行开机自检的过程。进一步的,BIOS在开机自检过程中可以扫描计算设备中的内存并获取内存的相关信息,包括内存的标识、内存时序、内存与处理器之间的连接方式等。其中,内存时序是描述内存的性能的参数,可以决定内存的真实访问时延。一些实现方式中,BIOS还可以扫描计算设备中的内存以获取内存大小以及内存与处理器的距离等信息。
进一步的,操作系统启动后,操作系统内核可以调用高级配置和电源管理接口(advanced configuration and power management interface,ACPI),从BIOS获取内存的标识、内存时序、内存与处理器之间的连接方式等信息。其中,ACPI是一种标准接口,它定义了操作系统、固件和硬件之间的通信接口。ACPI通常在BIOS中实现,并由操作系统驱动程序进行控制。操作系统内核获取每个内存的内存时序后,可以基于内存时序测量每个处理器访问内存的真实访问时延,具体可以参见相关技术,在此不作详细赘述。
在接收到数据迁移指令后,第一处理器可以获取操作系统内核下发的内存标识、内存的真实访问时延、内存与处理器之间的连接方式等内存信息,以基于该内存信息,获取内存关系映射表,该表可以存放在存储器中。该表主要用于体现计算设备中处理器与内存之间的不同连接方式。
例如,表3为本申请实施例提供的一种内存映射关系表。
表3
表3包括两个处理器(分别为CPU0和CPU1),以及与每个处理器连接的多个内存。多个内存分为三组,不同组中内存与对应处理器的连接方式不同,例如,连接方式包括:直接连接,通过CXL连接,通过CXL交换芯片连接。
进一步的,结合上述表3,基于前述确定综合访问时延的表达式,获取内存时延表,该表可以存放在存储器中。
以CPU0为第一处理器为例,从表3中可以得知,内存1、内存3、内存4、内存7和内存8是与CPU0连接的内存,根据前述分析可以确定这些内存的综合访问时延即为真实访问时延。其他内存与CPU不连接,则α的取值为1。例如,继续以T_remote取值为100纳秒为例,则内存2的综合访问时延为1×100+180=280纳秒,内存5和内存6的综合访问时延为1×100+440=540纳秒,内存9和内存10的综合访问时延为1×100+500=600纳秒。基于上述分析,第一处理器获取的内存时延表如下表4所示。
表4
同理,以CPU1为第一处理器为例,第一处理器获取的内存时延表如下表5所示:
表5
最后,基于内存时延表及内存的综合访问时延大小排序,第一处理器获取可以获取数据迁移表。示例性的,以CPU0为第一处理器为例,第一处理器根据表4获取的数据迁移表如前述表1所示。以CPU1为第一处理器为例,第一处理器根据表5获取的数据迁移表如前述表2所示。
S702、第一处理器从数据迁移映射表中确定第二内存。
S703、第一处理器将待迁移数据从第一内存迁移至第二内存。
上述S702以及S703的相关描述可以参见前述实施例一中的相关描述,在此不再重复赘述。
实施例三
图8为本申请实施例三提供的一种数据迁移方法的流程示意图。示例性的,如图8所示,本申请实施例三提供的数据迁移方法具体可以包括以下步骤:
S801、响应于数据迁移指令,基于内存关系映射表获取内存时延表;基于内存时延表及内存的综合访问时延大小排序,获取数据迁移映射表。
在本申请实施例中,BIOS可以在开机自检过程中获取每个内存的标识以及内存与处理器之间的连接关系,根据这些信息构建如上述表3所述的内存关系映射表,或者将这些信息上报至操作系统内核,由操作系统内核指示任一个处理器构建内存关系映射表,并存储在存储器中。当第一处理器接收到数据迁移指令后,可以从存储器中获取内存关系映射表,基于该内存关系映射表及内存的真实访问时延,获取上述表4或表5所示的内存时延表。进而基于内存时延表及内存的综合访问时延大小排序,获取上述表1或表2所示的数据迁移映射表。
S802、第一处理器从数据迁移映射表中确定第二内存。
S803、第一处理器将待迁移数据从第一内存迁移至第二内存。
上述S802以及S803的相关描述可以参见前述实施例一中的相关描述,在此不再重复赘述。
实施例四
图9为本申请实施例四提供的一种数据迁移方法的流程示意图。示例性的,如图9所示,本申请实施例四提供的数据迁移方法具体可以包括以下步骤:
S901、响应于数据迁移指令,获取内存时延表;基于内存时延表及内存的综合访问时延大小排序,获取数据迁移表。
在本申请实施例中,操作系统内核可以结合BIOS上报的内存相关信息,指示任一个或多个处理器事先构建好每个处理器对应的内存时延表存储在存储器中。在接收到数据迁移指令后,第一处理器可以从存储器中获取对应的内存时延表,进而基于内存时延表及内存的综合访问时延大小排序,获取上述表1或表2所示的数据迁移表。
S902、从数据迁移映射表中确定第二内存。
S903、将待迁移数据从第一内存迁移至第二内存。
上述S902以及S903的相关描述可以参见前述实施例一中的相关描述,在此不再重复赘述。
上述实施例二到实施例四的有益效果可以参见实施例一的相关描述。
图10为本申请实施例提供的一种系统架构示意图,如图10所示,图中从上到下依次为应用程序(application,APP),用户态和内核态。其中,用户态和内核态是操作系统的两种运行级别,大多数用户直接使用的应用程序(application,APP),例如Redis数据库或者HANA内存数据库,就运行在用户态。当应用程序涉及到对硬件的操作(例如本申请实施例中对内存中的数据进行迁移),用户态的运行级别无非支持硬件操作相关指令的运行,则需要切换至内核态执行硬件操作的相关指令。其中,glibc库是一种c运行库,可以运行在用户态。glibc库中提供了操作系统最底层的应用程序编程接口(application programminginterface,API),用户可以基于glibc库提供的API接口,进行本申请实施例提供的数据迁移方法的策略配置。内核态包括内存关系映射表创建模块、冷热数据迁移目标内存计算模块以及页面迁移模块,这些模块由用户通过API接口编写代码实现。其中,内存关系映射表创建模块用于根据用户配置的策略,建立内存映射关系表(上述表3),进一步冷热数据迁移目标内存计算模块基于关系映射表建立不同计算节点的热数据迁移目标内存列表以及冷数据迁移目标内存列表(上述表1或表2),由页面迁移模块进行页面迁移调度(数据迁移)。
可以看出,上述主要从方法的角度对本申请实施例提供的方案进行了介绍。为了实现上述功能,本申请实施例提供了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的模块及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在示例性的实施例中,本申请实施例还提供一种数据迁移装置。该数据迁移装置可以包括一个或多个功能模块,用于实现以上方法实施例的数据迁移方法。例如,图11为本申请实施例提供的一种数据迁移装置的组成示意图。该数据迁移装置可以应用于第一处理器,第一处理器为计算设备包括的多个处理器中的一个,多个处理器中每一个处理连接至少一个内存;第一处理器所访问的第一内存中包括待迁移数据。如图11所示,该装置包括:确定模块1101和迁移模块1102。
确定模块1101用于,从数据迁移映射表中确定第二内存;数据迁移映射表包括第一内存对应的内存集合,第二内存为内存集合中的一个,第一内存对应的内存集合基于各个内存的综合访问时延得到,各个内存的综合访问时延是根据第一处理器至该内存的真实访问时延,以及第一处理器至该内存的等效访问时延确定的,等效访问时延用于指示第一处理器访问内存时的性能损失。
迁移模块1102用于,将待迁移数据从第一内存迁移至第二内存。
在一些实施例中,数据迁移映射表存储于计算设备的存储器中;确定模块1101具体用于,响应与数据迁移指令,从存储器中获取数据迁移映射表;从数据迁移映射表中确定第二内存。
在一些实施例中,上述装置还包括:获取模块1103。获取模块1103用于,获取内存时延表,内存时延表包括第一处理器至各个内存的综合访问时延;基于内存时延表及内存的综合访问时延大小排序,获取数据迁移映射表。
在一些实施例中,获取模块1103还用于,基于内存关系映射表获取内存时延表;内存关系映射表包括多个处理器中每个处理器与各自连接的内存之间的连接方式;内存关系映射表由各个内存的内存信息确定;内存时延表包括第一处理器至各个内存的综合访问时延;基于内存时延表及内存的综合访问时延大小排序,获取数据迁移映射表。
在一些实施例中,获取模块1103还用于,获取各个内存的内存信息;基于内存信息,获取内存关系映射表;内存关系映射表包括多个处理器中每个处理器与各自连接的内存之间的连接方式;基于内存关系映射表获取内存时延表;内存时延表包括第一处理器至各个内存的综合访问时延;基于内存时延表及内存的综合访问时延大小排序,获取数据迁移映射表。
在一些实施例中,数据迁移映射表中每一个内存的综合访问时延满足:
T_total=T_equal+T_real
其中,T_total表示综合访问时延,T_real表示真实访问时延,T_equal表示等效访问时延。
在一些实施例中,等效访问时延满足:
T_equal=α×T_remote
其中,当内存与第一处理器连接的情况下,α为第一取值;当内存与第二处理器连接的情况下,α为第二取值;第二处理器为多个处理器中除第一处理器中的一个;第二取值大于第一取值;T_remote表示内存与第二处理器连接的情况下,第一处理器访问内存时的性能损失对应的时延折算系数。
在一些实施例中,第一数据迁移方向;第一数据迁移方向用于指示热数据的迁移方向;确定模块1101具体用于,从数据迁移映射表中确定第一内存在第一数据迁移方向上对应的第一内存集合;第一内存集合中每个内存的综合访问时延均小于第一内存的综合访问时延;将第一内存集合中的目标内存作为第二内存,目标内存的综合访问时延小于第一内存集合中的其他内存的综合访问时延。
在一些实施例中,迁移模块1102还用于,在迁移失败的情况下,按照综合访问时延从小到大的顺序,将第一内存集合中目标内存的下一个内存作为第二内存。
在一些实施例中,数据迁移指令包括:第二数据迁移方向;第二数据迁移方向用于指示冷数据的迁移方向;确定模块1101具体用于,从数据迁移映射表中确定第一内存在第二数据迁移方向上对应的第二内存集合;第二内存集合中每个内存的综合访问时延均大于第一内存的综合访问时延;将第二内存集合中的一个内存作为第二内存。
在一些实施例中,迁移模块1102还用于,在迁移失败的情况下,按照综合访问时延大小,重新从第二内存集合中选取一个内存作为第二内存。
在一些实施例中,至少一个内存与处理器的连接方式包括以下一种或多种方式:直接连接、通过计算快速链路CXL连接、通过CXL交换芯片连接。
在采用硬件的形式实现上述集成的模块的功能的情况下,本申请实施例提供了一种计算设备的结构示意图,该计算设备可以是上述数据迁移装置。如图12所示,该计算设备1200包括:处理器1202,通信接口1203,总线1204。可选的,计算设备还可以包括存储器1201。
处理器1202,可以是实现或执行结合本申请实施例公开内容所描述的各种示例性的逻辑方框,模块和电路。该处理器1202可以是中央处理器,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请实施例公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器1202也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等。
通信接口1203,用于与其他设备通过通信网络连接。该通信网络可以是以太网,无线接入网,无线局域网(wireless local area networks,WLAN)等。
存储器1201,可以是只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(electrically erasable programmable read-only memory,EEPROM)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
作为一种可能的实现方式,存储器1201可以独立于处理器1202存在,存储器1201可以通过总线1204与处理器1202相连接,用于存储指令或者程序代码。处理器1202调用并执行存储器1201中存储的指令或程序代码时,能够实现本申请实施例提供的数据迁移方法。
另一种可能的实现方式中,存储器1201也可以和处理器1202集成在一起。
总线1204,可以是扩展工业标准结构(extended industry standardarchitecture,EISA)总线等。总线1204可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将数据迁移装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
本申请实施例还提供了一种计算机可读存储介质。上述方法实施例中的全部或者部分流程可以由计算机指令来指示相关的硬件完成,该程序可存储于上述计算机可读存储介质中,该程序在执行时,可包括如上述各方法实施例的流程。计算机可读存储介质可以是前述任一实施例的或内存。上述计算机可读存储介质也可以是上述数据迁移装置的外部存储设备,例如上述数据迁移装置上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,上述计算机可读存储介质还可以既包括上述数据迁移装置的内部存储单元也包括外部存储设备。上述计算机可读存储介质用于存储上述计算机程序以及上述数据迁移装置所需的其他程序和数据。上述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供一种计算机程序产品,该计算机产品包含计算机程序,当该计算机程序产品在计算机上运行时,使得该计算机执行上述实施例中所提供的任一项数据迁移方法。
尽管在此结合各实施例对本申请进行了描述,然而,在实施所要求保护的本申请过程中,本领域技术人员通过查看附图、公开内容、以及所附权利要求书,可理解并实现公开实施例的其他变化。在权利要求中,“包括”(Comprising)一词不排除其他组成部分或步骤,“一”或“一个”不排除多个的情况。单个处理器或其他单元可以实现权利要求中列举的若干项功能。相互不同的从属权利要求中记载了某些措施,但这并不表示这些措施不能组合起来产生良好的效果。
尽管结合具体特征及其实施例对本申请进行了描述,显而易见的,在不脱离本申请的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本申请的示例性说明,且视为已覆盖本申请范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (12)
1.一种数据迁移方法,其特征在于,应用于第一处理器,所述第一处理器为计算设备包括的多个处理器中的一个,所述多个处理器中每一个处理连接至少一个内存;所述第一处理器所访问的第一内存中包括待迁移数据;所述方法包括:
响应于数据迁移指令,从数据迁移映射表中确定第二内存;所述数据迁移映射表包括第一内存对应的内存集合,所述第二内存为所述内存集合中的一个,所述第一内存对应的内存集合基于各个内存的综合访问时延得到,各个内存的综合访问时延是根据所述第一处理器至该内存的真实访问时延,以及所述第一处理器至该内存的等效访问时延确定的,所述等效访问时延用于指示所述第一处理器访问所述内存时的性能损失;
将所述待迁移数据从所述第一内存迁移至所述第二内存。
2.根据权利要求1所述的方法,其特征在于,所述数据迁移映射表存储于所述计算设备的存储器中;
所述响应于数据迁移指令,从数据迁移映射表中确定第二内存,包括:
响应于所述数据迁移指令,从所述存储器中获取所述数据迁移映射表;
从所述数据迁移映射表中确定第二内存。
3.根据权利要求1所述的方法,其特征在于,在响应于所述数据迁移指令之后,所述方法还包括:
获取内存时延表,所述内存时延表包括所述第一处理器至所述各个内存的综合访问时延;
基于所述内存时延表及内存的综合访问时延大小排序,获取所述数据迁移映射表。
4.根据权利要求1所述的方法,其特征在于,在响应于所述数据迁移指令之后,所述方法还包括:
基于内存关系映射表获取内存时延表;所述内存关系映射表包括所述多个处理器中每个处理器与各自连接的内存之间的连接方式;所述内存关系映射表由所述各个内存的内存信息确定;所述内存时延表包括所述第一处理器至所述各个内存的综合访问时延;
基于所述内存时延表及内存的综合访问时延大小排序,获取所述数据迁移映射表。
5.根据权利要求1所述的方法,其特征在于,在响应于所述数据迁移指令之后,所述方法还包括:
获取所述各个内存的内存信息;
基于所述内存信息,获取内存关系映射表;所述内存关系映射表包括所述多个处理器中每个处理器与各自连接的内存之间的连接方式;
基于所述内存关系映射表获取内存时延表;所述内存时延表包括所述第一处理器至所述各个内存的综合访问时延;
基于所述内存时延表及内存的综合访问时延大小排序,获取所述数据迁移映射表。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述数据迁移映射表中每一个内存的综合访问时延满足:
T_total=T_equal+T_real
其中,T_total表示综合访问时延,T_real表示真实访问时延,T_equal表示等效访问时延。
7.根据权利要求6所述的方法,其特征在于,所述等效访问时延满足:
T_equal=α×T_remote
其中,当所述内存与所述第一处理器连接的情况下,α为第一取值;当所述内存与第二处理器连接的情况下,α为第二取值;所述第二处理器为所述多个处理器中除所述第一处理器中的一个;所述第二取值大于所述第一取值;所述T_remote表示所述内存与所述第二处理器连接的情况下,所述第一处理器访问所述内存时的性能损失对应的时延折算系数。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述数据迁移指令包括:第一数据迁移方向;所述第一数据迁移方向用于指示热数据的迁移方向;
所述从数据迁移映射表中确定第二内存,包括:
从所述数据迁移映射表中确定所述第一内存在所述第一数据迁移方向上对应的第一内存集合;所述第一内存集合中每个内存的综合访问时延均小于所述第一内存的综合访问时延;
将所述第一内存集合中的目标内存作为所述第二内存,所述目标内存的综合访问时延小于所述第一内存集合中的其他内存的综合访问时延。
9.根据权利要求8所述的方法,其特征在于,在将所述待迁移数据从所述第一内存迁移至所述第二内存之后,所述方法还包括:
在迁移失败的情况下,按照综合访问时延从小到大的顺序,将所述第一内存集合中所述目标内存的下一个内存作为所述第二内存。
10.根据权利要求1-7任一项所述的方法,其特征在于,所述数据迁移指令包括:第二数据迁移方向;所述第二数据迁移方向用于指示冷数据的迁移方向;
所述从数据迁移映射表中确定第二内存,包括:
从所述数据迁移映射表中确定所述第一内存在第二数据迁移方向上对应的第二内存集合;所述第二内存集合中每个内存的综合访问时延均大于所述第一内存的综合访问时延;
将所述第二内存集合中的一个内存作为所述第二内存。
11.根据权利要求1-10任一项所述的方法,其特征在于,
所述至少一个内存与处理器的连接方式包括以下一种或多种方式:直接连接、通过计算快速链路CXL连接、通过CXL交换芯片连接。
12.一种计算设备,其特征在于,计算设备包括多个处理器,所述多个处理器中每一个处理器连接至少一个内存,第一处理器为所述多个处理中的一个,所述第一处理器用于:
响应于数据迁移指令,从数据迁移映射表中确定第二内存;所述数据迁移映射表包括第一内存对应的内存集合,第二内存为所述内存集合中的一个,所述第一内存对应的内存集合基于各个内存的综合访问时延得到,各个内存的综合访问时延是根据所述第一处理器至该内存的真实访问时延,以及所述第一处理器至该内存的等效访问时延确定的,所述等效访问时延用于指示所述第一处理器访问所述内存时的性能损失;
将所述待迁移数据从所述第一内存迁移至所述第二内存。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310279463.5A CN116521608A (zh) | 2023-03-21 | 2023-03-21 | 数据迁移方法及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310279463.5A CN116521608A (zh) | 2023-03-21 | 2023-03-21 | 数据迁移方法及计算设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116521608A true CN116521608A (zh) | 2023-08-01 |
Family
ID=87398410
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310279463.5A Pending CN116521608A (zh) | 2023-03-21 | 2023-03-21 | 数据迁移方法及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116521608A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116881016A (zh) * | 2023-09-06 | 2023-10-13 | 苏州浪潮智能科技有限公司 | 服务器进程的处理方法及装置、存储介质及电子设备 |
-
2023
- 2023-03-21 CN CN202310279463.5A patent/CN116521608A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116881016A (zh) * | 2023-09-06 | 2023-10-13 | 苏州浪潮智能科技有限公司 | 服务器进程的处理方法及装置、存储介质及电子设备 |
CN116881016B (zh) * | 2023-09-06 | 2024-01-19 | 苏州浪潮智能科技有限公司 | 服务器进程的处理方法及装置、存储介质及电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20160085585A1 (en) | Memory System, Method for Processing Memory Access Request and Computer System | |
US20160170886A1 (en) | Multi-core processor supporting cache consistency, method, apparatus and system for data reading and writing by use thereof | |
CN107621959B (zh) | 电子装置及其软件训练方法、计算系统 | |
CN106445834A (zh) | 管理存储器模块中的操作状态数据 | |
CN110457261B (zh) | 数据访问方法、装置及服务器 | |
US11940915B2 (en) | Cache allocation method and device, storage medium, and electronic device | |
CN114168271B (zh) | 一种任务调度方法、电子设备及存储介质 | |
US12020052B2 (en) | Goal-directed software-defined NUMA working set management | |
CN112445423A (zh) | 存储器系统、计算机系统及其数据管理方法 | |
CN116521608A (zh) | 数据迁移方法及计算设备 | |
CN115904212A (zh) | 数据处理的方法、装置、处理器和混合内存系统 | |
JP2004527040A (ja) | 非揮発性メモリをバッファーリングするために揮発性メモリを用いること | |
CN106354428B (zh) | 一种多物理层分区计算机体系结构的存储共享系统 | |
JP6343722B2 (ja) | マルチコアシステムにおいてデータ訪問者ディレクトリにアクセスするための方法及びデバイス | |
CN111831451A (zh) | 云主机内存分配方法及云主机、设备及存储介质 | |
CN107870877B (zh) | 用于在存储系统中管理数据访问的方法和系统 | |
CN116483740A (zh) | 内存数据的迁移方法、装置、存储介质及电子装置 | |
CN116401043A (zh) | 一种计算任务的执行方法和相关设备 | |
CN110447019B (zh) | 存储器分配管理器及由其执行的用于管理存储器分配的方法 | |
CN113282407B (zh) | 基于持久性内存的用户层异步io方法与系统 | |
CN114610243A (zh) | 一种精简卷转换方法、系统、存储介质及设备 | |
CN112445412B (zh) | 一种数据存储方法及装置 | |
CN115495433A (zh) | 一种分布式存储系统、数据迁移方法及存储装置 | |
JP2023527770A (ja) | メモリにおける推論 | |
CN112748989A (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 |