本技术涉及数据存储,尤其涉及一种数据处理系统和内存动态分配方法。
背景技术:
1、虚拟化技术(virtualization technology,vt)用于支持处理器的虚拟化,能够使处理器上运行的多个操作系统在相互隔离的环境中独立运行,每个隔离的环境中运行的操作系统可以理解为一个虚拟机(virtual machine,vm)。
2、在云计算场景中,云计算集群中包括多个服务器,服务器可以称为主机,为节约主机的算力,提升主机的性能,可以为主机设置数据处理设备,将主机的部分功能卸载到数据处理设备上。在云虚拟化场景中,每个主机上可以运行多个虚拟机,相应地,主机的数据处理设备可以虚拟化为多个虚拟设备,每个虚拟设备可以通过虚拟i/o设备直通(virtualfunction i/o,vfio)框架分配给对应的虚拟机使用,每个虚拟设备具有直接存储器访问(direct memory access,dma)能力,可以直接访问对应的虚拟机的内存。每个虚拟机可以通过对应的虚拟设备发送和接收数据。
3、在上述数据处理设备中的虚拟设备可以直接访问对应的虚拟机内存的场景中,如何对缺页进行处理,是一个亟待解决的问题。
技术实现思路
1、本技术提供一种数据处理系统和内存动态分配方法,可以解决在数据处理设备直接访问虚拟机内存的过程中的缺页问题。
2、第一方面,提供一种数据处理系统,该数据处理系统包括主机和数据处理设备,其中,主机上运行有虚拟机。
3、数据处理设备在获取到虚拟机的数据处理请求后,可以根据该数据处理请求确定与虚拟机关联的虚拟机地址。其中,数据处理请求用于指示该数据处理设备接收虚拟机的待处理数据。当虚拟机地址为无效虚拟机地址时,向主机发送第一缺页信息,其中,无效虚拟机地址用于指示虚拟机关联的虚拟机地址中不满足数据处理请求要求的虚拟机地址。
4、主机根据第一缺页信息为该虚拟机分配主机物理地址,主机物理地址用于指示与无效虚拟机地址关联的内存的地址。
5、本技术提供的数据处理系统,数据处理设备可以确定与虚拟机关联的虚拟机地址,当确定虚拟机地址为无效虚拟机地址时,向主机发送第一缺页信息,以使主机根据第一缺页信息为虚拟机分配主机物理地址。从而可以解决在数据处理设备直接访问虚拟机内存的过程中的缺页问题,使主机可以不必在创建虚拟机时就为虚拟机分配固定的内存,而可以在虚拟机缺页时再为虚拟机分配内存,从而可以实现内存的动态分配。并且,可以减少虚拟机在申请内存后,大部分内存长时间处于空闲状态的现象,提高主机内存的有效利用率。
6、在一种可能的实现方式中,数据处理设备可以从主机的内存中获取虚拟机关联的虚拟机地址的映射信息,虚拟机地址的映射信息用于指示对应的虚拟机地址是否存在对应的主机物理地址。数据处理设备可以基于虚拟机地址的映射信息,识别对应的虚拟机地址为有效虚拟机地址或无效虚拟机地址。其中,有效虚拟机地址存在对应的主机物理地址;无效虚拟机地址不存在对应的主机物理地址,因此不满足数据处理请求的要求。
7、在一种可能的实现方式中,数据处理设备可以通过如下方式识别有效虚拟机地址和无效虚拟机地址:
8、将虚拟机关联的空闲虚拟机地址中的第一个虚拟机地址作为待识别虚拟机地址;其中,空闲虚拟机地址指该虚拟机地址对应的存储单元中未保存数据;
9、重复执行如下操作,直至得到有效虚拟机地址:
10、若待识别虚拟机地址的映射信息指示待识别虚拟机地址不存在对应的主机物理地址,则确定待识别虚拟机地址为无效虚拟机地址,并针对待识别虚拟机地址生成第一缺页信息;
11、将虚拟机关联的空闲虚拟机地址中,待识别虚拟机地址的下一个虚拟机地址作为新的待识别虚拟机地址;
12、若待识别虚拟机地址的映射信息指示待识别虚拟机地址存在对应的主机物理地址,则确定待识别虚拟机地址为有效虚拟机地址。
13、上述实施例中,数据处理设备在识别到无效虚拟机地址时,无需立即向主机发送缺页信息并等待主机对缺页信息的处理结果,而是可以继续从空闲虚拟机地址中识别有效虚拟机地址,因此可以节省数据处理设备等待主机进行缺页处理并返回缺页处理结果的时间,提高数据处理设备的数据处理效率。
14、在一种可能的实现方式中,数据处理设备在确定待识别虚拟机地址为无效虚拟机地址时,将无效虚拟机地址对应的页表项中的已保存数据的数据长度修改为设定值,以跳过待识别虚拟机地址,识别下一个虚拟机地址是否有效。
15、在一种可能的实现方式中,数据处理设备在确定待识别虚拟机地址为无效虚拟机地址时,可以针对无效虚拟机地址生成第一缺页信息,将生成的第一缺页信息保存至数据处理设备中的环形缓冲区。
16、在一种可能的实现方式中,当环形缓冲区保存的第一缺页信息的数量达到设定数量时,数据处理设备可以将环形缓冲区中保存的第一缺页信息发送至主机。其中,设定数量可以是根据环形缓冲区的容量确定的,设定数量可以等于或小于环形缓冲区的容量。
17、在另一种可能的实现方式中,当从空闲虚拟机地址中识别到有效虚拟机地址时,数据处理设备可以将环形缓冲区中保存的第一缺页信息传输至主机。
18、数据处理设备可以将第一缺页信息批量地发送至主机,与将一条第一缺页信息发送至主机相比,不仅可以节省时间,还可以节约相互信令。
19、在一种可能的实现方式中,数据处理设备还可以用于接收虚拟机的数据发送请求,从数据发送请求中获取用于保存待发送数据的目标虚拟机地址,如果目标虚拟机地址为无效虚拟机地址,则向主机发送针对目标虚拟机地址的第二缺页信息。
20、主机还可以用于,基于第二缺页信息,将目标虚拟机地址中保存的待发送数据从外部存储器读取至内存中,并建立目标虚拟机地址与目标主机物理地址之间的映射关系。目标主机物理地址为内存中用于保存待发送数据的存储单元的主机物理地址。数据处理设备还用于从目标主机物理地址对应的存储单元中读取待发送数据,并发送该待发送数据。
21、上述实现方式中,在直通场景下,本技术也可以解决发送数据时的缺页问题,保障数据发送过程的正常进行。
22、在一种可能的实现方式中,若目标虚拟机地址不存在对应的主机物理地址,数据处理设备可以禁用虚拟机的数据发送队列;其中,数据发送队列用于按发送顺序保存未发送的数据。数据处理设备在从主机获取目标虚拟机地址与目标主机物理地址之间的映射关系之后,可以重新使能虚拟机的数据发送队列,以确保数据发送的正常进行。
23、在一种可能的实现方式中,与虚拟机关联的虚拟机地址对应的页表项中包括状态位;状态位用于指示对应的虚拟机地址是否被数据处理设备访问过。
24、在一种可能的实现方式中,主机还可以用于:在确定虚拟机的待回收虚拟机地址之后,读取待回收虚拟机地址对应的页表项中的状态位,如果待回收虚拟机地址的状态位均为未使用状态,则对待回收虚拟机地址进行去映射处理。其中,未使用状态的状态位指示对应的待回收虚拟机地址未被数据处理设备访问过。
25、如果待回收虚拟机地址的状态位均为未使用状态,说明所有的待回收虚拟机地址均未被数据处理设备访问过,则主机可以直接对待回收虚拟机地址进行去映射处理。在这种情况下,主机无需向数据处理设备发送数据同步消息,也无需等待数据处理设备返回同步完成消息,可以节约等待数据处理设备返回同步完成消息的时间。由于等待数据处理设备返回同步完成消息的时间通常会很长,因此,上述实施例中为虚拟机地址设置状态位,通过查询虚拟机地址的状态位,可以大幅度减少主机与数据处理设备之间的同步等待时间,提升去映射过程及内存动态分配过程和进行内存超分的效率。
26、在一种可能的实现方式中,若待回收虚拟机地址中包含状态位为使用状态的待同步虚拟机地址,则主机向数据处理设备发送针对待同步虚拟机地址的数据同步消息;使用状态的状态位指示对应的待回收虚拟机地址被数据处理设备访问过。数据处理设备在确定已完成对待同步虚拟机地址中数据的处理后,向主机发送同步完成消息。主机接收到数据处理设备发送的同步完成消息之后,对待回收虚拟机地址进行去映射处理,以确保数据处理设备的数据处理操作的正常进行。
27、在一种可能的实现方式中,主机可以采用交换指令读取待回收虚拟机地址对应的页表项中的状态位;交换指令指示在读取待回收虚拟机地址的状态位之后,将待回收虚拟机地址的状态位设置为未使用状态。
28、第二方面,提供一种内存动态分配方法,该方法可以应用于第一方面记载的数据处理系统,其中,数据处理设备获取主机中运行的虚拟机的数据处理请求,数据处理请求用于指示数据处理设备接收虚拟机的待处理数据;根据数据处理请求确定与虚拟机关联的虚拟机地址,当虚拟机地址为无效虚拟机地址时,向主机发送第一缺页信息,无效虚拟机地址用于指示虚拟机关联的虚拟机地址中不满足数据处理请求要求的虚拟机地址。主机根据第一缺页信息为虚拟机分配主机物理地址,主机物理地址用于指示与无效虚拟机地址关联的内存的地址。
29、第三方面,提供一种内存动态分配方法,该方法可以应用于与主机连接的数据处理设备,包括:
30、获取主机中运行的虚拟机的数据处理请求;数据处理请求用于指示数据处理设备接收虚拟机的待处理数据;
31、根据数据处理请求确定与虚拟机关联的虚拟机地址,当虚拟机地址为无效虚拟机地址时,向主机发送第一缺页信息;无效虚拟机地址用于指示虚拟机关联的虚拟机地址中不满足数据处理请求要求的虚拟机地址。
32、第四方面,提供一种内存动态分配方法,应用于主机,包括:
33、确定主机中运行的虚拟机的待回收虚拟机地址;
34、读取待回收虚拟机地址对应的页表项中的状态位;
35、若待回收虚拟机地址的状态位均为未使用状态,则对待回收虚拟机地址进行去映射处理;未使用状态的状态位指示对应的待回收虚拟机地址未被数据处理设备访问过;
36、若待回收虚拟机地址中包含状态位为使用状态的待同步虚拟机地址,则向数据处理设备发送针对待同步虚拟机地址的数据同步消息,待接收到数据处理设备返回的同步完成消息,对待回收虚拟机地址进行去映射处理。
37、第五方面,提供一种内存动态分配装置,所述内存动态分配装置包括用于执行第三方面提供的内存动态分配方法的各个模块。
38、第六方面,提供一种内存动态分配装置,所述内存动态分配装置包括用于执行第四方面提供的内存动态分配方法的各个模块。
39、第七方面,提供一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机可执行指令,该计算机可执行指令用于使计算机执行上述第三方面或第四方面提供的任一种方法的操作步骤。
40、上述第二方面至第七方面中任一方面可以达到的技术效果可以参照上述第一方面中有益效果的描述,此处不再重复赘述。
41、本技术在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
1.一种数据处理系统,其特征在于,包括主机和数据处理设备,其中,
2.根据权利要求1所述的数据处理系统,其特征在于,所述数据处理设备还用于:
3.根据权利要求1或2所述的数据处理系统,其特征在于,所述数据处理设备具体用于:
4.根据权利要求1~3任一项所述的数据处理系统,其特征在于,
5.根据权利要求1~4任一项所述的数据处理系统,其特征在于,与所述虚拟机关联的虚拟机地址对应的页表项中包括状态位;所述状态位用于指示对应的虚拟机地址是否被所述数据处理设备访问过。
6.根据权利要求5所述的数据处理系统,其特征在于,所述主机还用于:
7.根据权利要求6所述的数据处理系统,其特征在于,
8.根据权利要求7所述的数据处理系统,其特征在于,所述主机具体用于:
9.一种内存动态分配方法,其特征在于,应用于数据处理系统,所述数据处理系统包括主机和数据处理设备;所述方法包括:
10.一种内存动态分配方法,其特征在于,应用于与主机连接的数据处理设备,所述方法包括:
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
12.一种内存动态分配方法,其特征在于,应用于主机,所述主机与数据处理设备连接,所述方法包括:
13.一种计算机可读存储介质,其特征在于,存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如权利要求10至12中任一项所述的方法。