发明内容
本发明实施例提供一种内存管理方法、装置、电子设备及计算机可读存储介质。
第一方面,本发明实施例中提供了一种内存管理方法,适用于虚拟机。
具体的,所述内存管理方法,包括:
确定先行锁定的第一内存资源和延迟锁定的第二内存资源;
响应于预设虚拟机操作被触发,对于所述第一内存资源执行先行锁定操作;
响应于所述预设虚拟机操作完成,释放所述第一内存资源,对于所述第二内存资源执行延迟锁定操作。
结合第一方面,本公开在第一方面的第一种实现方式中,所述第一内存资源与所述第二内存资源之和为所述虚拟机的内存资源的资源总和,其中,所述第一内存资源为所述虚拟机启动时所需的必要内存资源。
结合第一方面和第一方面的第一种实现方式,本公开实施例在第一方面的第二种实现方式中,所述对于所述第二内存资源执行延迟锁定操作,被实施为:
响应于所述第一内存资源被释放,对于所述第二内存资源执行锁定操作,并在满足预设释放条件时,对于所述第二内存资源进行释放;或者,响应于所述第一内存资源被释放,对于所述第二内存资源执行分部锁定操作,并在锁定部分满足相应的预设释放条件时,对于所述第二内存资源的锁定部分进行释放,直至完成所有第二内存资源的锁定和释放。
结合第一方面、第一方面的第一种实现方式和第一方面的第二种实现方式,本公开实施例在第一方面的第三种实现方式中,所述响应于所述预设虚拟机操作被触发,对于所述第一内存资源执行先行锁定操作,被实施为:
响应于所述预设虚拟机操作被触发,获取内存配置表;
在所述内存配置表中将所述第一内存资源的属性设置为可用,将所述第二内存资源的属性设置为预留,对于属性为可用的第一内存资源执行先行锁定操作。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式和第一方面的第三种实现方式,本公开实施例在第一方面的第四种实现方式中,所述对于所述第二内存资源执行延迟锁定操作,被实施为:
响应于所述第一内存资源被释放,对于所述第二内存资源执行锁定操作,通知所述内存配置表将所述第二内存资源的属性设置为可用,并在被锁定的所述第二内存资源满足预设释放条件时,对于所述第二内存资源进行释放;或者,
响应于所述第一内存资源被释放,对于所述第二内存资源执行分部锁定操作,通知所述内存配置表将锁定部分的属性设置为可用,并在锁定部分满足相应的预设释放条件时,对于所述第二内存资源的锁定部分进行释放,直至完成所有第二内存资源的锁定和释放。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式和第一方面的第四种实现方式,本公开实施例在第一方面的第五种实现方式中,所述响应于所述预设虚拟机操作被触发,对于所述第一内存资源执行先行锁定操作,被实施为:
响应于所述预设虚拟机操作被触发,加载预设驱动,以使所述预设驱动预先占用所述第二内存资源,对于剩余的所述第一内存资源执行先行锁定操作。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式、第一方面的第四种实现方式和第一方面的第五种实现方式,本发明实施例在第一方面的第六种实现方式中,所述对于所述第二内存资源执行延迟锁定操作,被实施为:
响应于所述第一内存资源被释放,对于所述预设驱动占用的第二内存资源执行解除占用操作,以使解除占用的所述第二内存资源被执行锁定操作,并在所述第二内存资源满足预设释放条件时,对于所述第二内存资源进行释放;或者,
响应于所述第一内存资源被释放,对于所述预设驱动占用的第二内存资源执行分部解除占用操作,以使解除占用部分被执行锁定操作,并在所述解除占用部分满足相应的预设释放条件时,对于所述解除占用部分进行释放,直至完成所有第二内存资源的锁定和释放。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式、第一方面的第四种实现方式、第一方面的第五种实现方式和第一方面的第六种实现方式,本发明实施例在第一方面的第七种实现方式中,所述响应于所述预设虚拟机操作被触发,对于所述第一内存资源执行先行锁定操作,包括:
响应于所述预设虚拟机操作被触发,启动预设***级应用,以使所述预设***级应用预先占用所述第二内存资源,对于剩余的所述第一内存资源执行先行锁定操作,其中,所述预设***级应用的优先级高于虚拟机启动时相关应用的优先级。
结合第一方面、第一方面的第一种实现方式、第一方面的第二种实现方式、第一方面的第三种实现方式、第一方面的第四种实现方式、第一方面的第五种实现方式、第一方面的第六种实现方式和第一方面的第七种实现方式,本发明实施例在第一方面的第八种实现方式中,所述对于所述第二内存资源执行延迟锁定操作,被实施为:
响应于所述第一内存资源被释放,对于所述预设***级应用占用的第二内存资源执行解除占用操作,以使解除占用的所述第二内存资源被执行锁定操作,并在所述第二内存资源满足预设释放条件时,对于所述第二内存资源进行释放;或者,
响应于所述第一内存资源被释放,对于所述预设***级应用占用的第二内存资源执行分部解除占用操作,以使解除占用部分被执行锁定操作,并在所述解除占用部分满足相应的预设释放条件时,对于所述解除占用部分进行释放,直至完成所有第二内存资源的锁定和释放。
第二方面,本公开实施例中提供了一种内存管理装置,适用于虚拟机。
具体的,所述内存管理装置,包括:
确定模块,被配置为确定先行锁定的第一内存资源和延迟锁定的第二内存资源;
第一锁定模块,被配置为响应于预设虚拟机操作被触发,对于所述第一内存资源执行先行锁定操作;
第二锁定模块,被配置为响应于所述预设虚拟机操作完成,释放所述第一内存资源,对于所述第二内存资源执行延迟锁定操作。
结合第二方面,本公开在第二方面的第一种实现方式中,所述第一内存资源与所述第二内存资源之和为所述虚拟机的内存资源的资源总和,其中,所述第一内存资源为所述虚拟机启动时所需的必要内存资源。
结合第二方面和第二方面的第一种实现方式,本发明实施例在第二方面的第二种实现方式中,所述第二锁定模块被配置为:
响应于所述第一内存资源被释放,对于所述第二内存资源执行锁定操作,并在满足预设释放条件时,对于所述第二内存资源进行释放;或者,响应于所述第一内存资源被释放,对于所述第二内存资源执行分部锁定操作,并在锁定部分满足相应的预设释放条件时,对于所述第二内存资源的锁定部分进行释放,直至完成所有第二内存资源的锁定和释放。
结合第二方面、第二方面的第一种实现方式和第二方面的第二种实现方式,本发明实施例在第二方面的第三种实现方式中,所述第一锁定模块被配置为:
响应于所述预设虚拟机操作被触发,获取内存配置表;
在所述内存配置表中将所述第一内存资源的属性设置为可用,将所述第二内存资源的属性设置为预留,对于属性为可用的第一内存资源执行先行锁定操作。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式和第二方面的第三种实现方式,本发明实施例在第二方面的第四种实现方式中,所述第二锁定模块被配置为:
响应于所述第一内存资源被释放,对于所述第二内存资源执行锁定操作,通知所述内存配置表将所述第二内存资源的属性设置为可用,并在被锁定的所述第二内存资源满足预设释放条件时,对于所述第二内存资源进行释放;或者,
响应于所述第一内存资源被释放,对于所述第二内存资源执行分部锁定操作,通知所述内存配置表将锁定部分的属性设置为可用,并在锁定部分满足相应的预设释放条件时,对于所述第二内存资源的锁定部分进行释放,直至完成所有第二内存资源的锁定和释放。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式、第二方面的第三种实现方式和第二方面的第四种实现方式,本发明实施例在第二方面的第五种实现方式中,所述第一锁定模块被配置为:
响应于所述预设虚拟机操作被触发,加载预设驱动,以使所述预设驱动预先占用所述第二内存资源,对于剩余的所述第一内存资源执行先行锁定操作。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式、第二方面的第三种实现方式、第二方面的第四种实现方式和第二方面的第五种实现方式,本发明实施例在第二方面的第六种实现方式中,所述第二锁定模块被配置为:
响应于所述第一内存资源被释放,对于所述预设驱动占用的第二内存资源执行解除占用操作,以使解除占用的所述第二内存资源被执行锁定操作,并在所述第二内存资源满足预设释放条件时,对于所述第二内存资源进行释放;或者,
响应于所述第一内存资源被释放,对于所述预设驱动占用的第二内存资源执行分部解除占用操作,以使解除占用部分被执行锁定操作,并在所述解除占用部分满足相应的预设释放条件时,对于所述解除占用部分进行释放,直至完成所有第二内存资源的锁定和释放。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式、第二方面的第三种实现方式、第二方面的第四种实现方式、第二方面的第五种实现方式和第二方面的第六种实现方式,本发明实施例在第二方面的第七种实现方式中,所述第一锁定模块被配置为:
响应于所述预设虚拟机操作被触发,启动预设***级应用,以使所述预设***级应用预先占用所述第二内存资源,对于剩余的所述第一内存资源执行先行锁定操作,其中,所述预设***级应用的优先级高于虚拟机启动时相关应用的优先级。
结合第二方面、第二方面的第一种实现方式、第二方面的第二种实现方式、第二方面的第三种实现方式、第二方面的第四种实现方式、第二方面的第五种实现方式、第二方面的第六种实现方式和第二方面的第七种实现方式,本发明实施例在第二方面的第八种实现方式中,所述第二锁定模块被配置为:
响应于所述第一内存资源被释放,对于所述预设***级应用占用的第二内存资源执行解除占用操作,以使解除占用的所述第二内存资源被执行锁定操作,并在所述第二内存资源满足预设释放条件时,对于所述第二内存资源进行释放;或者,
响应于所述第一内存资源被释放,对于所述预设***级应用占用的第二内存资源执行分部解除占用操作,以使解除占用部分被执行锁定操作,并在所述解除占用部分满足相应的预设释放条件时,对于所述解除占用部分进行释放,直至完成所有第二内存资源的锁定和释放。
第三方面,本发明实施例提供了一种电子设备,包括存储器和处理器,所述存储器用于存储一条或多条支持内存管理装置执行上述内存管理方法的计算机指令,所述处理器被配置为用于执行所述存储器中存储的计算机指令。所述内存管理装置还可以包括通信接口,用于内存管理装置与其他设备或通信网络通信。
第四方面,本发明实施例提供了一种计算机可读存储介质,用于存储内存管理装置所用的计算机指令,其包含用于执行上述内存管理方法为内存管理装置所涉及的计算机指令。
本发明实施例提供的技术方案可包括以下有益效果:
上述技术方案将虚拟机的内存资源分为先行锁定的第一内存资源和延迟锁定的第二内存资源,在预设虚拟机操作被触发时对于所述第一内存资源执行先行锁定操作,并在所述预设虚拟机操作完成之后,释放所述第一内存资源,此时再对于所述第二内存资源执行延迟锁定操作。该技术方案使得即使对于大容量的内存资源,也不会明显增加虚拟机启动的时间,进而能够在保障虚拟机运行质量的前提下,提高虚拟机的启动和运行的速度和效率。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明实施例。
具体实施方式
下文中,将参考附图详细描述本发明实施例的示例性实施方式,以使本领域技术人员可容易地实现它们。此外,为了清楚起见,在附图中省略了与描述示例性实施方式无关的部分。
在本发明实施例中,应理解,诸如“包括”或“具有”等的术语旨在指示本说明书中所公开的特征、数字、步骤、行为、部件、部分或其组合的存在,并且不欲排除一个或多个其他特征、数字、步骤、行为、部件、部分或其组合存在或被添加的可能性。
另外还需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明实施例。
本发明实施例提供的技术方案将虚拟机的内存资源分为先行锁定的第一内存资源和延迟锁定的第二内存资源,在预设虚拟机操作被触发时对于所述第一内存资源执行先行锁定操作,并在所述预设虚拟机操作完成之后,释放所述第一内存资源,此时再对于所述第二内存资源执行延迟锁定操作。该技术方案使得即使对于大容量的内存资源,也不会明显增加虚拟机启动的时间,进而能够在保障虚拟机运行质量的前提下,提高虚拟机的启动和运行的速度和效率。
图1示出根据本发明一实施方式的内存管理方法的流程图,适用于虚拟机,如图1所示,所述内存管理方法包括以下步骤S101-S103:
在步骤S101中,确定先行锁定的第一内存资源和延迟锁定的第二内存资源;
在步骤S102中,响应于预设虚拟机操作被触发,对于所述第一内存资源执行先行锁定操作;
在步骤S103中,响应于所述预设虚拟机操作完成,释放所述第一内存资源,对于所述第二内存资源执行延迟锁定操作。
上文提及,随着虚拟化技术的发展,由于基于VFIO实现的KVM虚拟化云服务能够为用户提供稳定、高效的直通虚拟化解决方案,表现出的性能可以达到接近于物理机的使用体验,因此其应用越来越广泛。但随着云计算以及人工智能的兴起,对于存储和计算资源的需求日益增长,内存容量的配置与日俱增。使用基于VFIO内存资源进行管理时,在虚拟机的启动过程中,需要先将所有的内存资源都进行锁定,很显然,当内存容量较小时,内存锁定的过程只需几毫秒,对于用户的影响可以忽略不计,但随着内存容量的增长,内存锁定对于虚拟机启动时间的影响日益增加,比如,对于384GB的虚拟机内存配置来说,单单内存资源的锁定就会耗费约90秒的时间,这就会严重影响虚拟机的运行效率和质量。
基于上述问题,并考虑到最终用户在使用时对于内存资源的实际访问是存在滞后性的,也就是说,虚拟机从开机到进入***,再到服务或应用启动,最后到***负荷达到峰值,这是个相对时间较长的过程,实际上,虚拟机的整个启动过程只占用较小部分的内存资源,大部分的内存资源在虚拟机启动过程中处于未使用状态,也就是说,对内存资源的实际占用量是随着虚拟机的启动和使用这一过程而慢慢达到峰值的。因此,在该实施方式中,提出一种阶段式的内存管理方法,该方法将虚拟机的内存资源分为先行锁定的第一内存资源和延迟锁定的第二内存资源,在预设虚拟机操作被触发时对于所述第一内存资源执行先行锁定操作,并在所述预设虚拟机操作完成之后,释放所述第一内存资源,此时再对于所述第二内存资源执行延迟锁定操作。这样就可以在保证不影响用户正常使用的前提下,大大缩短虚拟机的启动时间,即使对于大容量的内存资源,也不会明显增加虚拟机的启动时间,进而能够在保障虚拟机运行质量的前提下,提高虚拟机的启动和运行的速度和效率。
在本发明一实施方式中,所述第一内存资源指的是所述虚拟机启动时所需的必要内存资源,比如,虚拟机***开机、虚拟机相关服务或应用环境配置、虚拟机相关服务或应用初始化阶段所需要的资源;而所述第二内存资源指的就是除去所述第一内存资源后剩余的内存资源。其中,所述第一内存资源与所述第二内存资源之和为所述虚拟机的内存资源的资源总和,所述第一内存资源与所述第二内存资源分别占所述虚拟机内存资源总和的预设比例,比如,所述第一内存资源占所述虚拟机内存资源总和的20%,而所述第二内存资源占所述虚拟机内存资源总和的80%,当然,所述第一内存资源与所述第二内存资源分别占所述虚拟机内存资源总和的预设比例可根据实际应用的需要、虚拟机的内存配置、虚拟机启动时所需内存资源的数量而确定,本公开对其不作具体限定。
在本发明一实施方式中,所述预设虚拟机操作指的是能够触发对于内存资源的锁定的虚拟机启动类操作,比如,所述预设虚拟机操作可以为虚拟机开机操作、虚拟机***初始化操作、服务/应用初始化操作、服务/应用/驱动对于内存资源的申请操作等等,本领域技术人员可根据实际应用的需要以及虚拟机的具体设置确定所述预设虚拟机操作的具体内容,本公开对其不作具体限定。
在本发明一实施方式中,所述延迟锁定指的是在所述第一内存资源被先行锁定后的预设时间后再对于所述第二内存资源进行锁定的操作。也就是说,所述第一内存资源先被锁定,所述第二内存资源再被锁定,而两次锁定操作相隔的时间,即预设时间的长短,与所述预设虚拟机操作完成的时间以及所述第一内存资源被释放完成的时间的总和有关。
也就是说,在该实施方式中,在所述预设虚拟机操作被触发后,并不像现有技术一样对于所有的内存资源都进行锁定操作,而是先对于所述虚拟机启动时所必需的第一内存资源进行锁定,然后在所述预设虚拟机操作完成之后,再释放先前被锁定的所述第一内存资源,使得已经执行了锁定操作又被释放的内存资源可被正常使用,此时再对于剩下的第二内存资源执行锁定操作。这样就可以大大减少具有大容量内存资源的虚拟机的启动时间,保证虚拟机启动后的正常使用,大大降低了内存资源的锁定流程对于用户使用的影响。当所述预设虚拟机操作为虚拟机启动操作时,基于上述技术方案,由于第二内存资源是在所述虚拟机启动完成后才进行锁定,之前只对于必需的第一内存资源进行了锁定,而所述第一内存资源占所述虚拟机内存资源总和的比例通常小于所述第二内存资源占所述虚拟机内存资源总和的比例,因此,所述虚拟机的启动时间能够被大大缩短,比如,对于上文所述的384GB的虚拟机内存配置来说,采用现有技术中的方案,内存资源的锁定将会耗费约90秒的启动时间,而采用本公开上述技术方案,将384GB中的10%,即38G的内存资源设置为第一内存资源先行锁定,剩余的90%,即346G的内存资源待虚拟机启动后再进行锁定,则所述虚拟机的启动时间可以缩短为9秒,即节省了81秒的时间。
在本发明一实施方式中,所述步骤S103中的对于所述第二内存资源执行延迟锁定操作的步骤,可被实施为:
响应于所述第一内存资源被释放,对于所述第二内存资源执行锁定操作,并在满足预设释放条件时,对于所述第二内存资源进行释放;或者,响应于所述第一内存资源被释放,对于所述第二内存资源执行分部锁定操作,并在锁定部分满足相应的预设释放条件时,对于所述第二内存资源的锁定部分进行释放,直至完成所有第二内存资源的锁定和释放。
在该实施方式中,在所述第一内存资源被解锁释放,对于所述第二内存资源执行延迟锁定操作时,既可以对于所述第二内存资源进行一次性锁定然后一次性释放,即响应于所述第一内存资源被释放,对于全部第二内存资源执行锁定操作,并在所述第二内存资源满足预设释放条件时,对于锁定的全部第二内存资源进行一次性释放。也可以对于所述第二内存资源进行逐步阶段性锁定以及逐步阶段性释放,即响应于所述第一内存资源被释放,对于所述第二内存资源执行分部锁定操作,并在锁定部分满足相应的预设释放条件时,对于所述第二内存资源的锁定部分进行释放,直至完成所有第二内存资源的锁定和释放。比如,若将所述第二内存资源分为三部分分别执行锁定,则当所述第一内存资源被释放后,首先对于所述第二内存资源的部分1执行锁定,此时被释放的第一内存资源以及未被锁定的第二内存资源的部分2和部分3均可被使用;待所述第二内存资源的部分1被解锁释放后,对于所述第二内存资源的部分2执行锁定,此时被释放的第一内存资源和第二内存资源的部分1以及未被锁定的第二内存资源的部分3均可被使用;待所述第二内存资源的部分2被解锁释放后,对于所述第二内存资源的部分3执行锁定,此时被释放的第一内存资源、第二内存资源的部分1和部分2均可被使用;待所述第二内存资源的部分3被解锁释放后,此时所有的内存资源均可被使用。上述对于所述第二内存资源的逐步阶段性锁定以及逐步阶段性释放能够进一步地减少对于内存资源使用的影响,进一步提高虚拟机的运行质量。
其中,所述预设释放条件比如可以为锁定时间到期、之前被锁定的内存资源被释放、某一预设虚拟机操作被触发等等,本领域技术人员可根据实际应用的需要设置具体的释放条件,本公开对其不作具体限定。
在实际应用中,可通过多种方式实现所述第一内存资源和第二内存资源的划分以及内存资源的分步锁定,比如,通过对于内存配置表进行管理的方式、加载预设驱动的方式、启动预设***级应用的方式等等,接下来就对于上述实现方式分别进行解释和说明。
在本发明一实施方式中,所述步骤S102,即响应于所述预设虚拟机操作被触发,对于所述第一内存资源执行先行锁定操作的步骤,可被实施为:
响应于所述预设虚拟机操作被触发,获取内存配置表;
在所述内存配置表中将所述第一内存资源的属性设置为可用,将所述第二内存资源的属性设置为预留,对于属性为可用的第一内存资源执行先行锁定操作。
在该实施方式中,通过对于内存配置表进行管理的方式实现所述第一内存资源和第二内存资源的划分以及内存资源的分步锁定。具体地,当所述预设虚拟机操作被触发时,比如***初始化时,获取内存配置表,比如E820表;然后通过修改所述内存配置表,在所述内存配置表中将预先确定比例的所述第一内存资源的属性设置为可用,也就是说,这部分属性为可用的内存资源可按照虚拟机启动的流程进行正常锁定与释放;同时预留一部分内存资源,即将预先确定比例的所述第二内存资源的属性设置为预留,预留的这部分内存资源当前是不可用的,因此也就不可以按照虚拟机启动的流程进行锁定,这样就实现了对于属性为可用的第一内存资源进行先行锁定,对于属性为预留的第二内存资源进行延迟锁定的操作。
在该实施方式中,所述步骤S103中的对于所述第二内存资源执行延迟锁定操作的步骤,可被实施为:
响应于所述第一内存资源被释放,对于所述第二内存资源执行锁定操作,通知所述内存配置表将所述第二内存资源的属性设置为可用,并在被锁定的所述第二内存资源满足预设释放条件时,对于所述第二内存资源进行释放;或者,
响应于所述第一内存资源被释放,对于所述第二内存资源执行分步锁定操作,通知所述内存配置表将锁定部分的属性设置为可用,并在锁定部分满足相应的预设释放条件时,对于所述第二内存资源的锁定部分进行释放,直至完成所有第二内存资源的锁定和释放。
在通过对于内存配置表进行管理的方式实现所述第一内存资源和第二内存资源的划分以及内存资源的分步锁定时,与上文描述类似,对于所述第二内存资源执行的延迟锁定操作也存在两种实施方式,一,对于所述第二内存资源进行一次性锁定和一次性释放,具体地,当所述第一内存资源被释放后,接着对于所述第二内存资源执行锁定操作,并通知所述内存配置表将所述第二内存资源的属性修改为可用,并在被锁定的所述第二内存资源满足预设释放条件时,对于所述第二内存资源进行一次性释放。二:对于所述第二内存资源进行逐步阶段性锁定和逐步阶段性释放,具体地,当所述第一内存资源被释放后,对于所述第二内存资源进行分部锁定,通知所述内存配置表将锁定部分的属性修改为可用,并在锁定部分满足相应的预设释放条件时,对于所述第二内存资源的锁定部分进行释放,直至完成所有第二内存资源的锁定和释放,比如,以上文示例为例,将所述第二内存资源分为三部分分别执行锁定,当所述第一内存资源被释放后,首先对于所述第二内存资源的部分1执行锁定,通知所述内存配置表将部分1的属性修改为可用,待所述第二内存资源的部分1被解锁释放后,对于所述第二内存资源的部分2执行锁定,通知所述内存配置表将部分2的属性修改为可用,类似地,待所述第二内存资源的部分2被解锁释放后,对于所述第二内存资源的部分3执行锁定,再通知所述内存配置表将部分3的属性修改为可用。
在本发明另一实施方式中,所述步骤S102,即响应于所述预设虚拟机操作被触发,对于所述第一内存资源执行先行锁定操作的步骤,可被实施为:
响应于所述预设虚拟机操作被触发,加载预设驱动,以使所述预设驱动预先占用所述第二内存资源,对于剩余的所述第一内存资源执行先行锁定操作。
在该实施方式中,通过加载预设驱动的方式实现所述第一内存资源和第二内存资源的划分以及内存资源的分步锁定。具体地,当所述预设虚拟机操作被触发时,比如***初始化时,或者在用户服务、应用或驱动申请内存资源之前,提前加载预设驱动,以抢占预先确定比例的第二内存资源,使得虚拟机对于剩余的所述第一内存资源执行先行锁定操作,而被抢占的第二内存资源则保留至所述第一内存资源被释放之时。其中,所述预设驱动比如可以为virtio-ballooning驱动。
在该实施方式中,所述步骤S103中的对于所述第二内存资源执行延迟锁定操作的步骤,可被实施为:
响应于所述第一内存资源被释放,对于所述预设驱动占用的第二内存资源执行解除占用操作,以使解除占用的所述第二内存资源被执行锁定操作,并在所述第二内存资源满足预设释放条件时,对于所述第二内存资源进行释放;或者,
响应于所述第一内存资源被释放,对于所述预设驱动占用的第二内存资源执行分部解除占用操作,以使解除占用部分被执行锁定操作,并在所述解除占用部分满足相应的预设释放条件时,对于所述解除占用部分进行释放,直至完成所有第二内存资源的锁定和释放。
在通过加载预设驱动的方式实现所述第一内存资源和第二内存资源的划分以及内存资源的分步锁定时,与上文描述类似,对于所述第二内存资源执行的延迟锁定操作也存在两种实施方式,一,对于所述第二内存资源进行一次性锁定和一次性释放,具体地,当所述第一内存资源被释放后,对于所述预设驱动占用的全部第二内存资源执行解除占用操作,以使解除占用的所述第二内存资源能够被执行锁定操作,并在所述第二内存资源满足预设释放条件时,对于所述第二内存资源全部进行释放。二:对于所述第二内存资源进行逐步阶段性锁定和逐步阶段性释放,具体地,当所述第一内存资源被释放后,对于所述预设驱动占用的第二内存资源执行分部解除占用操作,以使解除占用部分被执行锁定操作,并在所述解除占用部分满足相应的预设释放条件时,对于所述解除占用部分进行释放,直至完成所有第二内存资源的锁定和释放,比如,以上文示例为例,将所述第二内存资源分为三部分分别执行锁定,当所述第一内存资源被释放后,首先对于所述第二内存资源的部分1解除占用,对于解除占用的部分1执行锁定,待所述第二内存资源的部分1被解锁释放后,对于所述第二内存资源的部分2解除占用,对于解除占用的部分2执行锁定,类似地,待所述第二内存资源的部分2被解锁释放后,再对于所述第二内存资源的部分3解除占用,对于解除占用的部分3执行锁定。
在本发明再一实施方式中,所述步骤S102,即响应于所述预设虚拟机操作被触发,对于所述第一内存资源执行先行锁定操作的步骤,可被实施为:
响应于所述预设虚拟机操作被触发,启动预设***级应用,以使所述预设***级应用预先占用所述第二内存资源,对于剩余的所述第一内存资源执行先行锁定操作,其中,所述预设***级应用的优先级高于虚拟机启动时相关应用的优先级。
在该实施方式中,通过启动预设***级应用的方式实现所述第一内存资源和第二内存资源的划分以及内存资源的分步锁定。具体地,当所述预设虚拟机操作被触发时,比如在用户服务、应用或驱动申请内存资源之前,启动预设***级应用,以使所述预设***级应用能够预先占用预先确定比例的所述第二内存资源,对于剩余未被占用的所述第一内存资源执行先行锁定操作,需要注意的是,所述预设***级应用的优先级应高于虚拟机启动时相关应用的优先级,以实现内存资源的抢占。
在该实施方式中,所述步骤S103中的对于所述第二内存资源执行延迟锁定操作的步骤,可被实施为:
响应于所述第一内存资源被释放,对于所述预设***级应用占用的第二内存资源执行解除占用操作,以使解除占用的所述第二内存资源被执行锁定操作,并在所述第二内存资源满足预设释放条件时,对于所述第二内存资源进行释放;或者,
响应于所述第一内存资源被释放,对于所述预设***级应用占用的第二内存资源执行分部解除占用操作,以使解除占用部分被执行锁定操作,并在所述解除占用部分满足相应的预设释放条件时,对于所述解除占用部分进行释放,直至完成所有第二内存资源的锁定和释放。
在通过启动预设***级应用的方式实现所述第一内存资源和第二内存资源的划分以及内存资源的分步锁定时,与上文描述类似,对于所述第二内存资源执行的延迟锁定操作也存在两种实施方式,一,对于所述第二内存资源进行一次性锁定和一次性释放,具体地,当所述第一内存资源被释放后,通知所述预设***级应用对其占用的第二内存资源执行解除占用操作,以使解除占用的所述第二内存资源被执行锁定操作,并在所述第二内存资源满足预设释放条件时,对于所述第二内存资源进行一次性释放。二:对于所述第二内存资源进行逐步阶段性锁定和逐步阶段性释放,具体地,当所述第一内存资源被释放后,通知所述预设***级应用对于所述第二内存资源进行分部解除占用,以使解除占用部分陆续被执行锁定操作,并在解除占用部分满足相应的预设释放条件时,对于解除占用部分进行释放,直至完成所有第二内存资源的锁定和释放,比如,依然以上文示例为例,将所述第二内存资源分为三部分分别执行锁定,当所述第一内存资源被释放后,首先通知所述预设***级应用对于所述第二内存资源的部分1解除占用,对于解除占用的部分1执行锁定,待所述第二内存资源的部分1被解锁释放后,通知所述预设***级应用对于所述第二内存资源的部分2解除占用,对于解除占用的部分2执行锁定,类似地,待所述第二内存资源的部分2被解锁释放后,再通知所述预设***级应用对于所述第二内存资源的部分3解除占用,对于解除占用的部分3执行锁定。
图2A为根据现有技术的内存管理方法应用场景示意图,图2B为根据本公开一实施方式的内存管理方法应用场景示意图,在该应用场景中,所述预设虚拟机操作为虚拟机***初始化操作,如图2A所示,在现有技术中,当虚拟机开机进入***初始化流程后,就需要对所有的内存资源进行锁定,在***初始化结束之后,才能释放所述内存资源,然后才能启动用户服务/应用/驱动的初始化和用户服务/应用/驱动的运行,对于384GB的虚拟机内存配置来说,上述内存资源的锁定将会耗费约90秒的启动时间。如图2B所示,在本公开技术方案中,预先将内存资源的10%部分作为先行锁定的第一内存资源,将内存资源的90%部分作为延迟锁定的第二内存资源。当虚拟机开机进入***初始化流程后,首先锁定所述第一内存资源部分,***初始化完成之后,将先前被锁定的第一内存资源释放出来,同时启动用户服务/应用/驱动的初始化、运行以及第二内存资源的分部延迟锁定,随着用户服务/应用/驱动的运行,对于内存资源的实际占用量慢慢达到峰值,而第二内存资源的锁定也在这个过程中完成了。这就使得在不影响用户正常使用的情况下,虚拟机的启动时间大大缩短,进而能够在保障虚拟机运行质量的前提下,提高虚拟机的启动和运行的速度和效率。对于上述384GB的虚拟机内存配置来说,采用本公开上述技术方案,将384GB中的10%,即38G的内存资源设置为第一内存资源先行锁定,剩余的90%,即346G的内存资源待虚拟机启动后再进行锁定,则所述虚拟机的启动时间可以缩短为9秒,即节省了81秒的时间。
下述为本发明装置实施例,可以用于执行本发明方法实施例。
图3示出根据本发明一实施方式的内存管理装置的结构框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部,可实现为虚拟机。如图3所示,所述内存管理装置包括:
确定模块301,被配置为确定先行锁定的第一内存资源和延迟锁定的第二内存资源;
第一锁定模块302,被配置为响应于预设虚拟机操作被触发,对于所述第一内存资源执行先行锁定操作;
第二锁定模块303,被配置为响应于所述预设虚拟机操作完成,释放所述第一内存资源,对于所述第二内存资源执行延迟锁定操作。
上文提及,随着虚拟化技术的发展,由于基于VFIO实现的KVM虚拟化云服务能够为用户提供稳定、高效的直通虚拟化解决方案,表现出的性能可以达到接近于物理机的使用体验,因此其应用越来越广泛。但随着云计算以及人工智能的兴起,对于存储和计算资源的需求日益增长,内存容量的配置与日俱增。使用基于VFIO内存资源进行管理时,在虚拟机的启动过程中,需要先将所有的内存资源都进行锁定,很显然,当内存容量较小时,内存锁定的过程只需几毫秒,对于用户的影响可以忽略不计,但随着内存容量的增长,内存锁定对于虚拟机启动时间的影响日益增加,比如,对于384GB的虚拟机内存配置来说,单单内存资源的锁定就会耗费约90秒的时间,这就会严重影响虚拟机的运行效率和质量。
基于上述问题,并考虑到最终用户在使用时对于内存资源的实际访问是存在滞后性的,也就是说,虚拟机从开机到进入***,再到服务或应用启动,最后到***负荷达到峰值,这是个相对时间较长的过程,实际上,虚拟机的整个启动过程只占用较小部分的内存资源,大部分的内存资源在虚拟机启动过程中处于未使用状态,也就是说,对内存资源的实际占用量是随着虚拟机的启动和使用这一过程而慢慢达到峰值的。因此,在该实施方式中,提出一种阶段式的内存管理装置,该装置将虚拟机的内存资源分为先行锁定的第一内存资源和延迟锁定的第二内存资源,在预设虚拟机操作被触发时对于所述第一内存资源执行先行锁定操作,并在所述预设虚拟机操作完成之后,释放所述第一内存资源,此时再对于所述第二内存资源执行延迟锁定操作。这样就可以在保证不影响用户正常使用的前提下,大大缩短虚拟机的启动时间,即使对于大容量的内存资源,也不会明显增加虚拟机的启动时间,进而能够在保障虚拟机运行质量的前提下,提高虚拟机的启动和运行的速度和效率。
在本发明一实施方式中,所述第一内存资源指的是所述虚拟机启动时所需的必要内存资源,比如,虚拟机***开机、虚拟机相关服务或应用环境配置、虚拟机相关服务或应用初始化阶段所需要的资源;而所述第二内存资源指的就是除去所述第一内存资源后剩余的内存资源。其中,所述第一内存资源与所述第二内存资源之和为所述虚拟机的内存资源的资源总和,所述第一内存资源与所述第二内存资源分别占所述虚拟机内存资源总和的预设比例,比如,所述第一内存资源占所述虚拟机内存资源总和的20%,而所述第二内存资源占所述虚拟机内存资源总和的80%,当然,所述第一内存资源与所述第二内存资源分别占所述虚拟机内存资源总和的预设比例可根据实际应用的需要、虚拟机的内存配置、虚拟机启动时所需内存资源的数量而确定,本公开对其不作具体限定。
在本发明一实施方式中,所述预设虚拟机操作指的是能够触发对于内存资源的锁定的虚拟机启动类操作,比如,所述预设虚拟机操作可以为虚拟机开机操作、虚拟机***初始化操作、服务/应用初始化操作、服务/应用/驱动对于内存资源的申请操作等等,本领域技术人员可根据实际应用的需要以及虚拟机的具体设置确定所述预设虚拟机操作的具体内容,本公开对其不作具体限定。
在本发明一实施方式中,所述延迟锁定指的是在所述第一内存资源被先行锁定后的预设时间后再对于所述第二内存资源进行锁定的操作。也就是说,所述第一内存资源先被锁定,所述第二内存资源再被锁定,而两次锁定操作相隔的时间,即预设时间的长短,与所述预设虚拟机操作完成的时间以及所述第一内存资源被释放完成的时间的总和有关。
也就是说,在该实施方式中,在所述预设虚拟机操作被触发后,并不像现有技术一样对于所有的内存资源都进行锁定操作,而是先对于所述虚拟机启动时所必需的第一内存资源进行锁定,然后在所述预设虚拟机操作完成之后,再释放先前被锁定的所述第一内存资源,使得已经执行了锁定操作又被释放的内存资源可被正常使用,此时再对于剩下的第二内存资源执行锁定操作。这样就可以大大减少具有大容量内存资源的虚拟机的启动时间,保证虚拟机启动后的正常使用,大大降低了内存资源的锁定流程对于用户使用的影响。当所述预设虚拟机操作为虚拟机启动操作时,基于上述技术方案,由于第二内存资源是在所述虚拟机启动完成后才进行锁定,之前只对于必需的第一内存资源进行了锁定,而所述第一内存资源占所述虚拟机内存资源总和的比例通常小于所述第二内存资源占所述虚拟机内存资源总和的比例,因此,所述虚拟机的启动时间能够被大大缩短,比如,对于上文所述的384GB的虚拟机内存配置来说,采用现有技术中的方案,内存资源的锁定将会耗费约90秒的启动时间,而采用本公开上述技术方案,将384GB中的10%,即38G的内存资源设置为第一内存资源先行锁定,剩余的90%,即346G的内存资源待虚拟机启动后再进行锁定,则所述虚拟机的启动时间可以缩短为9秒,即节省了81秒的时间。
在本发明一实施方式中,所述第二锁定模块303可被配置为:
响应于所述第一内存资源被释放,对于所述第二内存资源执行锁定操作,并在满足预设释放条件时,对于所述第二内存资源进行释放;或者,响应于所述第一内存资源被释放,对于所述第二内存资源执行分部锁定操作,并在锁定部分满足相应的预设释放条件时,对于所述第二内存资源的锁定部分进行释放,直至完成所有第二内存资源的锁定和释放。
在该实施方式中,在所述第一内存资源被解锁释放,对于所述第二内存资源执行延迟锁定操作时,既可以对于所述第二内存资源进行一次性锁定然后一次性释放,即响应于所述第一内存资源被释放,对于全部第二内存资源执行锁定操作,并在所述第二内存资源满足预设释放条件时,对于锁定的全部第二内存资源进行一次性释放。也可以对于所述第二内存资源进行逐步阶段性锁定以及逐步阶段性释放,即响应于所述第一内存资源被释放,对于所述第二内存资源执行分部锁定操作,并在锁定部分满足相应的预设释放条件时,对于所述第二内存资源的锁定部分进行释放,直至完成所有第二内存资源的锁定和释放。比如,若将所述第二内存资源分为三部分分别执行锁定,则当所述第一内存资源被释放后,首先对于所述第二内存资源的部分1执行锁定,此时被释放的第一内存资源以及未被锁定的第二内存资源的部分2和部分3均可被使用;待所述第二内存资源的部分1被解锁释放后,对于所述第二内存资源的部分2执行锁定,此时被释放的第一内存资源和第二内存资源的部分1以及未被锁定的第二内存资源的部分3均可被使用;待所述第二内存资源的部分2被解锁释放后,对于所述第二内存资源的部分3执行锁定,此时被释放的第一内存资源、第二内存资源的部分1和部分2均可被使用;待所述第二内存资源的部分3被解锁释放后,此时所有的内存资源均可被使用。上述对于所述第二内存资源的逐步阶段性锁定以及逐步阶段性释放能够进一步地减少对于内存资源使用的影响,进一步提高虚拟机的运行质量。
其中,所述预设释放条件比如可以为锁定时间到期、之前被锁定的内存资源被释放、某一预设虚拟机操作被触发等等,本领域技术人员可根据实际应用的需要设置具体的释放条件,本公开对其不作具体限定。
在实际应用中,可通过多种方式实现所述第一内存资源和第二内存资源的划分以及内存资源的分步锁定,比如,通过对于内存配置表进行管理的方式、加载预设驱动的方式、启动预设***级应用的方式等等,接下来就对于上述实现方式分别进行解释和说明。
在本发明一实施方式中,所述第一锁定模块302可被配置为:
响应于所述预设虚拟机操作被触发,获取内存配置表;
在所述内存配置表中将所述第一内存资源的属性设置为可用,将所述第二内存资源的属性设置为预留,对于属性为可用的第一内存资源执行先行锁定操作。
在该实施方式中,通过对于内存配置表进行管理的方式实现所述第一内存资源和第二内存资源的划分以及内存资源的分步锁定。具体地,当所述预设虚拟机操作被触发时,比如***初始化时,获取内存配置表,比如E820表;然后通过修改所述内存配置表,在所述内存配置表中将预先确定比例的所述第一内存资源的属性设置为可用,也就是说,这部分属性为可用的内存资源可按照虚拟机启动的流程进行正常锁定与释放;同时预留一部分内存资源,即将预先确定比例的所述第二内存资源的属性设置为预留,预留的这部分内存资源当前是不可用的,因此也就不可以按照虚拟机启动的流程进行锁定,这样就实现了对于属性为可用的第一内存资源进行先行锁定,对于属性为预留的第二内存资源进行延迟锁定的操作。
在该实施方式中,所述第二锁定模块303可被配置为:
响应于所述第一内存资源被释放,对于所述第二内存资源执行锁定操作,通知所述内存配置表将所述第二内存资源的属性设置为可用,并在被锁定的所述第二内存资源满足预设释放条件时,对于所述第二内存资源进行释放;或者,
响应于所述第一内存资源被释放,对于所述第二内存资源执行分步锁定操作,通知所述内存配置表将锁定部分的属性设置为可用,并在锁定部分满足相应的预设释放条件时,对于所述第二内存资源的锁定部分进行释放,直至完成所有第二内存资源的锁定和释放。
在通过对于内存配置表进行管理的方式实现所述第一内存资源和第二内存资源的划分以及内存资源的分步锁定时,与上文描述类似,对于所述第二内存资源执行的延迟锁定操作也存在两种实施方式,一,对于所述第二内存资源进行一次性锁定和一次性释放,具体地,当所述第一内存资源被释放后,接着对于所述第二内存资源执行锁定操作,并通知所述内存配置表将所述第二内存资源的属性修改为可用,并在被锁定的所述第二内存资源满足预设释放条件时,对于所述第二内存资源进行一次性释放。二:对于所述第二内存资源进行逐步阶段性锁定和逐步阶段性释放,具体地,当所述第一内存资源被释放后,对于所述第二内存资源进行分部锁定,通知所述内存配置表将锁定部分的属性修改为可用,并在锁定部分满足相应的预设释放条件时,对于所述第二内存资源的锁定部分进行释放,直至完成所有第二内存资源的锁定和释放,比如,以上文示例为例,将所述第二内存资源分为三部分分别执行锁定,当所述第一内存资源被释放后,首先对于所述第二内存资源的部分1执行锁定,通知所述内存配置表将部分1的属性修改为可用,待所述第二内存资源的部分1被解锁释放后,对于所述第二内存资源的部分2执行锁定,通知所述内存配置表将部分2的属性修改为可用,类似地,待所述第二内存资源的部分2被解锁释放后,对于所述第二内存资源的部分3执行锁定,再通知所述内存配置表将部分3的属性修改为可用。
在本发明另一实施方式中,所述第一锁定模块302可被配置为:
响应于所述预设虚拟机操作被触发,加载预设驱动,以使所述预设驱动预先占用所述第二内存资源,对于剩余的所述第一内存资源执行先行锁定操作。
在该实施方式中,通过加载预设驱动的方式实现所述第一内存资源和第二内存资源的划分以及内存资源的分步锁定。具体地,当所述预设虚拟机操作被触发时,比如***初始化时,或者在用户服务、应用或驱动申请内存资源之前,提前加载预设驱动,以抢占预先确定比例的第二内存资源,使得虚拟机对于剩余的所述第一内存资源执行先行锁定操作,而被抢占的第二内存资源则保留至所述第一内存资源被释放之时。其中,所述预设驱动比如可以为virtio-ballooning驱动。
在该实施方式中,所述第二锁定模块303可被配置为:
响应于所述第一内存资源被释放,对于所述预设驱动占用的第二内存资源执行解除占用操作,以使解除占用的所述第二内存资源被执行锁定操作,并在所述第二内存资源满足预设释放条件时,对于所述第二内存资源进行释放;或者,
响应于所述第一内存资源被释放,对于所述预设驱动占用的第二内存资源执行分部解除占用操作,以使解除占用部分被执行锁定操作,并在所述解除占用部分满足相应的预设释放条件时,对于所述解除占用部分进行释放,直至完成所有第二内存资源的锁定和释放。
在通过加载预设驱动的方式实现所述第一内存资源和第二内存资源的划分以及内存资源的分步锁定时,与上文描述类似,对于所述第二内存资源执行的延迟锁定操作也存在两种实施方式,一,对于所述第二内存资源进行一次性锁定和一次性释放,具体地,当所述第一内存资源被释放后,对于所述预设驱动占用的全部第二内存资源执行解除占用操作,以使解除占用的所述第二内存资源能够被执行锁定操作,并在所述第二内存资源满足预设释放条件时,对于所述第二内存资源全部进行释放。二:对于所述第二内存资源进行逐步阶段性锁定和逐步阶段性释放,具体地,当所述第一内存资源被释放后,对于所述预设驱动占用的第二内存资源执行分部解除占用操作,以使解除占用部分被执行锁定操作,并在所述解除占用部分满足相应的预设释放条件时,对于所述解除占用部分进行释放,直至完成所有第二内存资源的锁定和释放,比如,以上文示例为例,将所述第二内存资源分为三部分分别执行锁定,当所述第一内存资源被释放后,首先对于所述第二内存资源的部分1解除占用,对于解除占用的部分1执行锁定,待所述第二内存资源的部分1被解锁释放后,对于所述第二内存资源的部分2解除占用,对于解除占用的部分2执行锁定,类似地,待所述第二内存资源的部分2被解锁释放后,再对于所述第二内存资源的部分3解除占用,对于解除占用的部分3执行锁定。
在本发明再一实施方式中,所述第一锁定模块302可被配置为:
响应于所述预设虚拟机操作被触发,启动预设***级应用,以使所述预设***级应用预先占用所述第二内存资源,对于剩余的所述第一内存资源执行先行锁定操作,其中,所述预设***级应用的优先级高于虚拟机启动时相关应用的优先级。
在该实施方式中,通过启动预设***级应用的方式实现所述第一内存资源和第二内存资源的划分以及内存资源的分步锁定。具体地,当所述预设虚拟机操作被触发时,比如在用户服务、应用或驱动申请内存资源之前,启动预设***级应用,以使所述预设***级应用能够预先占用预先确定比例的所述第二内存资源,对于剩余未被占用的所述第一内存资源执行先行锁定操作,需要注意的是,所述预设***级应用的优先级应高于虚拟机启动时相关应用的优先级,以实现内存资源的抢占。
在该实施方式中,所述第二锁定模块303可被配置为:
响应于所述第一内存资源被释放,对于所述预设***级应用占用的第二内存资源执行解除占用操作,以使解除占用的所述第二内存资源被执行锁定操作,并在所述第二内存资源满足预设释放条件时,对于所述第二内存资源进行释放;或者,
响应于所述第一内存资源被释放,对于所述预设***级应用占用的第二内存资源执行分部解除占用操作,以使解除占用部分被执行锁定操作,并在所述解除占用部分满足相应的预设释放条件时,对于所述解除占用部分进行释放,直至完成所有第二内存资源的锁定和释放。
在通过启动预设***级应用的方式实现所述第一内存资源和第二内存资源的划分以及内存资源的分步锁定时,与上文描述类似,对于所述第二内存资源执行的延迟锁定操作也存在两种实施方式,一,对于所述第二内存资源进行一次性锁定和一次性释放,具体地,当所述第一内存资源被释放后,通知所述预设***级应用对其占用的第二内存资源执行解除占用操作,以使解除占用的所述第二内存资源被执行锁定操作,并在所述第二内存资源满足预设释放条件时,对于所述第二内存资源进行一次性释放。二:对于所述第二内存资源进行逐步阶段性锁定和逐步阶段性释放,具体地,当所述第一内存资源被释放后,通知所述预设***级应用对于所述第二内存资源进行分部解除占用,以使解除占用部分陆续被执行锁定操作,并在解除占用部分满足相应的预设释放条件时,对于解除占用部分进行释放,直至完成所有第二内存资源的锁定和释放,比如,依然以上文示例为例,将所述第二内存资源分为三部分分别执行锁定,当所述第一内存资源被释放后,首先通知所述预设***级应用对于所述第二内存资源的部分1解除占用,对于解除占用的部分1执行锁定,待所述第二内存资源的部分1被解锁释放后,通知所述预设***级应用对于所述第二内存资源的部分2解除占用,对于解除占用的部分2执行锁定,类似地,待所述第二内存资源的部分2被解锁释放后,再通知所述预设***级应用对于所述第二内存资源的部分3解除占用,对于解除占用的部分3执行锁定。
本发明实施例还公开了一种电子设备,图4示出根据本发明一实施方式的电子设备的结构框图,如图4所示,所述电子设备400包括存储器401和处理器402;其中,
所述存储器401用于存储一条或多条计算机指令,其中,所述一条或多条计算机指令被所述处理器402执行以实现上述任一方法步骤。
图5是适于用来实现根据本发明一实施方式的内存管理方法的计算机***的结构示意图。
如图5所示,计算机***500包括处理单元501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储部分508加载到随机访问存储器(RAM)503中的程序而执行上述实施方式中的各种处理。在RAM503中,还存储有***500操作所需的各种程序和数据。处理单元501、ROM502以及RAM503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
以下部件连接至I/O接口505:包括键盘、鼠标等的输入部分506;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分507;包括硬盘等的存储部分508;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分509。通信部分509经由诸如因特网的网络执行通信处理。驱动器510也根据需要连接至I/O接口505。可拆卸介质511,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器510上,以便于从其上读出的计算机程序根据需要被安装入存储部分508。其中,所述处理单元501可实现为CPU、GPU、TPU、FPGA、NPU等处理单元。
特别地,根据本发明的实施方式,上文描述的方法可以被实现为计算机软件程序。例如,本发明的实施方式包括一种计算机程序产品,其包括有形地包含在及其可读介质上的计算机程序,所述计算机程序包含用于执行所述内存管理方法的程序代码。在这样的实施方式中,该计算机程序可以通过通信部分509从网络上被下载和安装,和/或从可拆卸介质511被安装。
附图中的流程图和框图,图示了按照本发明各种实施方式的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,路程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施方式中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定。
作为另一方面,本发明实施例还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施方式中所述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,所述程序被一个或者一个以上的处理器用来执行描述于本发明实施例的方法。
以上描述仅为本发明的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本发明实施例中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本发明实施例中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。