CN116991544B - Cxl设备的模拟方法、装置、电子设备和客户机 - Google Patents
Cxl设备的模拟方法、装置、电子设备和客户机 Download PDFInfo
- Publication number
- CN116991544B CN116991544B CN202311252710.9A CN202311252710A CN116991544B CN 116991544 B CN116991544 B CN 116991544B CN 202311252710 A CN202311252710 A CN 202311252710A CN 116991544 B CN116991544 B CN 116991544B
- Authority
- CN
- China
- Prior art keywords
- cxl
- virtual
- client
- storage medium
- memory
- 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
- 238000000034 method Methods 0.000 title claims abstract description 78
- 238000004088 simulation Methods 0.000 title abstract description 29
- 230000006870 function Effects 0.000 claims description 19
- 230000002085 persistent effect Effects 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 16
- 238000004891 communication Methods 0.000 claims description 12
- 238000012360 testing method Methods 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 claims description 8
- 230000004044 response Effects 0.000 claims description 7
- 238000013507 mapping Methods 0.000 claims description 6
- 238000000638 solvent extraction Methods 0.000 claims description 5
- 238000004519 manufacturing process Methods 0.000 claims description 3
- 238000004458 analytical method Methods 0.000 abstract description 15
- 238000010586 diagram Methods 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 239000011159 matrix material Substances 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 230000006978 adaptation Effects 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000009977 dual effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000000873 masking effect Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011056 performance test Methods 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000013519 translation Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45541—Bare-metal, i.e. hypervisor runs directly on hardware
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45579—I/O management, e.g. providing access to device drivers or storage
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种CXL设备的模拟方法、装置、电子设备和客户机,其中,该方法应用于宿主机的客户机,客户机包括至少一个第一NUMA节点,第一NUMA节点包括处理器以及运行在处理器上的操作***,该方法包括:对操作***的内核进行编译,使得编译后的内核代码支持预定协议,得到内核镜像文件,预定协议包括CXL内存协议;制作操作***的发行版的根文件***;加载内核镜像文件以及根文件***,以在客户机中建立虚拟CXL设备。通过本申请,解决了难以分析CXL设备访问性能的问题。
Description
技术领域
本申请实施例涉及计算机领域,具体而言,涉及一种CXL设备的模拟方法、装置、计算机可读存储介质、电子设备和客户机。
背景技术
数据密集型技术的快速发展推动了对具有可扩展、可组合和一致性计算环境的新型体系结构解决方案的需求增长。CXL(Compute Express Link,计算快速链路)作为一种开放标准的互连协议,通过有效扩展内存容量和带宽克服了当前体系结构的限制,为各种应用的发展提供了支撑。
当前也出现了各种互连技术,比如CCIX(Cache Coherent Interconnect forAccelerators,加速器缓存一致性互连),Gen-Z,NVLink等,然而其它互连技术均有各种各样的限制,比如NVlink技术偏封闭,支持的厂商比较少,CCIX使用对称的协议,使得设备的适配成本增高,因此越来越多的厂商选择支持CXL作为当前及未来的高效互连技术。
在2019年发布第一代CXL1.1协议规范之后,截止到目前,协议规范CXL3.0已经发布,然后由于支持CXL的主机芯片和设备需要实现硬件级别的适配,硬件的适配成本比较高,而且需要设备和CPU芯片的支持,目前大多数厂商甚至都没有拿到CXL的硬件IP,因此要想学习了解CXL的特性,甚至在其上做一些应用是非常困难的。
发明内容
本申请实施例提供了一种CXL设备的模拟方法、装置、计算机可读存储介质、电子设备和客户机,以至少解决相关技术中难以分析CXL设备访问性能的问题。
根据本申请的一个实施例,提供了一种CXL设备的模拟方法,所述方法应用于宿主机的客户机,所述客户机包括至少一个第一NUMA(Non Uniform Memory Access,非一致性内存访问)节点,所述第一NUMA节点包括处理器以及运行在所述处理器上的操作***,所述方法包括:对所述操作***的内核进行编译,使得编译后的内核代码支持预定协议,得到内核镜像文件,所述预定协议包括CXL内存协议;制作所述操作***的发行版的根文件***;加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备。
在一个示例性实施例中,对所述操作***的内核进行编译,使得编译后的内核代码支持预定协议,得到内核镜像文件,包括:响应于根据所述预定协议生成的配置指令,为所述内核配置预定参数,所述预定参数包括所述虚拟CXL设备的存储介质的类型、所述存储介质的访问方式以及所述虚拟CXL设备的驱动类型;对配置有所述预定参数的所述内核代码进行编译,得到所述内核镜像文件。
在一个示例性实施例中,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:在所述类型为持久性存储介质的情况下,对所述虚拟CXL设备的所述持久性存储介质进行区域划分,得到多个存储介质区域;根据所述访问方式,至少为各所述存储介质区域配置命名空间,以将所述虚拟CXL设备分配至第二NUMA节点上,所述第二NUMA节点不包括所述处理器。
在一个示例性实施例中,对所述虚拟CXL设备的所述持久性存储介质进行区域划分,得到多个存储介质区域,包括:调用cxl工具对所述持久性存储介质进行区域划分,得到多个所述存储介质区域。
在一个示例性实施例中,根据所述访问方式,至少为各所述存储介质区域配置命名空间,以将所述虚拟CXL设备分配至第二NUMA节点上,包括:在所述访问方式为直接内存访问的情况下,为各所述存储介质区域配置所述命名空间,以将所述虚拟CXL设备分配至第二NUMA节点上;在所述访问方式为***内存访问的情况下,为各所述存储介质区域配置所述命名空间;将配置有所述命名空间的各所述存储介质区域的访问方式转换为所述***内存访问;运行第一节点查看指令,以将转换后的所述虚拟CXL设备分配至所述第二NUMA节点上。
在一个示例性实施例中,为各所述存储介质区域配置所述命名空间,包括:调用ndctl工具为各所述存储介质区域配置所述命名空间。
在一个示例性实施例中,将配置有所述命名空间的各所述存储介质区域的访问方式转换为所述***内存访问,包括:调用daxctl工具将配置有所述命名空间的各所述存储介质区域的访问方式转换为所述***内存访问。
在一个示例性实施例中,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:在所述类型为易失性存储介质的情况下,运行第二节点查看指令,以将所述虚拟CXL设备分配至第二NUMA节点上,所述第二NUMA节点不包括所述处理器。
在一个示例性实施例中,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:在所述内核中创建所述虚拟CXL设备的驱动程序。
在一个示例性实施例中,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:在所述处理器中创建用于将所述处理器的缓存数据的协议转换为所述预定协议的一致性协议引擎模块。
在一个示例性实施例中,加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备,包括:加载所述内核镜像文件以及所述根文件***,在所述客户机中建立初始虚拟CXL设备,所述初始虚拟CXL设备为支持所述预定协议通信的虚拟设备,所述初始虚拟CXL设备包括存储介质;在所述初始虚拟CXL设备中创建以下至少之一:存储控制器、PCIe(Peripheral Component Interconnect Express,高速串行计算机扩展总线标准)功能模块,得到所述虚拟CXL设备,其中,所述存储控制器用于对所述宿主机的内存地址进行解析,所述PCIe功能模块用于所述处理器的配置空间的访问、基地址寄存器的内存映射的修改以及消息中断处理。
在一个示例性实施例中,加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备,包括:加载所述内核镜像文件以及所述根文件***,确定是否生成所述虚拟CXL设备的内存文件;在生成所述虚拟CXL设备的内存文件的情况下,确定在所述客户机中建立所述虚拟CXL设备。
在一个示例性实施例中,所述操作***包括应用程序,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:获取所述应用程序的运行需求信息,所述运行需求信息包括需求内存容量大、需求内存带宽大以及需求计算时延小中之一;根据所述运行需求信息,确定所述客户机的内存分配策略;根据所述内存分配策略,运行所述客户机,并对所述虚拟CXL设备的访问性能进行测试。
在一个示例性实施例中,根据所述运行需求信息,确定所述客户机的内存分配策略,包括:在所述运行需求信息为所述需求内存容量大的情况下,确定所述内存分配策略为:在使用所述虚拟CXL设备的存储介质前,优先使用所述内核的本地内存;在所述运行需求信息为所述需求内存带宽大的情况下,确定所述内存分配策略为:将同一数据分别存放在所述存储介质和所述本地内存;在所述运行需求信息为所述需求计算时延小的情况下,确定所述内存分配策略为:在所述应用程序的局部性大于预设值的情况下,使用所述存储介质,在所述局部性小于或者等于所述预设值的情况下,使用所述本地内存。
在一个示例性实施例中,对所述虚拟CXL设备的访问性能进行测试,包括:调用MLC(Memory Latency Checker,内存压力测试)工具测量所述处理器与所述虚拟CXL设备的存储介质之间的吞吐量,得到所述虚拟CXL设备对应的带宽性能参数;调用所述MLC工具测量所述处理器与所述存储介质之间的访问时延,得到所述虚拟CXL设备对应的时延性能参数。
在一个示例性实施例中,所述预定协议还包括CXL缓存协议。
在一个示例性实施例中,所述客户机中的所述虚拟CXL设备有至少一个,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:在所述客户机中建立虚拟CXL交换机;分别建立所述虚拟CXL交换机与至少一个所述虚拟CXL设备以及至少一个所述处理器之间的通信连接。
根据本申请的另一个实施例,提供了一种CXL设备的模拟装置,所述装置应用于宿主机的客户机,所述客户机包括至少一个第一NUMA节点,所述第一NUMA节点包括处理器以及运行在所述处理器上的操作***,所述装置包括:编译单元,用于对所述操作***的内核进行编译,使得编译后的内核代码支持预定协议,得到内核镜像文件,所述预定协议包括CXL内存协议;制作单元,用于制作所述操作***的发行版的根文件***;加载单元,用于加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备。
根据本申请的又一个实施例,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述任一种方法实施例中的步骤。
根据本申请的又一个实施例,还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述任一种方法实施例中的步骤。
根据本申请的再一个实施例,还提供了一种客户机,包括:至少一个第一NUMA节点,所述第一NUMA节点包括处理器以及运行在所述处理器上的操作***;虚拟CXL设备,所述虚拟CXL设备为采用任一种所述的方法的步骤模拟得到的。
通过本申请,搭建虚拟客户机,并在客户机中模拟支持CXL内存协议的CXL设备,实现了通过纯软件模拟CXL type3设备,可以对虚拟CXL type3设备进行特性分析,来了解该设备的访问性能,为后续分析了解CXL type3设备的访问性能提供了支持。
附图说明
图1是根据本申请实施例的CXL设备的模拟方法的移动终端的硬件结构框图;
图2是根据本申请实施例的CXL设备的模拟方法的流程图;
图3是根据本申请实施例的客户机与宿主机的对应关系图;
图4是根据本申请实施例的客户机的一种结构示意图;
图5是根据本申请实施例的客户机的另一种结构示意图;
图6是根据本申请实施例的客户机的再一种结构示意图;
图7是根据本申请实施例的CXL设备的模拟装置的结构框图。
其中,上述附图包括以下附图标记:
102、处理器;104、存储器;106、传输设备;108、输入输出设备。
具体实施方式
下文中将参考附图并结合实施例来详细说明本申请的实施例。
需要说明的是,本申请的说明书和权利要求书及所述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
本申请实施例中所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在移动终端上为例,图1是本申请实施例的一种CXL设备的模拟方法的移动终端的硬件结构框图。如图1所示,移动终端可以包括一个或多个(图1中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)和用于存储数据的存储器104,其中,所述移动终端还可以包括用于通信功能的传输设备106以及输入输出设备108。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对所述移动终端的结构造成限定。例如,移动终端还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本申请实施例中的CXL设备的模拟方法对应的计算机程序,处理器102通过运行存储在存储器104内的计算机程序,从而执行各种功能应用以及数据处理,即实现所述的方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。所述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输设备106用于经由一个网络接收或者发送数据。所述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输设备106包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输设备106可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
在本实施例中提供了一种运行于电子设备的CXL设备的模拟方法,该电子设备可以集成在宿主机中,该电子设备中安装有模拟处理器软件,该方法为电子设备通过运行该模拟处理器软件实现的,图2是根据本申请实施例的CXL设备的模拟方法的流程图,其中,所述方法应用于宿主机的客户机,所述客户机包括至少一个第一NUMA节点,所述第一NUMA节点包括处理器以及运行在所述处理器上的操作***,如图2所示,该流程包括如下步骤:
步骤S204,对所述操作***的内核进行编译,使得编译后的内核代码支持预定协议,得到内核镜像文件,所述预定协议包括CXL内存协议;
具体地,所述CXL内存协议又称为CXL.mem协议,该协议定义了处理器和内存之间的传输接口,是CXL类型3(type3)设备所需的协议。
步骤S206,制作所述操作***的发行版的根文件***;
具体地,所述操作***的发行版包括但不限于Debian、Ubuntu以及CentOS等。
步骤S208,加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备。
具体地,通过启动模拟处理器软件来加载所述内核镜像文件以及所述根文件***,实现虚拟CXL设备的搭建。
通过所述步骤,首先根据包括CXL内存协议的预定协议对操作***的内核进行编译,得到内核镜像文件;之后制作该操作***的根文件***;最后加载得到的内核镜像文件和根文件***,在客户机中模拟得到虚拟CXL设备。相比于现有技术中CXL硬件设备短缺,造成难以对CXL设备的访问性能进行分析了解的问题,本申请通过搭建虚拟客户机,并在客户机中模拟支持CXL内存协议的CXL设备,实现了通过纯软件模拟CXL type3设备,可以对虚拟CXL type3设备进行特性分析,来了解该设备的访问性能,为后续分析了解CXL type3设备的访问性能提供了支持。
其中,所述步骤的执行主体还可以为服务器以及终端等,但不限于此。
步骤S204和步骤S206的执行顺序是可以互换的,即可以先执行步骤S206,然后再执行S204。
其中,所述操作***可以为任意合适的操作***,如Linux等。第一NUMA节点还包括内存,内存的类型包括但不限于DRAM(Dynamic Random Access Memory,动态随机存取内存)。在第一NUMA节点有多个的情况下,多个第一NUMA节点之间通过如QPI(Intel QuickPath Interconnect,快速通道互联)/UPI(Ultra Path Interconnect,超路径互联)总线等互联模块实现互联。一个所述第一NUMA节点中的所述处理器可以有一个,也可以有多个。所述处理器具体可以为CPU(Central Processing Unit,中央处理器),也可以为GPU(Graphics Processing Unit,图形处理器)等其他类型的处理器。
需要说明的是,所述CXL设备为支持CXL***的硬件设备,也就是所述CXL设备通过硬件实现与其他设备的CXL协议交互。而虚拟CXL设备则是通过模拟器模拟CXL协议通道、模拟支持CXL***的硬件设备的信息产生、响应以及发出动作。
此外,除了所述CXL.mem协议外,所述预定协议还包括CXL缓存协议,又叫做CXL.cache协议。CXL.cache协议为CXL type2设备所需的协议,通过本申请的所述方案,除了CXL type3设备外,还可以在客户机中模拟得到CXL type2设备。
具体地,搭建宿主机的客户机可以通过所述模拟处理器软件新建一个进程来模拟客户机侧***来实现,包括模拟所述客户机侧的所述处理器和RAM等各种设备资源。其中,在所述模拟处理器软件为QEMU(Quick Emulator,快速模拟器)的情况下,具体流程如下:创建模拟芯片组;创建CPU线程来表示客户机的CPI(Cycle Per Instruction,平均执行周期数)执行流;在QEMU的虚拟地址空间中分配空间作为客户机的物理地址;根据用户在命令行指定的设备为客户机创建对应的虚拟设备;在主线程中监听多种事件,这些事件包括客户机对设备的I/O(Input/Output,输入/输出)访问、用户对客户机的用户界面、虚拟设备对应的宿主机上的一些I/O事件(比如客户机网络数据的接收)等。
如图3所示,所述客户机运行时,客户机中各个组件与宿主机侧的对应关系包括:
客户机的处理器(CPU):客户机的一个CPU对应宿主机的一个线程,通过QEMU和KVM(Kernel Virtual Machine,内核虚拟机器)的相互合作,这些线程会直接被宿主机的操作***正常调度,直接执行客户机中的代码;
客户机的内存:客户机的物理内存对应于QEMU中的虚拟内存,客户机的虚拟地址转换为宿主机的物理地址需要先将客户机的虚拟地址转换为客户机的物理地址,然后再将客户机的物理地址通过KVM的页表完成客户机物理地址到宿主机物理地址的转换;
客户机的设备(虚拟CXL设备):客户机中的设备是通过QEMU呈现给它的,操作***在启动时进行设备枚举,加载对应的驱动程序;
客户机与宿主机的交互:客户机的操作***通过I/O端口或者MMIO(MemoryMapped I/O)进行交互,KVM会截获客户机的操作***中端口的I/O请求,大多数时候KVM会将请求分发到用户空间的QEMU进程中,由QEMU处理这些I/O请求。
根据本申请的一些示例性实施例,步骤S204,对所述操作***的内核进行编译,使得编译后的内核代码支持预定协议,得到内核镜像文件,具体包括:
步骤S2041:响应于根据所述预定协议生成的配置指令,为所述内核配置预定参数,所述预定参数包括所述虚拟CXL设备的存储介质的类型、所述存储介质的访问方式以及所述虚拟CXL设备的驱动类型;
具体地,通过响应于生成配置界面的指令,显示包括所述存储介质的类型选项以及访问方式选项的配置界面,操作人员根据所述预定协议在该配置界面上进行选择操作,来生成所述配置指令。所述类型包括持久性存储介质和易失性存储介质,所述访问方式包括直接内存访问以及***内存访问。所述驱动类型用于识别和使用虚拟CXL设备。
步骤S2042:对配置有所述预定参数的所述内核代码进行编译,得到所述内核镜像文件。
所述实施例中,根据配置指令,为内核配置存储介质的类型以及访问方式等预定参数,再进行内核代码编译,进一步地保证了得到的内核镜像文件支持CXL.mem协议,从而进一步地保证了加载该内核镜像文件和根文件***后,可以模拟得到CXL type3设备。
为了进一步地实现对虚拟CXL设备的配置,使得配置后的CXL设备可以比较准确地反映CXL硬件设备的特性,另一个示例性实施例中,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:在所述类型为持久性存储介质的情况下,对所述虚拟CXL设备的所述持久性存储介质进行区域划分,得到多个存储介质区域;根据所述访问方式,至少为各所述存储介质区域配置命名空间,以将所述虚拟CXL设备分配至第二NUMA节点上,所述第二NUMA节点不包括所述处理器。
具体地,对所述虚拟CXL设备的所述持久性存储介质进行区域划分,得到多个存储介质区域,包括:调用cxl工具对所述持久性存储介质进行区域划分,得到多个所述存储介质区域。其中,cxl工具为虚拟CXL设备的管理工具,包括创建与虚拟CXL设备的存储介质相关的区域划分操作等,通过调用该工具,进一步地保证了可以较为简单快捷地实现对虚拟CXL设备的内存分区。
在实际的应用过程中,所述虚拟CXL设备中存储介质的访问方式不同,对应的分配方式也不同,本申请的可选方案中,根据所述访问方式,至少为各所述存储介质区域配置命名空间,以将所述虚拟CXL设备分配至第二NUMA节点上,包括:
在所述访问方式为直接内存访问的情况下,为各所述存储介质区域配置所述命名空间,以将所述虚拟CXL设备分配至第二NUMA节点上;
具体地,在所述访问方式为直接内存访问的情况下,在为各所述存储介质区域配置所述命名空间之后,可以在客户机对应的图形界面上看到/dev/dax0.0文件,表征已完成虚拟CXL设备的分配。直接内存访问(Direct Access,简称为DAX)机制是一种支持用户态软件直接访问存储于持久性内存的文件的机制。
在所述访问方式为***内存访问(又称为System-RAM模式)的情况下,为各所述存储介质区域配置所述命名空间;
将配置有所述命名空间的各所述存储介质区域的访问方式转换为所述***内存访问;
运行第一节点查看指令,以将转换后的所述虚拟CXL设备分配至所述第二NUMA节点上。
具体地,所述第一节点查看指令可以为QEMU中的Numactl–H指令。
通过所述实施例,进一步地实现了对于不同访问方式和不同类型的虚拟CXL设备分配给NUMA节点。
具体地,为各所述存储介质区域配置所述命名空间,包括:调用ndctl工具为各所述存储介质区域配置所述命名空间。其中,ndctl工具为NVDIMM(Non-Volatile Dual in-Line Memory Module,非易失性双列直插式内存模块)的管理工具,包括对命名空间的配置操作等。通过调用该工具,进一步地保证了可以较为简单快捷地实现对内存分区的命名空间配置。
为了进一步地保证较为简单快捷地对存储介质区域进行转换,其他实施例中,将配置有所述命名空间的各所述存储介质区域的访问方式转换为所述***内存访问,包括:调用daxctl工具将配置有所述命名空间的各所述存储介质区域的访问方式转换为所述***内存访问。其中,daxctl工具为管理和监控DAX设备的工具,配合客户机中的内核和应用程序使用,进行创建、销毁和转换DAX设备。
在一个示例性实施例中,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:在所述类型为易失性存储介质的情况下,运行第二节点查看指令,以将所述虚拟CXL设备分配至第二NUMA节点上,所述第二NUMA节点不包括所述处理器。本实施例中,在所述存储介质的类型为易失性存储介质的情况下,直接视为无处理器的***内存访问模式,通过运行所述第二节点查看指令,来实现虚拟CXL设备与第二NUMA节点的对应关系。
其中,所述第二节点查看指令也可以为QEMU中的Numactl–H指令。
一种具体的实施例中,如图4所示,所述客户机中,所述第一NUMA节点有两个,分别为NUMA node0和NUMA node1,在所述客户机中创建得到虚拟CXL设备并进行相应配置后,客户机的***中会新增一个第二NUMA节点,即图4中的NUMA node2,其中,NUMA node0和NUMAnode1分别有一个CPU,node0和node1两者的CPU通过QPI/UPI总线互联通信,NUMA node2中没有CPU与其他节点的CPU相连接,而是通过PCIe总线连接在NUMA node0上。
根据本申请再一些可选实施例,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:在所述内核中创建所述虚拟CXL设备的驱动程序。通过在内核中创建虚拟CXL设备的驱动程序,可以实现对客户机中虚拟CXL设备的发现和枚举,以及实现客户机***中内存地址空间的映射关系的建立。
具体地,在所述内核代码中已集成CXL设备的相关驱动程序,只要在特定的内核版本中编译,编译后的***便支持CXL设备的驱动程序。
为了进一步地实现客户机中处理器与虚拟CXL设备内存之间的一致性,又一个示例性方案中,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:在所述处理器中创建用于将所述处理器的缓存数据的协议转换为所述预定协议的一致性协议引擎模块。通过创建该一致性协议引擎模块,可以将处理器侧的缓存协议数据转换为CXL.mem协议数据,来维护处理器侧与虚拟CXL设备内存之间的一致性。
其中,客户机中在CPU侧集成的一致性协议引擎模块是为了让CPU能够以访问内存的方式去访问虚拟CXL设备内存,因此该一致性协议引擎模块负责将CPU对虚拟CXL设备内存的访问请求收集并处理转发。CPU访问虚拟CXL设备内存会优先检查Cache(内存)中是否有相关数据,如果没有,则通过一致性协议引擎模块发送相关的访问请求给虚拟CXL设备,虚拟CXL设备会将相应的数据同样通过一致性协议引擎模块返回给主机,并缓存入cache,主机根据情况设定该数据的一致性状态并进行维护。
具体地,加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备,包括:加载所述内核镜像文件以及所述根文件***,在所述客户机中建立初始虚拟CXL设备,所述初始虚拟CXL设备为支持所述预定协议通信的虚拟设备,即如图5所示,所述初始虚拟CXL设备包括CXL协议通信功能,所述初始虚拟CXL设备还包括存储介质;在所述初始虚拟CXL设备中创建以下至少之一:存储控制器、PCIe功能模块,得到所述虚拟CXL设备,其中,所述存储控制器用于对所述宿主机的内存地址进行解析,所述PCIe功能模块用于所述处理器的配置空间的访问、基地址寄存器的内存映射的修改以及消息中断处理。所述实施例中,通过在初始虚拟CXL设备中增加PCIe功能的接口和/或增加与存储介质相关的存储控制器功能,模拟出CXL硬件设备的关键特性,进一步地保证了通过纯软件对CXL硬件设备的模拟效果较好,进一步地保证了后续分析CXL type3设备得到的访问性能结果较为贴合分析CXL硬件设备得到的结果,进一步地保证了分析结果的准确性。
本申请的一种实施例中,在所述初始虚拟CXL设备中创建以下至少之一:存储控制器、PCIe功能模块,包括:在所述初始虚拟CXL设备中分别创建存储控制器和PCIe功能模块。具体可在QEMU模拟器中,已支持对不同存储介质的存储控制器功能的模拟,并提供相关接口来实现。现有的QEMU模拟器中已集成PCIe协议接口设备的基础功能的模拟,最新版本的QEMU模拟器中也已集成对CXL协议接口的模拟,因此,只需在QEMU模拟器启动时,对这些设备模块进行相应的配置即可。
可选地,加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备,包括:加载所述内核镜像文件以及所述根文件***,确定是否生成所述虚拟CXL设备的内存文件;在生成所述虚拟CXL设备的内存文件的情况下,确定在所述客户机中建立所述虚拟CXL设备。具体地,启动QEMU加载所述内核镜像文件以及所述根文件***之后,在出现类似于/dev/cxl/mem0的内存文件的情况下,确定成功模拟出了所述虚拟CXL设备。
实际应用中,在把所有数据存放在CXL设备的存储介质中,计算时直接从CXL设备的存储介质中加载的情况下,对CXL设备进行测试,得到的部分测试结果表明CXL设备的存储介质的访问时延是大于本地内存的,访问带宽也是小于本地内存的,这样的结果是正常的,因为相比起访问本地内存来说,访问CXL设备上的存储介质需要经过更多的地址转换操作,并且额外需要CXL协议的处理消耗,但是本地内存的容量和带宽由于技术原因是有限的,CXL设备存储介质作为经过PCIe总线连接的外部存储,能够在不增加额外成本的情况下,有效扩展内存的带宽和容量,因此对于在把所有数据存放在CXL设备的存储介质中,计算时直接从CXL设备的存储介质中加载的内存分配策略下进行的测量,测量的时延和带宽结果并不能体现出CXL设备所带来的优势。
为了解决所述技术问题,进一步地保证虚拟CXL设备可以较为客观地反映CXL硬件设备的性能,本申请的具体应用过程中,所述操作***包括应用程序,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:获取所述应用程序的运行需求信息,所述运行需求信息包括需求内存容量大、需求内存带宽大以及需求计算时延小中之一;根据所述运行需求信息,确定所述客户机的内存分配策略;根据所述内存分配策略,运行所述客户机,并对所述虚拟CXL设备的访问性能进行测试。本申请的所述实施例中,提出了针对不同的运行需求信息执行不同的内存分配策略后再进行性能测试的方案,充分考虑了使用CXL设备的存储介质前后应用程序的性能差异,可以更好地体现出CXL设备的优势,更加客观地反映出CXL设备的访问性能。
具体地,所述方法还包括:在所述客户机中创建如图6所示的运行需求信息识别器,用于获取所述应用程序的运行需求信息。
在一个示例性实施例中,根据所述运行需求信息,确定所述客户机的内存分配策略,包括:
在所述运行需求信息为所述需求内存容量大的情况下,确定所述内存分配策略为:在使用所述虚拟CXL设备的存储介质前,优先使用所述内核的本地内存;
具体地,对于内存容量需求大的应用来说,为了尽可能减少CXL设备的存储介质的访问时延较大带来的性能损失,需要通过修改操作***内存的控制策略,来使得应用优先使用本地内存,在本地内存出现OOM(Out of Memory,内存不足)时,再使用CXL设备的存储介质。
在所述运行需求信息为所述需求内存带宽大的情况下,确定所述内存分配策略为:将同一数据分别存放在所述存储介质和所述本地内存;
具体地,对于内存带宽要求高的应用来说,需要将同一数据分开存放在本地内存和CXL设备的存储介质中,当处理器访问某一数据时,处理器可以同时发出指令去读取本地内存和CXL设备的存储介质,提高内存访问带宽。
在所述运行需求信息为所述需求计算时延小的情况下,确定所述内存分配策略为:在所述应用程序的局部性大于预设值的情况下,使用所述存储介质,在所述局部性小于或者等于所述预设值的情况下,使用所述本地内存。
具体地,对于计算时延要求低的应用来说,由于CXL设备的存储介质上的数据可以被处理器侧缓存住,因此需要根据应用程序的特点,尽可能地让CXL设备的存储介质上的数据被处理器侧缓存命中。将局部性高的程序放在CXL设备的内存中,这样可以利用高的缓存命中率减少对CXL内存数据的访问,从而掩盖CXL内存的性能劣势。本地内存由于访问时延相对低一些,因此可以不用刻意设计。其中,对应用程序的局部性高低的识别可以放在程序进行编译的时候进行识别判断。所述局部性包括时间局部性和/或空间局部性。
其他实施例中,对所述虚拟CXL设备的访问性能进行测试,包括:调用MLC工具测量所述处理器与所述虚拟CXL设备的存储介质之间的吞吐量,得到所述虚拟CXL设备对应的带宽性能参数;调用所述MLC工具测量所述处理器与所述存储介质之间的访问时延,得到所述虚拟CXL设备对应的时延性能参数。
具体地,假设客户机中处理器(简称为CPU)的数量为m,客户机***首先会创建m-1个线程,这些线程会负责生成负载,剩下的1个CPU会建立1个线程专门用来测量时延,这个线程会遍历一个指针数组,里面的每个指针指向数组的下一个对象,相当于创建了一个读操作的依赖,对这个数组的读操作的平均时间表示为时延,依赖于之前生成的负载的线程生成的负载,每次的时延将会不一样。使用root权限运行mlc命令:./mlc --latency_matrix和./mlc –bandwidth_matrix可以分别得到时延和带宽的测试结果。
在一个示例性实施例中,所述客户机中的所述虚拟CXL设备有至少一个,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:在所述客户机中建立虚拟CXL交换机(Switch);分别建立所述虚拟CXL交换机与至少一个所述虚拟CXL设备以及至少一个所述处理器之间的通信连接。通过模拟得到虚拟CXL交换机,可以扩展CXL设备的拓扑结构,从而更多地方便后续分析了解CXL设备的特性以及性能。
具体地,在模拟器软件代码中新建一种CXL交换机的设备类型,负责转发处理对与其连接的虚拟CXL设备的内存访问请求。在启动模拟器时,新建CXL交换机的设备,配置其与其它CXL设备的拓扑结构。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据所述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
在本实施例中还提供了一种运行于电子设备的CXL设备的模拟装置,该电子设备可以集成在宿主机中,该电子设备中安装有模拟处理器软件,该方法为电子设备通过运行该模拟处理器软件实现的,该装置用于实现所述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图7是根据本申请实施例的CXL设备的模拟装置的结构框图,其中,所述装置应用于宿主机的客户机,所述客户机包括至少一个第一NUMA节点,所述第一NUMA节点包括处理器以及运行在所述处理器上的操作***,如图7所示,该装置包括:
编译单元10,用于对所述操作***的内核进行编译,使得编译后的内核代码支持预定协议,得到内核镜像文件,所述预定协议包括CXL内存协议;
具体地,所述CXL内存协议又称为CXL.mem协议,该协议定义了处理器和内存之间的传输接口,是CXL类型3设备所需的协议。
制作单元20,用于制作所述操作***的发行版的根文件***;
具体地,所述操作***的发行版包括但不限于Debian、Ubuntu以及CentOS等。
加载单元30,用于加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备。
具体地,通过启动模拟处理器软件来加载所述内核镜像文件以及所述根文件***,实现虚拟CXL设备的搭建。
通过所述实施例,通过编译单元根据包括CXL内存协议的预定协议对操作***的内核进行编译,得到内核镜像文件;通过制作单元制作该操作***的根文件***;通过加载单元加载得到的内核镜像文件和根文件***,在客户机中模拟得到虚拟CXL设备。相比于现有技术中CXL硬件设备短缺,造成难以对CXL设备的访问性能进行分析了解的问题,本申请通过搭建虚拟客户机,并在客户机中模拟支持CXL内存协议的CXL设备,实现了通过纯软件模拟CXL type3设备,可以对虚拟CXL type3设备进行特性分析,来了解该设备的访问性能,为后续分析了解CXL type3设备的访问性能提供了支持。
其中,所述装置的执行主体还可以为服务器以及终端等,但不限于此。
其中,所述操作***可以为任意合适的操作***,如Linux等。第一NUMA节点还包括内存,内存的类型包括但不限于DRAM(Dynamic Random Access Memory,动态随机存取内存)。在第一NUMA节点有多个的情况下,多个第一NUMA节点之间通过如QPI(Intel QuickPath Interconnect,快速通道互联)/UPI(Ultra Path Interconnect,超路径互联)总线等互联模块实现互联。一个所述第一NUMA节点中的所述处理器可以有一个,也可以有多个。所述处理器具体可以为CPU(Central Processing Unit,中央处理器),也可以为GPU(Graphics Processing Unit,图形处理器)等其他类型的处理器。
需要说明的是,所述CXL设备为支持CXL***的硬件设备,也就是所述CXL设备通过硬件实现与其他设备的CXL协议交互。而虚拟CXL设备则是通过模拟器模拟CXL协议通道、模拟支持CXL***的硬件设备的信息产生、响应以及发出动作。
此外,除了所述CXL.mem协议外,所述预定协议还包括CXL缓存协议,又叫做CXL.cache协议。CXL.cache协议为CXL type2设备所需的协议,通过本申请的所述方案,除了CXL type3设备外,还可以在客户机中模拟得到CXL type2设备。
具体地,搭建宿主机的客户机可以通过所述模拟处理器软件新建一个进程来模拟客户机侧***来实现,包括模拟所述客户机侧的所述处理器和RAM等各种设备资源。其中,在所述模拟处理器软件为QEMU(Quick Emulator,快速模拟器)的情况下,具体流程如下:创建模拟芯片组;创建CPU线程来表示客户机的CPI(Cycle Per Instruction,平均执行周期数)执行流;在QEMU的虚拟地址空间中分配空间作为客户机的物理地址;根据用户在命令行指定的设备为客户机创建对应的虚拟设备;在主线程中监听多种事件,这些事件包括客户机对设备的I/O(Input/Output,输入/输出)访问、用户对客户机的用户界面、虚拟设备对应的宿主机上的一些I/O事件(比如客户机网络数据的接收)等。
如图3所示,所述客户机运行时,客户机中各个组件与宿主机侧的对应关系包括:
客户机的处理器:客户机的一个CPU对应宿主机的一个线程,通过QEMU和KVM(Kernel Virtual Machine,内核虚拟机器)的相互合作,这些线程会直接被宿主机的操作***正常调度,直接执行客户机中的代码;
客户机的内存:客户机的物理内存对应于QEMU中的虚拟内存,客户机的虚拟地址转换为宿主机的物理地址需要先将客户机的虚拟地址转换为客户机的物理地址,然后再将客户机的物理地址通过KVM的页表完成客户机物理地址到宿主机物理地址的转换;
客户机的设备:客户机中的设备是通过QEMU呈现给它的,操作***在启动时进行设备枚举,加载对应的驱动程序;
客户机与宿主机的交互:客户机的操作***通过I/O端口或者MMIO(MemoryMapped I/O)进行交互,KVM会截获客户机的操作***中端口的I/O请求,大多数时候KVM会将请求分发到用户空间的QEMU进程中,由QEMU处理这些I/O请求。
根据本申请的一些示例性实施例,所述编译单元具体包括:
第一配置模块,用于响应于根据所述预定协议生成的配置指令,为所述内核配置预定参数,所述预定参数包括所述虚拟CXL设备的存储介质的类型、所述存储介质的访问方式以及所述虚拟CXL设备的驱动类型;
具体地,通过响应于生成配置界面的指令,显示包括所述存储介质的类型选项以及访问方式选项的配置界面,操作人员根据所述预定协议在该配置界面上进行选择操作,来生成所述配置指令。所述类型包括持久性存储介质和易失性存储介质,所述访问方式包括直接内存访问以及***内存访问。所述驱动类型用于识别和使用虚拟CXL设备。
编译模块,用于对配置有所述预定参数的所述内核代码进行编译,得到所述内核镜像文件。
所述实施例中,根据配置指令,为内核配置存储介质的类型以及访问方式等预定参数,再进行内核代码编译,进一步地保证了得到的内核镜像文件支持CXL.mem协议,从而进一步地保证了加载该内核镜像文件和根文件***后,可以模拟得到CXL type3设备。
为了进一步地实现对虚拟CXL设备的配置,使得配置后的CXL设备可以比较准确地反映CXL硬件设备的特性,另一个示例性实施例中,所述装置还包括:划分单元,用于在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,在所述类型为持久性存储介质的情况下,对所述虚拟CXL设备的所述持久性存储介质进行区域划分,得到多个存储介质区域;配置单元,用于根据所述访问方式,至少为各所述存储介质区域配置命名空间,以将所述虚拟CXL设备分配至第二NUMA节点上,所述第二NUMA节点不包括所述处理器。
具体地,所述划分单元包括:第一调用模块,用于调用cxl工具对所述持久性存储介质进行区域划分,得到多个所述存储介质区域。其中,cxl工具为虚拟CXL设备的管理工具,包括创建与虚拟CXL设备的存储介质相关的区域划分操作等,通过调用该工具,进一步地保证了可以较为简单快捷地实现对虚拟CXL设备的内存分区。
在实际的应用过程中,所述虚拟CXL设备中存储介质的访问方式不同,对应的分配方式也不同,本申请的可选方案中,所述配置单元包括:
第二配置模块,用于在所述访问方式为直接内存访问的情况下,为各所述存储介质区域配置所述命名空间,以将所述虚拟CXL设备分配至第二NUMA节点上;
具体地,在所述访问方式为直接内存访问的情况下,在为各所述存储介质区域配置所述命名空间之后,可以在客户机对应的图形界面上看到/dev/dax0.0文件,表征已完成虚拟CXL设备的分配。直接内存访问机制是一种支持用户态软件直接访问存储于持久性内存的文件的机制。
第三配置模块,用于在所述访问方式为***内存访问的情况下,为各所述存储介质区域配置所述命名空间;
转换模块,用于将配置有所述命名空间的各所述存储介质区域的访问方式转换为所述***内存访问;
运行模块,用于运行第一节点查看指令,以将转换后的所述虚拟CXL设备分配至所述第二NUMA节点上。
具体地,所述第一节点查看指令可以为QEMU中的Numactl–H指令。
通过所述实施例,进一步地实现了对于不同访问方式和不同类型的虚拟CXL设备分配给NUMA节点。
具体地,所述第二配置模块包括:第一调用子模块,用于调用ndctl工具为各所述存储介质区域配置所述命名空间。其中,ndctl工具为NVDIMM的管理工具,包括对命名空间的配置操作等。通过调用该工具,进一步地保证了可以较为简单快捷地实现对内存分区的命名空间配置。
为了进一步地保证较为简单快捷地对存储介质区域进行转换,其他实施例中,转换模块包括:第二调用子模块,用于调用daxctl工具将配置有所述命名空间的各所述存储介质区域的访问方式转换为所述***内存访问。其中,daxctl工具为管理和监控DAX设备的工具,配合客户机中的内核和应用程序使用,进行创建、销毁和转换DAX设备。
在一个示例性实施例中,所述装置还包括:第一运行单元,用于在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,在所述类型为易失性存储介质的情况下,运行第二节点查看指令,以将所述虚拟CXL设备分配至第二NUMA节点上,所述第二NUMA节点不包括所述处理器。本实施例中,在所述存储介质的类型为易失性存储介质的情况下,直接视为无处理器的***内存访问模式,通过运行所述第二节点查看指令,来实现虚拟CXL设备与第二NUMA节点的对应关系。
其中,所述第二节点查看指令也可以为QEMU中的Numactl–H指令。
一种具体的实施例中,如图4所示,所述客户机中,所述第一NUMA节点有两个,分别为NUMA node0和NUMA node1,在所述客户机中创建得到虚拟CXL设备并进行相应配置后,客户机的***中会新增一个第二NUMA节点,即图4中的NUMA node2,其中,NUMA node0和NUMAnode1分别有一个CPU,node0和node1两者的CPU通过QPI/UPI总线互联通信,NUMA node2中没有CPU与其他节点的CPU相连接,而是通过PCIe总线连接在NUMA node0上。
根据本申请再一些可选实施例,所述装置还包括:第一创建单元,用于在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,在所述内核中创建所述虚拟CXL设备的驱动程序。通过在内核中创建虚拟CXL设备的驱动程序,可以实现对客户机中虚拟CXL设备的发现和枚举,以及实现客户机***中内存地址空间的映射关系的建立。
具体地,在所述内核代码中已集成CXL设备的相关驱动程序,只要在特定的内核版本中编译,编译后的***便支持CXL设备的驱动程序。
为了进一步地实现客户机中处理器与虚拟CXL设备内存之间的一致性,又一个示例性方案中,所述装置还包括:第二创建单元,用于在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,在所述处理器中创建用于将所述处理器的缓存数据的协议转换为所述预定协议的一致性协议引擎模块。通过创建该一致性协议引擎模块,可以将处理器侧的缓存协议数据转换为CXL.mem协议数据,来维护处理器侧与虚拟CXL设备内存之间的一致性。
其中,客户机中在CPU侧集成的一致性协议引擎模块是为了让CPU能够以访问内存的方式去访问虚拟CXL设备内存,因此该一致性协议引擎模块负责将CPU对虚拟CXL设备内存的访问请求收集并处理转发。CPU访问虚拟CXL设备内存会优先检查Cache(内存)中是否有相关数据,如果没有,则通过一致性协议引擎模块发送相关的访问请求给虚拟CXL设备,虚拟CXL设备会将相应的数据同样通过一致性协议引擎模块返回给主机,并缓存入cache,主机根据情况设定该数据的一致性状态并进行维护。
具体地,所述第二创建单元包括:第一加载模块,用于加载所述内核镜像文件以及所述根文件***,在所述客户机中建立初始虚拟CXL设备,所述初始虚拟CXL设备为支持所述预定协议通信的虚拟设备,即如图5所示,所述初始虚拟CXL设备包括CXL协议通信功能,所述初始虚拟CXL设备还包括存储介质;创建模块,用于在所述初始虚拟CXL设备中创建以下至少之一:存储控制器、PCIe功能模块,得到所述虚拟CXL设备,其中,所述存储控制器用于对所述宿主机的内存地址进行解析,所述PCIe功能模块用于所述处理器的配置空间的访问、基地址寄存器的内存映射的修改以及消息中断处理。所述实施例中,通过在初始虚拟CXL设备中增加PCIe功能的接口和/或增加与存储介质相关的存储控制器功能,模拟出CXL硬件设备的关键特性,进一步地保证了通过纯软件对CXL硬件设备的模拟效果较好,进一步地保证了后续分析CXL type3设备得到的访问性能结果较为贴合分析CXL硬件设备得到的结果,进一步地保证了分析结果的准确性。
本申请的一种实施例中,所述创建模块包括:创建子模块,用于在所述初始虚拟CXL设备中分别创建存储控制器和PCIe功能模块。具体可在QEMU模拟器中,已支持对不同存储介质的存储控制器功能的模拟,并提供相关接口来实现。现有的QEMU模拟器中已集成PCIe协议接口设备的基础功能的模拟,最新版本的QEMU模拟器中也已集成对CXL协议接口的模拟,因此,只需在QEMU模拟器启动时,对这些设备模块进行相应的配置即可。
可选地,所述加载单元包括:第二记载模块,用于加载所述内核镜像文件以及所述根文件***,确定是否生成所述虚拟CXL设备的内存文件;第一确定模块,用于在生成所述虚拟CXL设备的内存文件的情况下,确定在所述客户机中建立所述虚拟CXL设备。具体地,启动QEMU加载所述内核镜像文件以及所述根文件***之后,在出现类似于/dev/cxl/mem0的内存文件的情况下,确定成功模拟出了所述虚拟CXL设备。
实际应用中,在把所有数据存放在CXL设备的存储介质中,计算时直接从CXL设备的存储介质中加载的情况下,对CXL设备进行测试,得到的部分测试结果表明CXL设备的存储介质的访问时延是大于本地内存的,访问带宽也是小于本地内存的,这样的结果是正常的,因为相比起访问本地内存来说,访问CXL设备上的存储介质需要经过更多的地址转换操作,并且额外需要CXL协议的处理消耗,但是本地内存的容量和带宽由于技术原因是有限的,CXL设备存储介质作为经过PCIe总线连接的外部存储,能够在不增加额外成本的情况下,有效扩展内存的带宽和容量,因此对于在把所有数据存放在CXL设备的存储介质中,计算时直接从CXL设备的存储介质中加载的内存分配策略下进行的测量,测量的时延和带宽结果并不能体现出CXL设备所带来的优势。
为了解决所述技术问题,进一步地保证虚拟CXL设备可以较为客观地反映CXL硬件设备的性能,本申请的具体应用过程中,所述操作***包括应用程序,所述装置还包括:获取单元,用于在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,获取所述应用程序的运行需求信息,所述运行需求信息包括需求内存容量大、需求内存带宽大以及需求计算时延小中之一;确定单元,用于根据所述运行需求信息,确定所述客户机的内存分配策略;第二运行单元,用于根据所述内存分配策略,运行所述客户机,并对所述虚拟CXL设备的访问性能进行测试。本申请的所述实施例中,提出了针对不同的运行需求信息执行不同的内存分配策略后再进行性能测试的方案,充分考虑了使用CXL设备的存储介质前后应用程序的性能差异,可以更好地体现出CXL设备的优势,更加客观地反映出CXL设备的访问性能。
具体地,所述装置还包括:第三创建单元,用于在所述客户机中创建如图6所示的运行需求信息识别器,用于获取所述应用程序的运行需求信息。
在一个示例性实施例中,所述确定单元包括:
第二确定模块,用于在所述运行需求信息为所述需求内存容量大的情况下,确定所述内存分配策略为:在使用所述虚拟CXL设备的存储介质前,优先使用所述内核的本地内存;
具体地,对于内存容量需求大的应用来说,为了尽可能减少CXL设备的存储介质的访问时延较大带来的性能损失,需要通过修改操作***内存的控制策略,来使得应用优先使用本地内存,在本地内存出现OOM(Out of Memory,内存不足)时,再使用CXL设备的存储介质。
第三确定模块,用于在所述运行需求信息为所述需求内存带宽大的情况下,确定所述内存分配策略为:将同一数据分别存放在所述存储介质和所述本地内存;
具体地,对于内存带宽要求高的应用来说,需要将同一数据分开存放在本地内存和CXL设备的存储介质中,当处理器访问某一数据时,处理器可以同时发出指令去读取本地内存和CXL设备的存储介质,提高内存访问带宽。
第四确定模块,用于在所述运行需求信息为所述需求计算时延小的情况下,确定所述内存分配策略为:在所述应用程序的局部性大于预设值的情况下,使用所述存储介质,在所述局部性小于或者等于所述预设值的情况下,使用所述本地内存。
具体地,对于计算时延要求低的应用来说,由于CXL设备的存储介质上的数据可以被处理器侧缓存住,因此需要根据应用程序的特点,尽可能地让CXL设备的存储介质上的数据被处理器侧缓存命中。将局部性高的程序放在CXL设备的内存中,这样可以利用高的缓存命中率减少对CXL内存数据的访问,从而掩盖CXL内存的性能劣势。本地内存由于访问时延相对低一些,因此可以不用刻意设计。其中,对应用程序的局部性高低的识别可以放在程序进行编译的时候进行识别判断。所述局部性包括时间局部性和/或空间局部性。
其他实施例中,所述第二运行单元包括:第二调用模块,用于调用MLC工具测量所述处理器与所述虚拟CXL设备的存储介质之间的吞吐量,得到所述虚拟CXL设备对应的带宽性能参数;第三调用模块,用于调用所述MLC工具测量所述处理器与所述存储介质之间的访问时延,得到所述虚拟CXL设备对应的时延性能参数。
具体地,假设客户机中处理器(简称为CPU)的数量为m,客户机***首先会创建m-1个线程,这些线程会负责生成负载,剩下的1个CPU会建立1个线程专门用来测量时延,这个线程会遍历一个指针数组,里面的每个指针指向数组的下一个对象,相当于创建了一个读操作的依赖,对这个数组的读操作的平均时间表示为时延,依赖于之前生成的负载的线程生成的负载,每次的时延将会不一样。使用root权限运行mlc命令:./mlc --latency_matrix和./mlc –bandwidth_matrix可以分别得到时延和带宽的测试结果。
在一个示例性实施例中,所述客户机中的所述虚拟CXL设备有至少一个,所述装置还包括:第一建立单元,用于在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,在所述客户机中建立虚拟CXL交换机;第二建立单元,用于分别建立所述虚拟CXL交换机与至少一个所述虚拟CXL设备以及至少一个所述处理器之间的通信连接。通过模拟得到虚拟CXL交换机,可以扩展CXL设备的拓扑结构,从而更多地方便后续分析了解CXL设备的特性以及性能。
具体地,在模拟器软件代码中新建一种CXL交换机的设备类型,负责转发处理对与其连接的虚拟CXL设备的内存访问请求。在启动模拟器时,新建CXL交换机的设备,配置其与其它CXL设备的拓扑结构。
需要说明的是,所述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:所述模块均位于同一处理器中;或者,所述各个模块以任意组合的形式分别位于不同的处理器中。
本申请的实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行所述任一种方法实施例中的步骤。
在一个示例性实施例中,所述计算机可读存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本申请的实施例还提供了一种电子设备,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行所述任一种方法实施例中的步骤。
在一个示例性实施例中,所述电子设备还可以包括传输设备以及输入输出设备,其中,该传输设备和所述处理器连接,该输入输出设备和所述处理器连接。
本申请的实施例还提供了一种客户机,包括:至少一个第一NUMA节点,所述第一NUMA节点包括处理器以及运行在所述处理器上的操作***;虚拟CXL设备,所述虚拟CXL设备为采用任一种所述的方法的步骤模拟得到的。
本实施例中的具体示例可以参考所述实施例及示例性实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,所述的本申请的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本申请不限制于任何特定的硬件和软件结合。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (20)
1.一种CXL设备的模拟方法,其特征在于,所述方法应用于宿主机的客户机,所述客户机包括至少一个第一NUMA节点,所述第一NUMA节点包括处理器以及运行在所述处理器上的操作***,所述方法包括:
对所述操作***的内核进行编译,使得编译后的内核代码支持预定协议,得到内核镜像文件,所述预定协议包括CXL内存协议;
制作所述操作***的发行版的根文件***;
加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备,
对所述操作***的内核进行编译,使得编译后的内核代码支持预定协议,得到内核镜像文件,包括:
响应于根据所述预定协议生成的配置指令,为所述内核配置预定参数,所述预定参数包括所述虚拟CXL设备的存储介质的类型、所述存储介质的访问方式以及所述虚拟CXL设备的驱动类型;
对配置有所述预定参数的所述内核代码进行编译,得到所述内核镜像文件。
2.根据权利要求1所述的方法,其特征在于,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:
在所述类型为持久性存储介质的情况下,对所述虚拟CXL设备的所述持久性存储介质进行区域划分,得到多个存储介质区域;
根据所述访问方式,至少为各所述存储介质区域配置命名空间,以将所述虚拟CXL设备分配至第二NUMA节点上,所述第二NUMA节点不包括所述处理器。
3.根据权利要求2所述的方法,其特征在于,对所述虚拟CXL设备的所述持久性存储介质进行区域划分,得到多个存储介质区域,包括:
调用cxl工具对所述持久性存储介质进行区域划分,得到多个所述存储介质区域。
4.根据权利要求2所述的方法,其特征在于,根据所述访问方式,至少为各所述存储介质区域配置命名空间,以将所述虚拟CXL设备分配至第二NUMA节点上,包括:
在所述访问方式为直接内存访问的情况下,为各所述存储介质区域配置所述命名空间,以将所述虚拟CXL设备分配至第二NUMA节点上;
在所述访问方式为***内存访问的情况下,为各所述存储介质区域配置所述命名空间;
将配置有所述命名空间的各所述存储介质区域的访问方式转换为所述***内存访问;
运行第一节点查看指令,以将转换后的所述虚拟CXL设备分配至所述第二NUMA节点上。
5.根据权利要求4所述的方法,其特征在于,为各所述存储介质区域配置所述命名空间,包括:
调用ndctl工具为各所述存储介质区域配置所述命名空间。
6.根据权利要求4所述的方法,其特征在于,将配置有所述命名空间的各所述存储介质区域的访问方式转换为所述***内存访问,包括:
调用daxctl工具将配置有所述命名空间的各所述存储介质区域的访问方式转换为所述***内存访问。
7.根据权利要求2所述的方法,其特征在于,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:
在所述类型为易失性存储介质的情况下,运行第二节点查看指令,以将所述虚拟CXL设备分配至第二NUMA节点上,所述第二NUMA节点不包括所述处理器。
8.根据权利要求1至7中任一项所述的方法,其特征在于,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:
在所述内核中创建所述虚拟CXL设备的驱动程序。
9.根据权利要求1至7中任一项所述的方法,其特征在于,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:
在所述处理器中创建用于将所述处理器的缓存数据的协议转换为所述预定协议的一致性协议引擎模块。
10.根据权利要求1至7中任一项所述的方法,其特征在于,加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备,包括:
加载所述内核镜像文件以及所述根文件***,在所述客户机中建立初始虚拟CXL设备,所述初始虚拟CXL设备为支持所述预定协议通信的虚拟设备,所述初始虚拟CXL设备包括存储介质;
在所述初始虚拟CXL设备中创建以下至少之一:存储控制器、PCIe功能模块,得到所述虚拟CXL设备,其中,所述存储控制器用于对所述宿主机的内存地址进行解析,所述PCIe功能模块用于所述处理器的配置空间的访问、基地址寄存器的内存映射的修改以及消息中断处理。
11.根据权利要求1至7中任一项所述的方法,其特征在于,加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备,包括:
加载所述内核镜像文件以及所述根文件***,确定是否生成所述虚拟CXL设备的内存文件;
在生成所述虚拟CXL设备的内存文件的情况下,确定在所述客户机中建立所述虚拟CXL设备。
12.根据权利要求1至7中任一项所述的方法,其特征在于,所述操作***包括应用程序,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:
获取所述应用程序的运行需求信息,所述运行需求信息包括需求内存容量大、需求内存带宽大以及需求计算时延小中之一;
根据所述运行需求信息,确定所述客户机的内存分配策略;
根据所述内存分配策略,运行所述客户机,并对所述虚拟CXL设备的访问性能进行测试。
13.根据权利要求12所述的方法,其特征在于,根据所述运行需求信息,确定所述客户机的内存分配策略,包括:
在所述运行需求信息为所述需求内存容量大的情况下,确定所述内存分配策略为:在使用所述虚拟CXL设备的存储介质前,优先使用所述内核的本地内存;
在所述运行需求信息为所述需求内存带宽大的情况下,确定所述内存分配策略为:将同一数据分别存放在所述存储介质和所述本地内存;
在所述运行需求信息为所述需求计算时延小的情况下,确定所述内存分配策略为:在所述应用程序的局部性大于预设值的情况下,使用所述存储介质,在所述局部性小于或者等于所述预设值的情况下,使用所述本地内存。
14.根据权利要求12所述的方法,其特征在于,对所述虚拟CXL设备的访问性能进行测试,包括:
调用MLC工具测量所述处理器与所述虚拟CXL设备的存储介质之间的吞吐量,得到所述虚拟CXL设备对应的带宽性能参数;
调用所述MLC工具测量所述处理器与所述存储介质之间的访问时延,得到所述虚拟CXL设备对应的时延性能参数。
15.根据权利要求1至7中任一项所述的方法,其特征在于,所述预定协议还包括CXL缓存协议。
16.根据权利要求1至7中任一项所述的方法,其特征在于,所述客户机中的所述虚拟CXL设备有至少一个,在加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备之后,所述方法还包括:
在所述客户机中建立虚拟CXL交换机;
分别建立所述虚拟CXL交换机与至少一个所述虚拟CXL设备以及至少一个所述处理器之间的通信连接。
17.一种CXL设备的模拟装置,其特征在于,所述装置应用于宿主机的客户机,所述客户机包括至少一个第一NUMA节点,所述第一NUMA节点包括处理器以及运行在所述处理器上的操作***,所述装置包括:
编译单元,用于对所述操作***的内核进行编译,使得编译后的内核代码支持预定协议,得到内核镜像文件,所述预定协议包括CXL内存协议;
制作单元,用于制作所述操作***的发行版的根文件***;
加载单元,用于加载所述内核镜像文件以及所述根文件***,以在所述客户机中建立虚拟CXL设备,
所述编译单元包括:
第一配置模块,用于响应于根据所述预定协议生成的配置指令,为所述内核配置预定参数,所述预定参数包括所述虚拟CXL设备的存储介质的类型、所述存储介质的访问方式以及所述虚拟CXL设备的驱动类型;
编译模块,用于对配置有所述预定参数的所述内核代码进行编译,得到所述内核镜像文件。
18.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,其中,所述计算机程序被处理器执行时实现所述权利要求1至16任一项中所述的方法的步骤。
19.一种电子设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现所述权利要求1至16任一项中所述的方法的步骤。
20.一种客户机,其特征在于,包括:
至少一个第一NUMA节点,所述第一NUMA节点包括处理器以及运行在所述处理器上的操作***;
虚拟CXL设备,所述虚拟CXL设备为采用权利要求1至16任一项中所述的方法的步骤模拟得到的。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311252710.9A CN116991544B (zh) | 2023-09-26 | 2023-09-26 | Cxl设备的模拟方法、装置、电子设备和客户机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311252710.9A CN116991544B (zh) | 2023-09-26 | 2023-09-26 | Cxl设备的模拟方法、装置、电子设备和客户机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116991544A CN116991544A (zh) | 2023-11-03 |
CN116991544B true CN116991544B (zh) | 2024-01-26 |
Family
ID=88523570
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311252710.9A Active CN116991544B (zh) | 2023-09-26 | 2023-09-26 | Cxl设备的模拟方法、装置、电子设备和客户机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116991544B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117950921B (zh) * | 2024-03-20 | 2024-07-23 | 新华三信息技术有限公司 | 内存故障处理方法、内存扩展控制设备、电子设备及介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103645945A (zh) * | 2013-11-04 | 2014-03-19 | 天津汉柏信息技术有限公司 | 一种虚拟网卡的自动探测及驱动加载方法 |
CN109783117A (zh) * | 2019-01-18 | 2019-05-21 | 中国人民解放军国防科技大学 | 一种无盘***的镜像文件制作及启动方法 |
CN113886019A (zh) * | 2021-10-20 | 2022-01-04 | 北京字节跳动网络技术有限公司 | 虚拟机创建方法、装置、***、介质和设备 |
CN114691286A (zh) * | 2020-12-29 | 2022-07-01 | 华为云计算技术有限公司 | 服务器***、虚拟机创建方法及装置 |
CN116414526A (zh) * | 2023-06-12 | 2023-07-11 | 芯动微电子科技(珠海)有限公司 | 一种基于虚拟机的仿真装置和方法 |
-
2023
- 2023-09-26 CN CN202311252710.9A patent/CN116991544B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103645945A (zh) * | 2013-11-04 | 2014-03-19 | 天津汉柏信息技术有限公司 | 一种虚拟网卡的自动探测及驱动加载方法 |
CN109783117A (zh) * | 2019-01-18 | 2019-05-21 | 中国人民解放军国防科技大学 | 一种无盘***的镜像文件制作及启动方法 |
CN114691286A (zh) * | 2020-12-29 | 2022-07-01 | 华为云计算技术有限公司 | 服务器***、虚拟机创建方法及装置 |
CN113886019A (zh) * | 2021-10-20 | 2022-01-04 | 北京字节跳动网络技术有限公司 | 虚拟机创建方法、装置、***、介质和设备 |
CN116414526A (zh) * | 2023-06-12 | 2023-07-11 | 芯动微电子科技(珠海)有限公司 | 一种基于虚拟机的仿真装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN116991544A (zh) | 2023-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6373840B2 (ja) | クラウドコンピューティングシステムをチューニングするためのシステム及び方法 | |
JP5926864B2 (ja) | クラウドコンピューティングシステムをコンフィギュアするためのシステム及び方法 | |
US9152532B2 (en) | System and method for configuring a cloud computing system with a synthetic test workload | |
US9658895B2 (en) | System and method for configuring boot-time parameters of nodes of a cloud computing system | |
CN116991544B (zh) | Cxl设备的模拟方法、装置、电子设备和客户机 | |
US9229838B2 (en) | Modeling and evaluating application performance in a new environment | |
US20140047084A1 (en) | System and method for modifying a hardware configuration of a cloud computing system | |
US20140047342A1 (en) | System and method for allocating a cluster of nodes for a cloud computing system based on hardware characteristics | |
US20140047079A1 (en) | System and method for emulating a desired network configuration in a cloud computing system | |
US20130024646A1 (en) | Method and Simulator for Simulating Multiprocessor Architecture Remote Memory Access | |
US11483416B2 (en) | Composable infrastructure provisioning and balancing | |
CN117032812B (zh) | 服务器的管理方法、设备、装置、存储介质和电子设备 | |
CN112732501B (zh) | 一种测试方法及多处理器soc芯片 | |
US20160188477A1 (en) | Electronic system with data management mechanism and method of operation thereof | |
US20220253336A1 (en) | System, method and computer-accessible medium for a domain decomposition aware processor assignment in multicore processing system(s) | |
Li et al. | Analysis of NUMA effects in modern multicore systems for the design of high-performance data transfer applications | |
US8863060B2 (en) | Programmable intelligent storage architecture based on application and business requirements | |
US10747705B2 (en) | On-chip accelerator management | |
KR20170088277A (ko) | 데이터 교환 메커니즘을 포함하는 전자 시스템 및 그것의 동작 방법 | |
Tang et al. | Exploring Performance and Cost Optimization with ASIC-Based CXL Memory | |
CN110727611A (zh) | 一种带状态监测的可配置一致性验证*** | |
CN113098730B (zh) | 一种服务器的测试方法及设备 | |
Foyer et al. | A survey of software techniques to emulate heterogeneous memory systems in high-performance computing | |
Geier et al. | SherlockFog: a new tool to support application analysis in Fog and Edge computing | |
Reischer et al. | Bio-algebras |
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 |