CN112860381A - 基于申威处理器的虚拟机内存扩容方法及系统 - Google Patents

基于申威处理器的虚拟机内存扩容方法及系统 Download PDF

Info

Publication number
CN112860381A
CN112860381A CN202110255734.4A CN202110255734A CN112860381A CN 112860381 A CN112860381 A CN 112860381A CN 202110255734 A CN202110255734 A CN 202110255734A CN 112860381 A CN112860381 A CN 112860381A
Authority
CN
China
Prior art keywords
virtual machine
physical memory
memory address
memory
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202110255734.4A
Other languages
English (en)
Other versions
CN112860381B (zh
Inventor
姚建国
蒋海波
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN202110255734.4A priority Critical patent/CN112860381B/zh
Publication of CN112860381A publication Critical patent/CN112860381A/zh
Application granted granted Critical
Publication of CN112860381B publication Critical patent/CN112860381B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45562Creating, deleting, cloning virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45583Memory management, e.g. access or allocation

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供了一种基于申威处理器的虚拟机内存扩容方法及系统,涉及内存虚拟化技术领域,该方法包括:步骤S1:对服务器物理内存进行划分,一部分物理内存作为直接映射区,即按照原来的加偏移的方式直接访问,而另一部分物理内存作为存储设备的缓存,即划分为缓存区;与之对应的,虚拟机物理内存被分为直接映射区和非直接映射区;步骤S2:创建虚拟机,申请内存,KVM会根据虚拟机申请的内存创建内存块映射表;步骤S3:修改虚拟机物理内存地址的转换路径;步骤S4:当虚拟机退出到KVM以根据虚拟机物理内存地址获取正确的服务器物理内存地址。本发明能够解决在申威平台中无法使用超过服务器物理内存范围的虚拟机物理内存地址的问题。

Description

基于申威处理器的虚拟机内存扩容方法及系统
技术领域
本发明涉及内存虚拟化技术领域,具体地,涉及一种基于申威处理器的虚拟机内存扩容方法及系统。
背景技术
随着申威处理器相关研究的发展,搭载申威处理器的国产服务器也逐渐成为云平台服务商的一个选择。搭载申威处理器的国产服务器的优势在于相关技术完全自主可控,让云平台的服务不会受国外因素影响。而它的劣势在于由于处理器架构不同于当今主流处理器,导致生态仍不完善。为此研究人员做出了大量的努力,已经完成了对主流编译语言的支持如C,C++,Java,Python等,也完成了绝大部分重要基础软件的移植。而虚拟化技术作为云平台服务器最关键的技术,在申威平台中也有了不错的支持。目前在申威平台中已完成了QEMU和KVM等虚拟化支持软件的移植工作,用户可以使用QEMU-KVM架构创建和运行全功能虚拟机。TLB一般指转译后备缓冲区。
公开号为CN107368351A的中国发明专利,公开了一种虚拟机配置自动升级扩容方法和装置,包括:识别虚拟机所关联的业务信息;根据业务信息的业务类别以及预设的虚拟机业务与资源负载值关系表获取业务类别对应的虚拟机资源负载值T;定时监控虚拟机的资源负载信息S;根据虚拟机资源负载值T与监控获得的虚拟机的资源负载信息S计算虚拟机的负载承受度D;根据计算出的虚拟机的负载承受度D进行虚拟机配置的自动升级扩容。本发明实施例公开了一种虚拟机配置自动升级扩容装置。通过该实施例方案,提高了云数据中心虚拟机业务稳定性和资源利用率。
申威架构中的内存虚拟化方式为先对物理内存进行划分,即事先分配宿主机和虚拟机所使用的物理内存。然后通过将虚拟机物理内存地址(GPA)以加偏移量的方式完成到服务器物理内存地址(PA)的转换,从而进行对物理内存的访存操作。该种实现方式使得申威处理器可以在没有硬件辅助虚拟化技术的情况下实现内存地址的高效转换,但同时也带来了一些弊端,其中对于云平台而言最主要的一个问题就是带来了虚拟机内存地址可用范围的限制。
随着人工智能等大数据应用的发展,应用对内存的需求越来越大,而服务器的物理内存往往无法满足这些应用的需求。由于该类应用对处理效率的要求一般不会很高,在这种情况下服务商可以使用其他大容量的存储设备和相关内存映射技术来为内存扩容。但这种技术无法直接应用于申威服务器中,主要原因就是加偏移的内存地址转换方式使得申威虚拟机无法使用超过分配给它的服务器物理内存大小的内存地址。当虚拟机对一个超限制的内存地址进行访存操作时,加偏移的内存地址转换方式使得转换得到的服务器物理内存地址会落在该虚拟机可用的物理内存地址范围之外,从而引发报错。
发明内容
针对现有技术中的缺陷,本发明的目的是提供一种基于申威处理器的虚拟机内存扩容方法及系统,以解决以上问题。
根据本发明提供的一种基于申威处理器的虚拟机内存扩容方法及系统,所述方案如下:
第一方面,提供了一种基于申威处理器的虚拟机内存扩容方法,所述方法包括:
步骤S1:对服务器物理内存进行划分,一部分物理内存作为直接映射区,即按照原来的加偏移的方式直接访问,而另一部分物理内存作为存储设备的缓存,即划分为缓存区;与之对应的,虚拟机物理内存被分为直接映射区和非直接映射区;
步骤S2:创建虚拟机,申请内存,KVM会根据虚拟机申请的内存创建内存块映射表;
步骤S3:修改虚拟机物理内存地址的转换路径;
步骤S4:当虚拟机退出到KVM以根据虚拟机物理内存地址获取正确的服务器物理内存地址。
优选的,所述步骤S1中的虚拟机物理内存中的直接映射区直接和服务器物理内存中的直接映射区相关联,非直接映射区通过缓存区和大容量存储设备相关联。
优选的,所述步骤S2中在创建虚拟机时,如果虚拟机申请的内存未超过能用的物理内存,则按照原有流程将物理内存分配给该虚拟机;
若虚拟机申请的内存超过能用的物理内存,则首先将剩余的内存全部分配给该虚拟机,并将之划分为直接映射区和缓存区。
优选的,所述步骤S3具体包括:
将虚拟机虚拟内存地址GVA转换为虚拟机物理内存地址;
得到虚拟机物理内存地址后先对虚拟机物理内存地址进行判断;
如果该地址位于直接映射区,则仍使用加偏移的方式得到服务器的物理内存地址;否则会退出虚拟机返回到宿主机的KVM的内存管理模块中以获得服务器的物理内存地址。
优选的,所述步骤S3按照访问方式的不同,访问方式包括:根据虚拟机虚拟内存地址访存的指令和根据服务器物理内存地址访存的指令。
优选的,所述根据虚拟机虚拟内存地址访存的指令包括:
当查询TLB未命中进入HMCode,HMCode先将虚拟机虚拟内存地址转换为虚拟机物理内存地址,然后判断虚拟机物理内存地址是否在直接映射区;
若该地址在直接映射区,则仍使用加偏移的方式得到服务器物理内存地址,然后将虚拟机虚拟内存地址到服务器物理内存地址的映射关系填入TLB;
若该地址不在直接映射区,则跳转到HMCode中的VM_EXIT函数以退出虚拟机环境,回到宿主机的KVM中;
KVM根据退出信息进入到内存块管理模块以获取该虚拟机物理内存地址对应的服务器物理内存地址,然后将虚拟机虚拟内存地址到服务器物理内存地址的映射关系填入TLB;
重新进入虚拟机后,虚拟机重新执行之前被中断的根据虚拟机虚拟内存地址访存的指令。
优选的,所述根据服务器物理内存地址访存的指令包括:
在执行前进行拦截然,确保该服务器物理内存地址的正确性;
将虚拟机虚拟内存地址转换成虚拟机物理内存地址,判断虚拟机物理内存地址是否位于直接映射区;
如果该地址位于直接映射区,则退出虚拟机环境回到宿主机的KVM中;
KVM根据退出信息进入到内存块管理模块以获取该虚拟机物理内存地址对应的服务器物理内存地址;
重新进入虚拟机后,将从KVM中得到服务器物理内存地址减去偏移量得到一个新的虚拟机物理内存地址,然后将这个新的虚拟机物理内存地址作为参数传入到HMCode的接口中;
当HMCode中将该虚拟机物理内存地址加上偏移量后,就重新得到了服务器物理内存地址。
优选的,所述步骤S4具体包括:
KVM查询内存映射表得到该虚拟机物理内存地址对应的内存块,若该内存块位于缓存中,则所需要的物理内存地址即是该内存块映射在缓存中的物理内存地址;
若该内存块不在缓存中,则根据该内存块记录的信息找到存储设备中对应的数据块,然后判断缓存是否已满;
若缓存没满,则将该数据块读取到缓存中空余的位置;
若缓存已满,则先从缓存中选择一个内存块并将该内存块写回存储设备中,然后将目标数据块读取到被写回的内存块的位置;
当目标数据块被读取到缓存中后,所需要的物理内存地址就是该数据块所在的缓存的物理内存地址。
优选的,所述步骤S4还包括:当缓存已满发生交换时,还需要判断被替换下去的内存块所在的物理内存地址是否在TLB中;
判断方法为检查映射表中的该内存块中是否有存储虚拟机虚拟内存地址信息。
第二方面,提供了一种基于申威处理器的虚拟机内存扩容系统,所述系统包括:
模块M1:对服务器物理内存进行划分,一部分物理内存作为直接映射区,即按照原来的加偏移的方式直接访问,而另一部分物理内存作为存储设备的缓存,即划分为缓存区;与之对应的,虚拟机物理内存被分为直接映射区和非直接映射区;
模块M2:创建虚拟机,申请内存,KVM会根据虚拟机申请的内存创建内存块映射表;
模块M3:修改虚拟机物理内存地址的转换路径;
模块M4:当虚拟机退出到KVM以根据虚拟机物理内存地址获取正确的服务器物理内存地址。
与现有技术相比,本发明具有如下的有益效果:
本发明提出了基于申威平台的使用大容量存储设备来充当内存的方案,并解决在申威平台中无法使用超过服务器物理内存范围的虚拟机物理内存地址的技术难题。
附图说明
通过阅读参照以下附图对非限制性实施例所作的详细描述,本发明的其它特征、目的和优点将会变得更明显:
图1为虚拟机和服务器物理内存分区图;
图2为内存块映射表结构图;
图3为虚拟机查询TLB访存流程图;
图4为虚拟机通过HMCode访存流程图;
图5为内存块管理模块获取物理内存地址流程图。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。
本发明实施例提供了一种基于申威处理器的虚拟机内存扩容方法,解决申威虚拟机无法使用超过其被分配到服务器物理内存大小的内存地址,从而实现创建和运行超限内存虚拟机,首先,对虚拟机可用的服务器物理内存再次进行划分,一部分物理内存作为直接映射区,即按照原来的加偏移的方式直接访问,而另一部分物理内存作为存储设备的缓存。
参照图1所示,具体划分方式为将前面一部分划分为直接映射区,后面剩余部分划分为缓存区。与之对应的,虚拟机物理内存被分为直接映射区和非直接映射区。虚拟机物理内存中的直接映射区直接和服务器物理内存中的直接映射区相关联,非直接映射区通过缓存区和大容量存储设备相关联。虚拟机在内存使用率不高的情况下主要访问直接映射区的内存,所以内存读写性能基本等同于修改前的性能,即不会带来大量的额外开销。当虚拟机有超过直接映射区的内存需求时,就会访问读写性能较慢的存储设备,但由于设置了缓存区,读写性能也不会有急剧的下降。如果使用一些如缓存预取等优化算法,读写性能还可以得到进一步的提升。
在创建虚拟机时,如果虚拟机申请的内存未超过可用的物理内存,则按照原有流程将物理内存分配给该虚拟机;若虚拟机申请的内存超过可用的物理内存,则首先将剩余的内存全部分配给该虚拟机,并将之划分为直接映射区和缓存交换区。然后KVM中会根据虚拟机申请的内存创建内存块映射表。
参照图2所示,内存块映射表需要管理的内存地址为非直接映射区的虚拟机物理内存地址,并以内存块为单位进行管理。内存块的个数即为被管理的内存空间除以内存块的大小。每个映射表中的内存块都对应存储设备中相应位置的数据块,即该内存块数据结构记录了虚拟机物理内存地址到存储设备存储地址的映射关系。因为有部分内存块存在于服务器物理内存缓存中,所以映射表中还记录了内存块到服务器物理内存缓存的映射关系。
修改虚拟机内存地址的转换路径。原本的转换路径为将虚拟机虚拟内存地址(GVA)转换为虚拟机物理内存地址,然后再通过加偏移量的方式得到服务器的物理内存地址,即服务器物理内存地址=虚拟机物理内存地址+偏移量。该方法会在得到虚拟机物理内存地址后先对虚拟机物理内存地址进行判断。如果该地址位于直接映射区,则仍使用加偏移的方式得到服务器的物理内存地址;否则会退出虚拟机返回到宿主机的KVM的内存管理模块中以获得服务器的物理内存地址。
在具体实现中,我们会按照访存方式的不同而采用不同的实现方式。参照图1所示,当虚拟机CPU处理根据虚拟机虚拟内存地址访存的指令时,如果查询TLB未命中进入HMCode,HMCode先将虚拟机虚拟内存地址转换为虚拟机物理内存地址,然后判断虚拟机物理内存地址是否在直接映射区。若该地址在直接映射区,则仍使用加偏移的方式得到服务器物理内存地址,然后将虚拟机虚拟内存地址到服务器物理内存地址的映射关系填入TLB;若该地址不在直接映射区,则跳转到HMCode中的VM_EXIT函数以退出虚拟机环境,回到宿主机的KVM中。KVM根据退出信息进入到内存块管理模块以获取该虚拟机物理内存地址对应的服务器物理内存地址,然后将虚拟机虚拟内存地址到服务器物理内存地址的映射关系填入TLB。重新进入虚拟机后,虚拟机重新执行之前被中断的根据虚拟机虚拟内存地址访存的指令。此时因为该虚拟内存地址的映射关系已经被填入TLB,所以该条指令可以被顺利执行。
除了根据虚拟机虚拟内存地址访存的指令,申威架构中还存在根据服务器物理内存地址访存的指令。对于这种指令,因为CPU会直接按该服务器物理地址进行访存,并不会先去查询TLB,参照图3所示,该图中的流程无法被触发。因此,对于该种指令需要在执行前进行拦截然后确保该服务器物理内存地址的正确性。因为该种指令都是先在虚拟机中将虚拟机虚拟内存地址转换成虚拟机物理内存地址,然后调用HMCode中的接口进行访存。
参照图4所示,该图为修改后的流程,在将虚拟机虚拟内存地址转换成虚拟机物理内存地址后,判断虚拟机物理内存地址是否位于直接映射区。如果该地址位于直接映射区,则退出虚拟机环境回到宿主机的KVM中。KVM根据退出信息进入到内存块管理模块以获取该虚拟机物理内存地址对应的服务器物理内存地址。重新进入虚拟机后,需要将从KVM中得到服务器物理内存地址减去偏移量得到一个新的虚拟机物理内存地址,然后将这个新的虚拟机物理内存地址作为参数传入到HMCode的接口中。当HMCode中将该虚拟机物理内存地址加上偏移量后,就重新得到了服务器物理内存地址。然后HMCode就可以根据这个地址进行访存操作。
参照图5所示,当虚拟机退出到KVM以根据虚拟机物理内存地址获取正确的服务器物理内存地址时,KVM会查询内存映射表得到该虚拟机物理内存地址对应的内存块,若该内存块位于缓存中,则所需要的物理内存地址即是该内存块映射在缓存中的物理内存地址;若该内存块不在缓存中,则根据该内存块记录的信息找到存储设备中对应的数据块,然后判断缓存是否已满。如果缓存没满,则将该数据块读取到缓存中空余的位置。如果缓存已满,则先从缓存中选择一个内存块并将该内存块写回存储设备中,然后将目标数据块读取到被写回的内存块的位置。当目标数据块被读取到缓存中后,所需要的物理内存地址就是该数据块所在的缓存的物理内存地址。
当缓存已满发生交换时,还需要判断被替换下去的内存块所在的物理内存地址是否可能在TLB中。如果可能在TLB中,则需要根据该物理内存地址对应的虚拟机虚拟内存地址无效TLB中的该条映射关系,否则虚拟机中再次访问该物理内存地址对应的虚拟机虚拟内存地址时,就会根据TLB中的该条映射关系访问错误的内存数据。将TLB中的该条映射关系无效之后,当虚拟机中再次访问该虚拟机虚拟内存地址时,就会发生TLB未命中,然后执行图3中的流程;如果不可能在TLB中,则不需要去做无效操作。
判断内存块是否可能在TLB中的方法为检查映射表中的该内存块中是否有存储虚拟机虚拟内存地址信息。具体实现方式如下:若是由图3的TLB访存流程中从存储设备中得到的内存块,需要在该内存块中存储虚拟机虚拟内存地址信息,而若是由图4的访存流程中从存储设备中得到的内存块,就需要将该内存块中存储的虚拟机虚拟内存地址信息清空。因为虚拟机虚拟内存地址不可能为0,所以只需要将传入内存块管理模块的GVA参数设为0,即可实现清空操作。所以如果该内存块中存有虚拟机虚拟内存地址的信息,即虚拟机虚拟内存地址不为0,则说明该内存块可能存在于TLB中,否则不可能存在于TLB中。
本发明实施例提供了一种基于申威处理器的虚拟机内存扩容方法,解决了申威虚拟机无法使用超过其被分配到服务器物理内存大小的内存地址问题,从而实现创建和运行超限内存虚拟机。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的系统及其各个装置、模块、单元以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的系统及其各个装置、模块、单元以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的系统及其各项装置、模块、单元可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置、模块、单元也可以视为硬件部件内的结构;也可以将用于实现各种功能的装置、模块、单元视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变化或修改,这并不影响本发明的实质内容。在不冲突的情况下,本申请的实施例和实施例中的特征可以任意相互组合。

Claims (10)

1.一种基于申威处理器的虚拟机内存扩容方法,其特征在于,包括:
步骤S1:对服务器物理内存进行划分,一部分物理内存作为直接映射区,即按照原来的加偏移的方式直接访问,而另一部分物理内存作为存储设备的缓存,即划分为缓存区;与之对应的,虚拟机物理内存被分为直接映射区和非直接映射区;
步骤S2:创建虚拟机,申请内存,KVM会根据虚拟机申请的内存创建内存块映射表;
步骤S3:修改虚拟机物理内存地址的转换路径;
步骤S4:当虚拟机退出到KVM以根据虚拟机物理内存地址获取正确的服务器物理内存地址。
2.根据权利要求1所述的基于申威处理器的虚拟机内存扩容方法,其特征在于,所述步骤S1中的虚拟机物理内存中的直接映射区直接和服务器物理内存中的直接映射区相关联,非直接映射区通过缓存区和大容量存储设备相关联。
3.根据权利要求1所述的基于申威处理器的虚拟机内存扩容方法,其特征在于,所述步骤S2中在创建虚拟机时,如果虚拟机申请的内存未超过能用的物理内存,则按照原有流程将物理内存分配给该虚拟机;
若虚拟机申请的内存超过能用的物理内存,则首先将剩余的内存全部分配给该虚拟机,并将之划分为直接映射区和缓存区。
4.根据权利要求1所述的基于申威处理器的虚拟机内存扩容方法,其特征在于,所述步骤S3具体包括:
步骤S3.1:将虚拟机虚拟内存地址GVA转换为虚拟机物理内存地址;
步骤S3.2:得到虚拟机物理内存地址后先对虚拟机物理内存地址进行判断;
如果该地址位于直接映射区,则仍使用加偏移的方式得到服务器的物理内存地址;否则会退出虚拟机返回到宿主机的KVM的内存管理模块中以获得服务器的物理内存地址。
5.根据权利要求1所述的基于申威处理器的虚拟机内存扩容方法,其特征在于,所述步骤S3按照访问方式的不同,访问方式包括:根据虚拟机虚拟内存地址访存的指令和根据服务器物理内存地址访存的指令。
6.根据权利要求5所述的基于申威处理器的虚拟机内存扩容方法,其特征在于,所述根据虚拟机虚拟内存地址访存的指令包括:
当查询TLB未命中进入HMCode,HMCode先将虚拟机虚拟内存地址转换为虚拟机物理内存地址,然后判断虚拟机物理内存地址是否在直接映射区;
若该地址在直接映射区,则仍使用加偏移的方式得到服务器物理内存地址,然后将虚拟机虚拟内存地址到服务器物理内存地址的映射关系填入TLB;
若该地址不在直接映射区,则跳转到HMCode中的VM_EXIT函数以退出虚拟机环境,回到宿主机的KVM中;
KVM根据退出信息进入到内存块管理模块以获取该虚拟机物理内存地址对应的服务器物理内存地址,然后将虚拟机虚拟内存地址到服务器物理内存地址的映射关系填入TLB;
重新进入虚拟机后,虚拟机重新执行之前被中断的根据虚拟机虚拟内存地址访存的指令。
7.根据权利要求5所述的基于申威处理器的虚拟机内存扩容方法,其特征在于,所述根据服务器物理内存地址访存的指令包括:
在执行前进行拦截然,确保该服务器物理内存地址的正确性;
将虚拟机虚拟内存地址转换成虚拟机物理内存地址,判断虚拟机物理内存地址是否位于直接映射区;
如果该地址位于直接映射区,则退出虚拟机环境回到宿主机的KVM中;
KVM根据退出信息进入到内存块管理模块以获取该虚拟机物理内存地址对应的服务器物理内存地址;
重新进入虚拟机后,将从KVM中得到服务器物理内存地址减去偏移量得到一个新的虚拟机物理内存地址,然后将这个新的虚拟机物理内存地址作为参数传入到HMCode的接口中;
当HMCode中将该虚拟机物理内存地址加上偏移量后,就重新得到了服务器物理内存地址。
8.根据权利要求1所述的基于申威处理器的虚拟机内存扩容方法,其特征在于,所述步骤S4具体包括:
步骤4.1:KVM查询内存映射表得到该虚拟机物理内存地址对应的内存块,若该内存块位于缓存中,则所需要的物理内存地址即是该内存块映射在缓存中的物理内存地址;
若该内存块不在缓存中,则根据该内存块记录的信息找到存储设备中对应的数据块,然后判断缓存是否已满;
步骤4.2:若缓存没满,则将该数据块读取到缓存中空余的位置;
若缓存已满,则先从缓存中选择一个内存块并将该内存块写回存储设备中,然后将目标数据块读取到被写回的内存块的位置;
步骤4.3:当目标数据块被读取到缓存中后,所需要的物理内存地址就是该数据块所在的缓存的物理内存地址。
9.根据权利要求8所述的基于申威处理器的虚拟机内存扩容方法,其特征在于,所述步骤S4还包括:当缓存已满发生交换时,还需要判断被替换下去的内存块所在的物理内存地址是否在TLB中;
判断方法为检查映射表中的该内存块中是否有存储虚拟机虚拟内存地址信息。
10.一种基于申威处理器的虚拟机内存扩容系统,其特征在于,包括:
模块M1:对服务器物理内存进行划分,一部分物理内存作为直接映射区,即按照原来的加偏移的方式直接访问,而另一部分物理内存作为存储设备的缓存,即划分为缓存区;与之对应的,虚拟机物理内存被分为直接映射区和非直接映射区;
模块M2:创建虚拟机,申请内存,KVM会根据虚拟机申请的内存创建内存块映射表;
模块M3:修改虚拟机物理内存地址的转换路径;
模块M4:当虚拟机退出到KVM以根据虚拟机物理内存地址获取正确的服务器物理内存地址。
CN202110255734.4A 2021-03-09 2021-03-09 基于申威处理器的虚拟机内存扩容方法及系统 Active CN112860381B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110255734.4A CN112860381B (zh) 2021-03-09 2021-03-09 基于申威处理器的虚拟机内存扩容方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110255734.4A CN112860381B (zh) 2021-03-09 2021-03-09 基于申威处理器的虚拟机内存扩容方法及系统

Publications (2)

Publication Number Publication Date
CN112860381A true CN112860381A (zh) 2021-05-28
CN112860381B CN112860381B (zh) 2022-04-26

Family

ID=75994918

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110255734.4A Active CN112860381B (zh) 2021-03-09 2021-03-09 基于申威处理器的虚拟机内存扩容方法及系统

Country Status (1)

Country Link
CN (1) CN112860381B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023035646A1 (zh) * 2021-09-11 2023-03-16 华为技术有限公司 一种扩展内存的方法、装置及相关设备

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180196772A1 (en) * 2015-04-28 2018-07-12 Red Hat Israel, Ltd. Uma-Aware Root Bus Selection
CN109062823A (zh) * 2018-07-16 2018-12-21 北京中科网威信息技术有限公司 使用大页内存提升基于申威架构的设备性能的方法及装置
CN110737608A (zh) * 2018-07-03 2020-01-31 阿里巴巴集团控股有限公司 一种数据操作方法、装置及系统
CN112099903A (zh) * 2020-08-18 2020-12-18 海光信息技术股份有限公司 一种虚拟机的内存管理方法、装置、cpu芯片及服务器
CN112363824A (zh) * 2020-10-12 2021-02-12 北京大学 一种申威架构下的内存虚拟化方法与系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180196772A1 (en) * 2015-04-28 2018-07-12 Red Hat Israel, Ltd. Uma-Aware Root Bus Selection
CN110737608A (zh) * 2018-07-03 2020-01-31 阿里巴巴集团控股有限公司 一种数据操作方法、装置及系统
CN109062823A (zh) * 2018-07-16 2018-12-21 北京中科网威信息技术有限公司 使用大页内存提升基于申威架构的设备性能的方法及装置
CN112099903A (zh) * 2020-08-18 2020-12-18 海光信息技术股份有限公司 一种虚拟机的内存管理方法、装置、cpu芯片及服务器
CN112363824A (zh) * 2020-10-12 2021-02-12 北京大学 一种申威架构下的内存虚拟化方法与系统

Non-Patent Citations (5)

* Cited by examiner, † Cited by third party
Title
BO PENG; JIANGUO YAO; YAOZU DONG; HAIBING GUAN: "MDev-NVMe: Mediated Pass-Through NVMe Virtualization Solution With Adaptive Polling", 《IEEE》 *
WENQI CAO; LING LIU: "Hierarchical Orchestration of Disaggregated Memory", 《IEEE》 *
杨鹏,马志程,彭博,姚建国: "集成Docker容器的OpenStack云平台性能研究", 《计算机工程》 *
钮艳,杨春,夏虞斌,程旭: "使用缓存的虚拟机内存扩展", 《北京大学学报(自然科学版)》 *
陈昊罡, 汪小林, 王振林,张彬彬,罗英伟,李晓明: "DMM:虚拟机的动态内存映射模型", 《中国科学 : 信息科学》 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023035646A1 (zh) * 2021-09-11 2023-03-16 华为技术有限公司 一种扩展内存的方法、装置及相关设备

Also Published As

Publication number Publication date
CN112860381B (zh) 2022-04-26

Similar Documents

Publication Publication Date Title
US10503635B2 (en) System and method for adaptive optimization for performance in solid state drives based on segment access frequency
US8453015B2 (en) Memory allocation for crash dump
US9529611B2 (en) Cooperative memory resource management via application-level balloon
US10552337B2 (en) Memory management and device
EP3783480B1 (en) Virtualized cache implementation method and physical machine
US9223719B2 (en) Integrating data from symmetric and asymmetric memory
US9547600B2 (en) Method and system for restoring consumed memory after memory consolidation
JP5214670B2 (ja) マルチプロセッサ仮想マシン環境においてアドレス変換をサポートする方法及び装置
EP2449469B1 (en) Hypervisor-based management of local and remote virtual memory pages
US7653799B2 (en) Method and apparatus for managing memory for dynamic promotion of virtual memory page sizes
CN103365793B (zh) 数据处理方法和系统
CN102693188B (zh) 用于在可控运行时环境中进行基于硬件的动态逸出检测的方法和装置
CN103365794B (zh) 数据处理方法、装置和系统
CN104081346A (zh) 用于使用跟踪数据消除处理器间中断来支持多处理器虚拟机环境中的地址转换的方法和设备
CN105917319A (zh) 存储器单元和方法
KR101584911B1 (ko) 부트 데이터를 캐시하는 고체 상태 드라이브
JP2021532468A (ja) メモリ・システム内に記憶されているメモリ保護テーブルを使用するメモリ保護ユニット
KR20220000415A (ko) 서비스로서의 메모리에 기초한 분산 컴퓨팅
KR101893966B1 (ko) 메모리 관리 방법 및 장치, 및 메모리 컨트롤러
JP2021531583A (ja) メモリ・システム内に記憶されている制御テーブルのための二分探索手順
CN112860381B (zh) 基于申威处理器的虚拟机内存扩容方法及系统
US20200409833A1 (en) Reducing fragmentation of computer memory
US20220365876A1 (en) Method of cache management based on file attributes, and cache management device operating based on file attributes
KR20240032880A (ko) 동적으로 할당 가능한 물리적으로 어드레싱되는 메타데이터 저장소
US20090024798A1 (en) Storing Data

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