技术新讯 > 计算推算,计数设备的制造及其应用技术 > 虚拟机处理勘误表的方法及相关设备与流程  >  正文

虚拟机处理勘误表的方法及相关设备与流程

  • 国知局
  • 2024-10-15 09:21:59

本技术涉及计算机,尤其涉及一种虚拟机处理勘误表的方法及相关设备。

背景技术:

1、异构中央处理单元(central processing unit,cpu)架构是一种使用多种不同处理器的架构,例如big.little架构包括两种不同架构的cpu,其中“little”cpu旨在实现最高能效,“big”cpu旨在提供最高计算性能,两种cpu都可以访问相同的内存区域,因此工作负载可以在两种cpu间动态调度。

2、对于异构cpu架构中不同类型的cpu而言,指令集、微架构、特性集等方面一般存在差异。面向这些差异,运行在异构cpu架构上的操作系统,往往需要进行一些架构上的兼容设计,比如屏蔽异构cpu间的差异,为整个操作系统提供统一的运行环境。不同类型的cpu的典型差异之一是勘误表(errata)。cpu的指令中可能存在errata(下文简称为cpu errata),cpu的定时器组件中也可能存在errata(下文简称timer errata)。操作系统可通过配置errata管理系统对不同类型的cpu存在的errata进行管理。

3、基于异构cpu架构构建的虚拟机,虚拟机的虚拟cpu使用的固件由虚拟机监视器(virtual machine monitor,vmm)构建,虚拟机基于vmm创建的固件识别timer errata,而vmm创建的固件可能未添加相关timer errata描述字段,导致timer errata识别不全。虚拟机读取到的cpu类型信息与虚拟机启动时的虚拟cpu所在的物理cpu有关,进而可能导致识别到的cpu errata不全,也可能导致识别到的timer errata不全。基于以上原因,虚拟机errata管理系统无法获取到异构cpu架构中存在的所有errata,进而导致虚拟机errata管理系统无法顺利地处理异构cpu架构中存在的所有errata,影响虚拟机内业务的正常运行。

技术实现思路

1、有鉴于此,有必要提供一种虚拟机处理勘误表的方法,使得虚拟机可准确地处理cpu架构中存在的errata,提升虚拟机运行的稳定性。

2、本技术实施例第一方面公开了一种虚拟机处理勘误表的方法,应用于电子设备,电子设备包括由至少一个物理cpu构成的cpu架构,电子设备运行有虚拟机(virtualmachine,vm)及用于管理vm的vmm,方法包括:vmm获取cpu架构的errata相关信息,及将errata相关信息共享给vm,errata相关信息包括cpu类型信息与timer errata信息;vm基于errata相关信息识别cpu架构存在的errata;vm对识别到的errata进行修复处理。

3、采用上述技术方案,由运行在后端操作系统(即宿主机操作系统,host os)的vmm维护cpu架构中的所有cpu类型信息及所有timer errata信息并共享给前端的vm,使得vm可识别到cpu架构中所有可能存在的errata(例如cpu errata及timer errata),可避免vm无法准确获取到异构cpu架构中存在的所有errata,进而导致vm无法顺利地处理异构cpu架构中存在的errata的问题,提升了vm内业务的运行稳定性。

4、在一些实施例中,cpu类型信息包括cpu架构中的每种物理cpu的类型信息,timererrata信息包括第一timer errata信息与第二timer errata信息,vmm获取cpu架构的勘误表errata相关信息,包括:vmm遍历cpu架构中的每个物理cpu的系统寄存器,获取每种物理cpu的类型信息;vmm将cpu类型信息与预设timer errata表进行比对,得到与cpu类型信息对应的所述第一timer errata信息;vmm获取cpu架构中的固件的高级配置与电源接口(advanced configuration and power interface acpi)表或设备树(device tree,dt)表,从acpi表或dt表中读取timer errata相关信息字段,及基于timer errata相关信息字段解析得到第二timer errata信息。

5、采用上述技术方案,通过vmm在后端遍历cpu架构中的每个物理cpu的系统寄存器,从中读取每种物理cpu的类型信息,实现准确维护cpu架构中的所有cpu类型信息,通过vmm在后端对cpu架构中的固件的acpi表或dt表进行解析,识别cpu架构可能存在的timererrata,及根据cpu类型信息补充识别cpu架构可能存在的timer errata,进而实现全面地收集cpu架构的timer errata信息,后端维护的cpu架构中的所有cpu类型信息及所有timererrata信息共享给前端的vm,使得vm可准确识别到cpu架构中所有可能存在的errata,将vm的固件构建和timer errata的识别进行解耦(即不依赖vm的固件进行timer errata的识别),使得当出现新的timer errata时,无需修改vm的固件的构建代码。

6、在一些实施例中,电子设备上配置有vm及vmm均具有访问权限的共享存储区,将errata相关信息共享给vm,包括:vmm将errata相关信息写入至共享存储区;vm从共享存储区读取errata相关信息。

7、采用上述技术方案,通过设置共享存储区实现vm与vmm之间进行通信,使得vmm在后端维护的信息可共享给前端的vm,vm在前端维护的信息可共享给后端的vmm,例如vmm可将共享给vm的信息写入至共享存储区,vm从共享存储区读取vmm写入的信息,vm可将共享给vmm的信息写入至共享存储区,vmm从共享存储区读取vm写入的信息。

8、在一些实施例中,vm基于errata相关信息识别cpu架构存在的errata,包括:vm将cpu类型信息与预设cpu errata表进行比对,得到cpu架构存在的cpu errata;vm基于timererrata信息,得到cpu架构存在的timer errata。

9、采用上述技术方案,vm可基于vmm共享的errata相关信息准确地识别cpu架构存在的cpu errata与timer errata,使得vm可顺利地处理异构cpu架构中存在的所有cpuerrata与timer errata,提升了vm内业务的运行稳定性。

10、在一些实施例中,vm搭载客户操作系统(guest operating system,guest os),识别到的errata包括静态管理类型errata与动态管理类型errata,vm对识别到的errata进行修复处理,包括:在vm的guest os运行至第一errata的errata处理逻辑,且第一errata为静态管理类型errata,且确定cpu架构存在第一errata时,vm执行第一errata的errata修复逻辑,以对第一errata进行修复;在vm的guest os运行至第一errata的errata处理逻辑,且第一errata为动态管理类型errata,且确定cpu架构存在第一errata时,vm执行第一errata的errata修复逻辑,以对第一errata进行修复;在vm的guest os运行至第一errata的errata处理逻辑,且第一errata为动态管理类型errata,且确定cpu架构不存在第一errata时,vm执行第一errata的非修复逻辑。

11、采用上述技术方案,errata按照类型划分可包括cpu errata、timer errata等等,errata还可根据管理方式进行划分,按照管理方式的不同可划分为两种类型:静态管理类型errata与动态管理类型errata,电子设备的操作系统(也可称为host os)及vm的gust os可包含各种errata的errata处理逻辑,以vm的gust os为例,对于静态管理类型errata,可以在vm的guest os运行至某个errata的errata处理逻辑时,若cpu架构中存在该errata,可直接执行errata修复逻辑,对于动态管理类型errata,vm的guest os运行至某个errata的errata处理逻辑时,可基于cpu架构的cpu类型信息,确定是否执行errata修复逻辑,例如,基于cpu类型信息确定cpu架构存在该errata,执行errata修复逻辑,对该errata进行修复,若确定cpu架构不存在该errata,执行非修复逻辑,即不对该errata进行修复,避免执行冗余errata修复逻辑,可提升vm的性能。

12、在一些实施例中,vm还包括动态errata管理开关,在vm的guest os运行至第一errata的errata处理逻辑,且第一errata为动态管理类型errata,且确定cpu架构存在第一errata时,vm执行第一errata的errata修复逻辑,包括:在vm的guest os运行至第一errata的errata处理逻辑,且第一errata为动态管理类型errata,且确定cpu架构存在所述第一errata,且动态errata管理开关处于关闭状态时,vm执行第一errata的errata修复逻辑;在vm的guest os运行至第一errata的errata处理逻辑,且第一errata为动态管理类型errata,且确定cpu架构不存在第一errata时,vm执行第一errata的非修复逻辑,包括:在vm的guest os运行至第一errata的errata处理逻辑,且第一errata为动态管理类型errata,且确定cpu架构不存在第一errata,且动态errata管理开关处于关闭状态时,vm执行第一errata的非修复逻辑。

13、采用上述技术方案,可通过在vm中设置动态errata管理开关来选择是否开启errata动态处理机制,例如,vm可以响应于用户操作,将动态errata管理开关置于关闭状态或者开启状态,若将动态errata管理开关置于关闭状态,vm的guest os运行至某个动态管理类型errata的errata处理逻辑时,可根据cpu类型信息确定是否执行errata修复逻辑,若基于cpu类型信息确定cpu架构存在该动态管理类型errata,执行errata修复逻辑,基于cpu类型信息确定cpu架构不存在该动态管理类型errata,执行非修复逻辑。

14、在一些实施例中,vm还包括动态errata管理开关,动态errata管理开关处于开启状态,虚拟机处理勘误表的方法还包括:vmm获取vm的vcpu线程所在的物理cpu类型信息,及将vcpu线程所在的物理cpu类型信息共享给vm,vm还可基于vcpu线程所在的物理cpu类型信息进行errata修复处理。

15、采用上述技术方案,若将动态errata管理开关置于开启状态,通过实时获取vcpu线程所在的物理cpu类型信息,基于vcpu线程所在的物理cpu类型信息确定是否执行errata修复逻辑,避免执行冗余errata修复逻辑,可进一步提升vm的性能。

16、在一些实施例中,vm搭载guest os,识别到的errata包括静态管理类型errata与动态管理类型errata,vm对识别到的errata进行修复处理,包括:在vm的guest os运行至第二errata的errata处理逻辑,且第二errata为静态管理类型errata,且确定cpu架构存在所述第二errata时,vm执行第二errata的errata修复逻辑,以对第二errata进行修复;在vm的guest os运行至第二errata的errata处理逻辑,且第二errata为所述动态管理类型errata,且基于vcpu线程所在的物理cpu类型信息确定vcpu线程所在的cpu存在第二errata时,vm执行第二errata的errata修复逻辑,以对第二errata进行修复;在vm的guest os运行至第二errata的errata处理逻辑,且第二errata为动态管理类型errata,且基于vcpu线程所在的物理cpu类型信息确定vcpu线程所在的cpu不存在第二errata时,vm执行所述第二errata的非修复逻辑。

17、采用上述技术方案,errata按照类型划分可包括cpu errata、timer errata等等,errata还可根据管理方式进行划分,按照管理方式的不同可划分为两种类型:静态管理类型errata与动态管理类型errata,电子设备的host os及vm的gust os可包含各种errata的errata处理逻辑,以vm的gust os为例,对于静态管理类型errata,在vm的guest os运行至某个errata的errata处理逻辑时,若cpu架构中存在该errata,可直接执行errata修复逻辑,对于动态管理类型errata,vm的guest os运行至某个动态管理类型errata的errata处理逻辑时,可基于vcpu线程当前所在的物理cpu类型确定是否执行errata修复逻辑,例如,通过获取vcpu线程当前所在的物理cpu类型,基于物理cpu类型确定该类型的物理cpu是否存在该动态管理类型errata,若确定该类型的物理cpu中不存在该动态管理类型errata,执行非修复逻辑,若确定该类型的物理cpu中存在该动态管理类型errata,执行errata修复逻辑,可避免执行冗余errata修复逻辑,提升vm的性能。

18、在一些实施例中,虚拟机处理勘误表的方法还包括:vm将第二errata处理上下文共享给vmm;vmm基于第二errata处理上下文管理vm的vcpu线程的调度。

19、采用上述技术方案,通过在前端实时维护vcpu线程的errata处理上下文,并共享给后端vmm,使得vmm在确定vcpu线程处于errata处理逻辑中时,禁止vcpu线程进行跨类型的cpu调度,或者禁止vcpu线程进行cpu调度,保证了vcpu线程正确处理errata,避免vcpu线程在处理某个errata的非修改逻辑时,被调度到其他包含此errata的cpu,导致errata处理逻辑错误,影响vm的正常运行。

20、在一些实施例中,vmm基于第二errata处理上下文管理vm的vcpu线程的调度,包括:vmm基于第二errata处理上下文,禁止vm的vcpu线程进行跨类型的cpu调度;或者vmm基于第二errata处理上下文,禁止vm的vcpu线程进行cpu调度。

21、采用上述技术方案,vmm在确定vcpu线程处于errata处理逻辑中时,禁止vcpu线程进行跨类型的cpu调度,但可进行同类型的cpu调度,或者直接禁止vcpu线程进行cpu调度(即同类型的cpu调度亦不允许),保证了vcpu线程正确处理errata。

22、在一些实施例中,虚拟机处理勘误表的方法还包括:在第二errata处理完毕时,vm将第二errata处理完毕上下文共享给vmm;vmm基于第二errata处理完毕上下文,恢复vm的vcpu线程的cpu调度权限。

23、采用上述技术方案,在vcpu线程完成errata处理之后,vmm确定vcpu线程未处于errata处理逻辑中,恢复vm的vcpu线程的cpu自由调度权限,实现对vm进行全局cpu资源调度与管理,可充分利用cpu架构的cpu资源,充分发挥cpu架构的算力&功耗的平衡,灵活支撑vm的运维,提升vm上部署的应用体验。

24、第二方面,本技术实施例提供一种计算机可读存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行如第一方面所述的虚拟机处理勘误表的方法。

25、第三方面,本技术实施例提供一种电子设备,电子设备包括处理器和存储器,存储器用于存储指令,处理器用于调用存储器中的指令,使得电子设备执行如第一方面所述的虚拟机处理勘误表的方法。

26、第四方面,本技术实施例提供一种计算机程序产品,当计算机程序产品在电子设备(如计算机)上运行时,使得电子设备执行如第一方面所述的虚拟机处理勘误表的方法。

27、第五方面,提供一种装置,所述装置具有实现上述第一方面所提供的方法中电子设备行为的功能。功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。

28、可以理解地,上述提供的第二方面所述的计算机可读存储介质,第三方面所述的电子设备,第四方面所述的计算机程序产品,第五方面所述的装置均与上述第一方面的方法对应,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。

本文地址:https://www.jishuxx.com/zhuanli/20241015/313914.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。