《容错系统和用于执行容错的方法.pdf》由会员分享,可在线阅读,更多相关《容错系统和用于执行容错的方法.pdf(28页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 103678024 A (43)申请公布日 2014.03.26 CN 103678024 A (21)申请号 201310430124.9 (22)申请日 2013.09.18 2012-204608 2012.09.18 JP G06F 11/07(2006.01) G06F 9/455(2006.01) (71)申请人 横河电机株式会社 地址 日本东京 (72)发明人 吉田善贵 植原正太 大野毅 (74)专利代理机构 北京天昊联合知识产权代理 有限公司 11112 代理人 陈源 李铭 (54) 发明名称 容错系统和用于执行容错的方法 (57) 摘要 本发明公开了。
2、容错系统和用于执行容错的方 法, 所述容错系统包括 : 在主机上形成的主虚拟 机, 主管理程序在该主机中运行, 该主虚拟机适 用于将基于来自主管理程序的外部中断的虚拟中 断输入至主客户 OS ; 以及在次机上形成的次虚拟 机, 次管理程序在该次机中运行, 该次虚拟机适用 于基于与主虚拟机所发送的虚拟中断有关的时间 信息来将虚拟中断输入至次客户 OS。主虚拟机适 用于从次虚拟机搜集操作性能信息, 并且配置主 虚拟机的操作性能和次虚拟机的操作性能, 使得 主虚拟机的操作性能变得与次虚拟机的操作性能 相同。 (30)优先权数据 (51)Int.Cl. 权利要求书 2 页 说明书 18 页 附图 7 。
3、页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书18页 附图7页 (10)申请公布号 CN 103678024 A CN 103678024 A 1/2 页 2 1. 一种容错系统, 包括 : 在主机上形成的主虚拟机, 主管理程序在所述主机中运行, 所述主虚拟机适用于将基 于来自所述主管理程序的外部中断的虚拟中断输入至主客户 OS ; 以及 在次机上形成的次虚拟机, 次管理程序在所述次机中运行, 所述次虚拟机适用于基于 与所述主虚拟机所发送的虚拟中断有关的定时信息来将虚拟中断发送至次客户 OS, 其中所述主虚拟机适用于从所述次虚拟机搜集操作性能信息, 并且。
4、配置所述主虚拟机 的操作性能和所述次虚拟机的操作性能, 使得所述主虚拟机的操作性能变得与所述次虚拟 机的操作性能相同。 2. 如权利要求 1 所述的容错系统, 其中所述主虚拟机适用于将所述次虚拟机的所配置的操作性能通知给所述次虚拟机, 以及 其中所述次虚拟机适用于根据所通知的操作性能执行操作。 3. 如权利要求 1 或 2 所述的容错系统, 其中所述操作性能包括操作频率, 并且 其中所述主虚拟机适用于搜集所述主虚拟机可用的操作频率和所述次虚拟机可用的 操作频率, 并且适用于配置所述主虚拟机的操作频率和所述次虚拟机的操作频率。 4. 如权利要求 1 或 2 所述的容错系统, 其中如果所述主虚拟机。
5、所使用的装置的操作规范与所述次虚拟机所使用的装置的操 作规范彼此不同, 则所述主虚拟机适用于仿真处理, 使得所述主虚拟机所使用的装置的处 理变得与所述次虚拟机所使用的装置的处理相同。 5. 如权利要求 4 所述的容错系统, 其中如果各所述装置的操作规范中的差异在于是否存在给定功能, 则所述主虚拟机适 用于使所述给定功能无效并仿真处理, 使得所述主虚拟机所使用的装置的处理变得与所述 次虚拟机所使用的装置的处理相同, 并且 其中如果各所述装置的操作规范中的差异在于性能或容量, 则所述主虚拟机适用于允 许将在所述主客户 OS 以外的外部环境中执行的操作上的处理不同。 6. 如权利要求 1 或 2 所。
6、述的容错系统, 其中如果所述主虚拟机所使用的装置的操作规范与所述次虚拟机所使用的装置的操 作规范彼此不同, 则所述次虚拟机适用于仿真处理, 使得所述次虚拟机所使用的装置的处 理变得与所述主虚拟机所使用的装置的处理相同。 7. 如权利要求 6 所述的容错系统, 其中如果各所述装置的操作规范中的差异在于是否存在给定功能, 则所述次虚拟机适 用于使所述给定功能无效并仿真处理, 使得所述次虚拟机所使用的装置的处理变得与所述 主虚拟机所使用的装置的处理相同, 并且 其中如果各所述装置的操作规范中的差异在于性能或容量, 则所述次虚拟机适用于允 许将在所述次客户 OS 以外的外部环境中执行的操作上的处理不同。
7、。 8. 如权利要求 1 或 2 所述的容错系统, 其中如果即使配置了操作性能以后所述次虚拟机的执行速度仍低于所述主虚拟机的 执行速度, 则所述次虚拟机适用于获取延迟度, 并且如果所获取的值超过预定的可容许延 权 利 要 求 书 CN 103678024 A 2 2/2 页 3 迟时间, 则所述次虚拟机适用于执行同步初始化处理。 9. 如权利要求 8 所述的容错系统, 其中如果所获取的延迟度大于假定量, 则所述次虚拟机适用于检测故障发生。 10. 如权利要求 1 或 2 所述的容错系统, 其中如果即使配置了操作性能以后所述次虚拟机的执行速度仍低于所述主虚拟机的 执行速度, 则所述次虚拟机适用于。
8、在所述主客户 OS 的空闲期间加速虚拟中断输入定时, 以 克服所述主虚拟机的延迟。 11. 如权利要求 1 或 2 所述的容错系统, 其中如果即使配置了操作性能以后所述主虚拟机的执行速度仍高于所述次虚拟机的 执行速度, 则所述主虚拟机适用于在依照所述次虚拟机的执行速度进行暂停的情况下执行 操作。 12. 如权利要求 1 或 2 所述的容错系统, 其中如果即使配置了操作性能以后所述次虚拟机的执行速度仍高于所述主虚拟机的 执行速度, 则所述次虚拟机适用于在依照所述主虚拟机的执行速度进行暂停的情况下执行 操作。 13. 如权利要求 1 或 2 所述的容错系统, 其中所述主虚拟机和所述次虚拟机适用于在。
9、分配给各虚拟机的内存上加载各存储装 置的内容, 并且用内存访问代替存储装置访问。 14. 如权利要求 13 所述的容错系统, 其中当进行内存访问时, 所述主虚拟机和所述次虚拟机适用于将所述虚拟中断输入至 各自客户 OS 而不等待访问完成的外部中断。 15. 如权利要求 13 所述的容错系统, 其中所述主虚拟机和所述次虚拟机适用于在由各自客户 OS 配置的 RAM 盘上加载各存 储装置的内容, 并且用 RAM 盘访问代替存储装置访问。 16. 一种用于通过主虚拟机和次虚拟机执行容错的方法, 所述主虚拟机形成在主机上, 主管理程序运行在所述主机中, 所述主虚拟机被配置为将基于来自主管理程序的外部中。
10、断 的虚拟中断输入至主客户 OS, 所述次虚拟机形成在次机上, 次管理程序运行在所述次机中, 所述次虚拟机被配置为基于与主虚拟机所发送的虚拟中断有关的定时信息来将虚拟中断 输入至次客户 OS, 所述方法包括 : 从次虚拟机搜集操作性能信息 ; 并且 配置主虚拟机的操作性能和次虚拟机的操作性能, 使得主虚拟机的操作性能变得与次 虚拟机的操作性能相同。 权 利 要 求 书 CN 103678024 A 3 1/18 页 4 容错系统和用于执行容错的方法 技术领域 0001 本发明涉及使用虚拟机的容错系统以及使用虚拟机来执行容错的方法。 背景技术 0002 容错系统是这样一种系统, 即使在系统配置的。
11、一部分中出现缺陷的情况下, 容错 系统也能够继续操作, 而不会使整个系统崩溃, 并且容错系统尤其适用于要求具有高度有 效性和不间断系统有效性的系统。 例如, 即使在发生硬件故障的情况下, 采用了容错系统的 服务器计算机也可以输出正确的数据, 而不会有对来自外部装置的客户应用程序进行的网 络访问作出响应的通信错误。 0003 如 JP-A-2009-80695 所公开的, 已知一种在运行于两台彼此通信的计算机上的虚 拟机中实现容错系统的技术。使用虚拟机的容错系统将这两台虚拟机的执行状态同步, 以 进行相同的操作。当在其中一台计算机中出现故障时, 在另一台计算机中操作的虚拟机接 管处理, 由此连续。
12、而不中断地提供系统的服务。 0004 在使用虚拟机的容错系统中, 将一台虚拟机作为主虚拟机, 而将另一台虚拟机设 为次虚拟机。 将主虚拟机构造为领先于次虚拟机执行同一操作并接管对关于外部装置进行 输入 / 输出的控制。 0005 通常, 当执行相同程序的两台计算机以完全相同的定时从外部装置接收输入时, 这两台计算机会进行相同的操作, 并且输出相同的数据。 因此, 当在使用虚拟机的容错系统 中基于外部输入发生中断时, 该容错系统令主虚拟机将中断发生的时刻作为同步信息发送 至次虚拟机。然后, 以一定延迟运行的次虚拟机在与同步信息所通知的时刻相同的时刻产 生虚拟中断, 由此主虚拟机和次虚拟机以彼此同。
13、步的方式执行相同的操作。 0006 图 6 是示出了传统的使用虚拟机的容错系统的配置的框图。如图 6 所示, 容错系 统 60 包括了在网络上彼此连接的主机 600 和次机 700。 0007 在主机 600 中, 主管理程序 620 在作为物理计算机环境的主硬件 610 上运行, 并且 主机 600 中配置了主虚拟机 630。在主虚拟机 630 中运行主客户 OS(操作系统) 640, 并且 在主客户 OS640 上执行应用程序 650。 0008 主硬件 610 配备有诸如 CPU (中央处理单元) 、 内存、 网络接口卡 (NIC) 、 和存储器之 类的多种装置。 0009 主虚拟机 6。
14、30 分配有主硬件 610 的一部分硬件资源, 并且在虚拟计算机环境中接 管与外部装置相关的输入 / 输出的控制。主虚拟机 630 由主管理程序 620 管理。 0010 同样, 在次机 700 中, 次管理程序 720 在作为物理计算机环境的次硬件 710 上运 行, 并且次机 700 中配置了次虚拟机 730。在次虚拟机 730 中运行次客户 OS740, 并且在次 客户 OS740 上执行应用程序 750。 0011 次硬件 710 配备有诸如 CPU、 内存、 网络接口卡 (NIC) 、 和存储器之类的多种装置。 0012 次虚拟机 730 分配有次硬件 710 的一部分硬件资源, 并。
15、且在虚拟计算机环境中与 主虚拟机 630 同步地操作。次虚拟机 730 由次管理程序 720 管理。 说 明 书 CN 103678024 A 4 2/18 页 5 0013 在传统的容错系统 60 中, 在以下过程中主虚拟机 630 与次虚拟机 730 的执行状态 彼此同步。 0014 一旦接收到来自主硬件 610 的外部中断, 主管理程序 620 则将该外部中断输入至 主虚拟机 630。 0015 然后, 主虚拟机 630 将虚拟中断输入至主客户 OS640。现在, 将要描述将虚拟中断 从主虚拟机 630 输入至主客户 OS640。 0016 当在主客户 OS640 的处理期间出现诸如外部。
16、中断、 特权指令、 或异常之类的虚拟 机上下文切换事件时, 主客户OS640的处理被挂起, 客户OS上下文被切换至虚拟机上下文, 处理转移至主虚拟机 630。 0017 若主虚拟机630根据在其定时时刻的各种事件而需要在主客户OS640上输入虚拟 中断, 则主虚拟机 630 配置虚拟中断。当配置了虚拟中断时, 主虚拟机 630 终止处理, 当处 理返回至在生成事件时刻被挂起的主客户 OS640 时, 虚拟中断被输入至主客户 OS640。 0018 当主虚拟机 630 将虚拟中断输入至主客户 OS640 时, 主虚拟机 630 将同步信息发 送至次虚拟机730。 同步信息包括对虚拟中断的识别信息。
17、、 以及用于输入虚拟中断的同步定 时信息。 0019 同步定时信息是关于在与虚拟中断被输入至主客户 OS640 相同的时刻将虚拟中 断输入至次客户 OS740 的信息, 并且包括指示了执行挂起位置和 CPU 特有的执行指令的数 量的信息。 0020 作为执行挂起位置, 可以使用表示当输入虚拟中断时所执行的指令地址的程序计 数器的值。执行指令的数量可以由 CPU 中提供的性能计数器的 CPU 执行指令数量计数器来 测量。 0021 在测量执行指令数量的情况下, 当主虚拟机 630 将虚拟中断输入至主客户 OS640 时, 将 CPU 执行指令数量计数器清零, 并且在重新开始执行主客户 OS640。
18、 前使 CPU 执行指令 数量计数器启动。因此, 计算出了自先前的虚拟中断输入以后由主客户 OS640 执行的指令 的数量。 0022 当仅有执行挂起位置被用作同步定时信息时, 在表示执行挂起位置的指令包括在 循环处理中或者包括在条件分支目的地中的情况下无法指定虚拟中断输入的时刻, 这是因 为每次当进行到循环或条件分支进程都会执行该指令。 0023 同样, 当仅有执行指令的数量被用作同步定时信息时, 由于诸如流水线处理之类 的高速化技术, 使得次客户 OS740 不能以所指定的执行指令的数量来挂起, 并且不可避免 地在超出执行指令的数量后被挂起。由此, 虚拟中断不能在与主客户 OS640 相同。
19、的时刻被 输入到次客户 OS740。 0024 在该情形下, 将执行挂起位置和执行指令的数量结合在一起作为同步定时信息, 并且每次在次客户 OS740 中对执行挂起位置所表示的指令进行处理时确认执行指令的数 量。因此, 在与将虚拟中断输入到主客户 OS640 中相同的时刻来将次客户 OS740 挂起。 0025 因此, 当在挂起了主客户 OS640 的执行之后主虚拟机 630 将虚拟中断输入至主客 户 OS640 时, 主虚拟机 630 获取挂起主客户 OS640 的执行时刻的程序计数器的值、 以及 CPU 执行指令数量计数器的值, 以生成同步定时信息。然后, 主虚拟机 630 将有关虚拟中断。
20、的识 别信息和同步定时信息发送至次虚拟机 730 作为同步信息。 说 明 书 CN 103678024 A 5 3/18 页 6 0026 接收到了同步信息的次虚拟机 730 根据同步定时信息来挂起次客户 OS740 的执 行。将参照图 7 的流程图来描述该情形下次虚拟机 730 的操作。 0027 将暂停 (break)指令嵌入同步定时信息的执行挂起位置所指定的程序位置中 (S401) , 并且重新启动次客户 OS740 (S402) 。然后, 当次客户 OS740 停止 (S403 中为是) 时, 确认 CPU 执行指令数量计数器, 并且若计数器值匹配执行指令的指定数量 (S404 中为是。
21、) , 则次客户 OS740 在停止位置处挂起 (S405) 。若计数器值不匹配执行指令的指定数量 (S404 中为否) , 则次客户 OS740 重新启动 (S402) 并重复确认执行指令的数量。 0028 当次虚拟机 730 挂起次客户 OS740 时, 次虚拟机 730 根据同步信息的虚拟中断 识别信息来配置虚拟中断 (S406) , 并且重新启动次客户 OS740(S407) 。因此, 在与主客户 OS640 相同的时刻将虚拟中断输入至次客户 OS740, 并且主虚拟机 630 和次虚拟机 730 的执 行状态彼此同步。 0029 当在主机600和次机700的任何一个中发生硬件故障时,。
22、 打乱了执行状态的同步。 当执行状态的同步被打乱时, 主虚拟机630和次虚拟机730之间的输出数据的值变得不同。 在该情况下, 容错系统 60 对比次虚拟机 730 的输出来检查主虚拟机 630 的输出, 若输出数 据的值彼此不同, 则确定发生硬件故障。 0030 为了进行该故障确定处理, 次虚拟机 730 装配有输出数据检查单元 731, 其搜集主 虚拟机 630 的输出数据, 并对比次虚拟机 730 的输出数据来检查所搜集的输出数据。 0031 在容错系统 60 中, 主机 600 的主硬件 610 和次机 700 的次硬件 710 均由诸如 CPU、 内存、 或装置之类的各种硬件装置配置。
23、而成。但是, 双方硬件的性能可能并不彼此一致。 0032 例如, 存在这样的情况, 即 CPU 的规范彼此不同或者内存的容量彼此不同。同样, 可能由于在容错系统 60 的操作处理中发生的装置的替换而使双方的装置彼此不同, 或者 即使使用相同的装置但可能由于老化导致发生性能差异。 0033 为此, 主虚拟机 630 和次虚拟机 730 之间的处理速度可能出现差异。如上所述, 在 容错系统 60 中, 主虚拟机 630 被配置为在次虚拟机 730 之前操作。但是, 例如, 若次虚拟机 730 的处理速度更高, 则进程的推进会反转, 并且基于来自主虚拟机 630 的同步信息, 执行 状态彼此不同步。。
24、若主虚拟机 630 的处理速度更高, 则次虚拟机 730 的延迟会累积。 0034 同样, 由于装置不同导致主客户 OS640 和次客户 OS740 之间驱动器处理的执行可 能不同, 它们之间的操作不同, 导致操作可能不同步。 发明内容 0035 为此, 需要一种用于补偿硬件中的差异的结构。本发明的示例性实施例提供了一 种使得形成在两台计算机上的虚拟机执行并行同步操作的容错系统和用于执行容错的方 法, 其中适当地调节各计算机的硬件之间的差异。 0036 根据本发明的示例性实施例的容错系统, 包括 : 0037 在主机上形成的主虚拟机, 主管理程序在所述主机中运行, 主虚拟机适用于将基 于来自主。
25、管理程序的外部中断的虚拟中断输入至主客户 OS ; 以及 0038 在次机上形成的次虚拟机, 次管理程序在次机中运行, 次虚拟机适用于基于与主 虚拟机所发送的虚拟中断有关的定时信息来将虚拟中断发送至次客户 OS, 0039 其中主虚拟机适用于从次虚拟机搜集操作性能信息, 并且配置主虚拟机的操作性 说 明 书 CN 103678024 A 6 4/18 页 7 能和次虚拟机的操作性能, 使得主虚拟机的操作性能变得与次虚拟机的操作性能相同。 0040 主虚拟机可以适用于将次虚拟机的所配置的操作性能通知给次虚拟机, 以及 0041 次虚拟机可以适用于根据所通知的操作性能执行操作。 0042 操作性能。
26、可以包括操作频率, 并且主虚拟机可以适用于搜集主虚拟机可用的操作 频率和次虚拟机可用的操作频率, 并且适用于配置主虚拟机的操作频率和次虚拟机的操作 频率。 0043 若主虚拟机所使用的装置的操作规范与次虚拟机所使用的装置的操作规范彼此 不同, 则主虚拟机可以适用于仿真处理, 使得主虚拟机所使用的装置的处理变得与次虚拟 机所使用的装置的处理相同。 0044 若上述各装置的操作规范中的差异在于是否存在给定功能, 则主虚拟机适用于使 所该给定功能无效并仿真处理, 使得主虚拟机所使用的装置的处理变得与次虚拟机所使用 的装置的处理相同, 以及若各装置的操作规范中的差异在于性能或容量, 则主虚拟机适用 于。
27、允许将在主客户 OS 以外的外部环境中执行的操作上的处理不同。 0045 若主虚拟机所使用的装置的操作规范与次虚拟机所使用的装置的操作规范彼此 不同, 则次虚拟机可以适用于仿真处理, 以使得次虚拟机所使用的装置的处理变得与主虚 拟机所使用的装置的处理相同。 0046 若上述各装置的操作规范中的差异在于是否存在给定功能, 则次虚拟机可以适用 于使该给定功能无效并仿真处理, 使得次虚拟机所使用的装置的处理变得与主虚拟机所使 用的装置的处理相同, 以及若各装置的操作规范中的差异在于性能或容量, 则次虚拟机可 以适用于允许将在次客户 OS 以外的外部环境中执行的操作上的处理不同。 0047 若即使配置。
28、了操作性能以后次虚拟机的执行速度仍低于主虚拟机的执行速度, 则 次虚拟机可以适用于获取延迟度, 并且若所获取的值超过预定的可容许延迟时间, 则次虚 拟机可以适用于执行同步初始化处理。 0048 若所获取的延迟度大于假定量, 则次虚拟机可以适用于检测故障发生。 0049 若即使配置了操作性能以后次虚拟机的执行速度仍低于主虚拟机的执行速度, 则 次虚拟机可以适用于在主客户 OS 的空闲期间加速虚拟中断输入定时, 以克服主虚拟机的 延迟。 0050 若即使配置了操作性能以后主虚拟机的执行速度仍高于次虚拟机的执行速度, 则 主虚拟机可以适用于在依照次虚拟机的执行速度进行暂停的情况下执行操作。 0051。
29、 若即使配置了操作性能以后次虚拟机的执行速度仍高于主虚拟机的执行速度, 则 次虚拟机可以适用于在依照主虚拟机的执行速度进行暂停的情况下执行操作。 0052 主虚拟机和次虚拟机可以适用于在分配给各虚拟机的内存上加载各存储装置的 内容, 并且用内存访问代替存储装置访问。 0053 当进行内存访问时, 主虚拟机和次虚拟机可以适用于将虚拟中断输入至各自客户 OS 而不等待访问完成的外部中断。 0054 主虚拟机和次虚拟机可以适用于在由各自客户 OS 配置的 RAM 盘上加载各存储装 置的内容, 并且用 RAM 盘访问代替存储装置访问。 0055 根据本发明的示例性实施例的用于通过主虚拟机和次虚拟机执行。
30、容错的方法, 所 述主虚拟机形成在主机上, 主管理程序运行在所述主机中, 所述主虚拟机被配置为将基于 说 明 书 CN 103678024 A 7 5/18 页 8 来自主管理程序的外部中断的虚拟中断输入至主客户 OS, 所述次虚拟机形成在次机上, 次 管理程序运行在所述次机中, 所述次虚拟机被配置为基于与主虚拟机所发送的虚拟中断有 关的定时信息来将虚拟中断输入至次客户 OS, 所述方法包括 : 0056 从次虚拟机搜集操作性能信息 ; 并且 0057 配置主虚拟机的操作性能和次虚拟机的操作性能, 使得主虚拟机的操作性能变得 与次虚拟机的操作性能相同。 0058 根据本发明的示例性实施例, 在。
31、使得形成在两台计算上的两个虚拟机执行并行同 步操作的容错系统和用于执行容错的方法中, 可以适当地调节各计算机的硬件之间的差 异。 附图说明 0059 图 1 是示出了根据一个实施例的容错系统的配置的框图。 0060 图 2 是示出了主虚拟机和次虚拟机的并行同步操作的概要的流程图。 0061 图3A和图3B是示出了通过分支数和执行挂起位置来识别虚拟中断输入位置的示 图。 0062 图 4 是示出了当 CPU 架构的细节已知时, 虚拟中断定时调节操作的具体过程的流 程图。 0063 图5是示出了当CPU架构的细节未知时, 虚拟中断定时调节的具体过程的流程图。 0064 图 6 是示出了相关技术中的。
32、使用虚拟机的容错系统的配置的框图。 0065 图 7 是示出了让已经接收到同步信息的次虚拟机根据同步定时信息来挂起次客 户 OS 的执行的操作流程图。 具体实施方式 0066 将参照附图来描述根据本发明的实施例。图 1 是示出了根据本实施例的容错系统 的配置的框图。如图 1 所示, 容错系统 10 包括通过网络彼此连接的主机 100 和次机 200。 主机 100 和次机 200 可以由诸如服务器计算机或个人计算机之类的通用计算机来配置。 0067 在主机 100 中, 主管理程序 120 在作为物理计算机环境的主硬件 110 上运行, 并且 主虚拟机 130 由主管理程序 120 构成。在主。
33、虚拟机 130 中, 主客户 OS140 运行, 并且在主客 户 OS140 上执行应用程序 150。 0068 主硬件 110 配备有以下多种装置, 诸如 CPU111、 内存 112、 定时器 113、 网络接口卡 (NIC) 114、 和存储器之类的装置 115。 0069 主虚拟机 130 分配有主硬件 110 的部分硬件资源, 并且接管对于与外部装置相关 的输入 / 输出的控制。主虚拟机 130 用作虚拟计算机环境。主虚拟机 130 由主管理程序 120 管理。主程序管理 120 能够管理多个主虚拟机 130。 0070 同样, 在次机 200 中, 次管理程序 220 在作为物理计。
34、算机环境的次硬件 210 上运 行, 并且次虚拟机 230 由次管理程序 220 构成。在次虚拟机 230 中, 次客户 OS240 运行, 并 且在次客户 OS240 上执行应用程序 250。 0071 次硬件 210 配备有以下多种装置, 诸如 CPU211、 内存 212、 定时器 213、 网络接口卡 (NIC) 214、 和存储器之类的装置 215。 说 明 书 CN 103678024 A 8 6/18 页 9 0072 次虚拟机 230 分配有次硬件 210 的部分硬件资源, 并且在虚拟计算机环境中与主 虚拟机 130 同步地运行。次虚拟机 230 由次管理程序 220 管理。次。
35、管理程序 220 能够管理 多个次虚拟机 230。 0073 在容错系统 10 中, 仅由主虚拟机 130 来控制与外部装置相关的输入 / 输出, 主虚 拟机 130 在次虚拟机 230 之前运行。 0074 在本实施例中, 为主虚拟机 130 提供了虚拟中断生成单元 131 和同步信息生成单 元 135, 并且为次虚拟机 230 提供虚拟中断输入转换单元 231 和同步校正单元 235。 0075 主虚拟机 130 的虚拟中断生成单元 131 生成虚拟中断, 该虚拟中断是通过调节中 断频率和实际从主管理程序 120 输入外部中断输入的定时而得到的, 并且该虚拟中断生成 单元 131 将生成的。
36、虚拟中断输入至主客户 OS140。为虚拟中断生成单元 131 提供了用于调 节中断频率的中断频率调节单元 132 以及用于调节中断定时的中断定时调节单元 133。 0076 主虚拟机130的同步信息生成单元135基于执行挂起位置和分支执行数量来指定 被调节并输入至主客户 OS140 的虚拟中断的定时。同步信息生成单元 135 配备有用于计算 在输入虚拟中断以前主客户 OS140 中的程序分支数的分支执行数量生成单元 136。 0077 同步信息生成单元 135 在主虚拟机 130 和次虚拟机 230 的并行同步操作前, 从次 虚拟机230搜集操作性能信息。 当主硬件110和次硬件210之间的硬。
37、件配置不同时, 同步信 息生成单元 135 生成用于校正处理速度差的同步校正信息, 并且将同步校正信息发送至次 虚拟机 230 的同步校正单元 235。同步信息生成单元 135 按场合要求来调节主虚拟机 130 的操作。 0078 次虚拟机 230 的虚拟中断输入转换单元 231 根据从主虚拟机 130 发送的同步信 息的同步定时信息来使次客户 OS240 的处理前移至虚拟中断输入位置, 并且挂起次客户 OS240。然后, 虚拟中断输入转换单元 231 接收虚拟中断。为了使次客户 OS240 的处理前移 至虚拟中断输入位置, 并且挂起次客户 OS240, 为虚拟中断输入转换单元 231 提供了。
38、指定分 支数执行单元 232 和指定位置上下文切换单元 233。 0079 次虚拟机 230 的同步校正单元 235 在并行同步操作之前基于从主虚拟机 130 的同 步信息生成单元 135 发送的同步校正信息来调节次虚拟机的操作。同步校正单元 235 按场 合要求在并行同步操作中调节主虚拟机 130 和次虚拟机 230 之间的处理速度差。 0080 (并行同步操作的概要) 0081 随后, 将参照图 2 的流程图来描述在如上所述配置的容错系统中主虚拟机 130 和 次虚拟机 230 彼此之间使执行状态同步的并行同步操作的概要。具体地, 将描述当主管理 程序 120 从主硬件 110 接收到外部。
39、中断时的操作序列。 0082 一旦接收到来自主硬件 110 的外部中断 (S101) , 主管理程序 120 就将外部中断输 入至主虚拟机 130(S102) 。 0083 从主管理程序 120 接收到外部中断的主虚拟机 130 将虚拟中断输入至主客户 OS140。在该情形下, 主虚拟机 130 不针对所有输入的外部中断将虚拟中断输入至主客 户 OS140, 而中断频率调节单元 132 对输入至主客户 OS140 的虚拟中断的频率进行调节 (S103) 。 0084 在使用虚拟机的容错系统 10 中, 当把虚拟中断输入至主客户 OS104 时, 为了同步 彼此的执行状态, 还要进行在相同时刻将。
40、虚拟中断输入至次客户 OS240 的处理。由此, 当在 说 明 书 CN 103678024 A 9 7/18 页 10 主虚拟机 130 中频繁地出现虚拟中断时, 增加了用于对执行状态进行同步的处理负荷, 并 且减少了要分配给原服务的诸如 CPU 时间或通信带宽之类的资源。 0085 在根据本实施例的容错系统10中, 中断频率调节单元132调节虚拟中断的频率以 使得用于对执行状态进行同步的处理负荷最小, 并且防止用于原服务的处理能力减小。稍 后将描述由中断频率调节单元 132 所执行的中断频率调节操作的细节。 0086 作为由中断频率调节单元 132 调节虚拟中断的频率 (S103) 的结果。
41、, 若确定生成 了虚拟中断 (S104 中为是) , 则将虚拟中断输入至主客户 OS140。若确定没有生成虚拟中断 (S104 中为否) , 则该处理完成, 进程等待后续的来自主管理程序 120 的外部中断的输入。 0087 当虚拟中断被输入至主客户 OS140 时, 应在一个位置挂起主客户 OS140, 在同一位 置处将次客户 OS240 也挂起。 0088 例如, 当根据诸如外部中断之类的虚拟机上下文切换事件挂起主客户 OS140 以传 送对主虚拟机 130 的控制时, 主客户 OS140 的挂起位置可能在临界段中。该临界段是当多 个处理同时在单个资源上执行时用来毁损进程的程序段, 并且是。
42、由程序执行诸如暂停指令 无效之类的互斥控制所在的段。 0089 在该情况下, 当虚拟中断在位于临界段中的挂起位置处输入至主客户 OS140 时, 即使暂停指令被嵌入相同的位置中, 次客户 OS240 也不能在相同的位置处挂起, 而是在处 理该临界段之后将次客户 OS240 挂起。在这种情况下, 虚拟中断位置转移, 执行状态不同 步。 0090 在该情况下, 在根据本实施例的容错系统 10 中, 中断定时调节单元 133 调节虚拟 中断定时 (S105) , 并且在避开临界段的情况下挂起主客户 OS140, 由此能够在相同的位置 处挂起第二客户 OS240。稍后将描述中断定时调节单元 133 进。
43、行的虚拟中断定时调节操作 的细节。 0091 当调节了虚拟中断定时时, 主虚拟机 130 将虚拟中断输入至主客户 OS140 (S106) 。 然后, 同步信息生成单元 135 生成同步信息 (S107) 。 0092 同步信息包括关于虚拟中断的识别信息和同步定时信息。 同步定时信息包括由程 序计数器表示的执行挂起位置, 以及由性能计数器测量的 CPU 执行指令的数量。 0093 但是, 对于特定 CPU 特有的特殊指令, 存在这样的情况 : 可能发生性能计数器的计 数遗漏, 并且有可能未能准确地对在输入虚拟中断以前由主客户 OS140 执行的 CPU 执行指 令的数量进行计数。例如, 在英特。
44、尔公司制作的 Pentium(注册商标) 处理器中, 对于当 REP 指令的执行由于发生外部中断而被挂起时的 REP 指令的执行就没有被计入。由此, CPU 执 行指令计数可能变得小于执行指令的实际数量。 0094 这样, 因为对 CPU 执行指令数量的计数可能不准确, 所以根据本实施例的容错系 统 10 不将 CPU 执行指令的数量用于同步定时信息。 0095 但是, 因为程序通常包括大量的循环语句、 跳转语句、 和分支语句, 所以相同的指 令会执行多次。为此, 可能无法仅通过执行挂起位置来指定虚拟中断的输入定时。 0096 在该情况下, 根据本实施例的容错系统 10 使得同步定时信息包括执。
45、行挂起位置 和分支数。分支数代表从前一虚拟中断至当前虚拟中断所执行的分支指令的数量, 该数量 是执行顺序从依次执行发生改变的次数。 0097 通过提前在主客户 OS140 中计算分支数, 可以通过找出在执行了所计数量的分支 说 明 书 CN 103678024 A 10 8/18 页 11 之后被第一次执行的位置, 来将执行挂起位置正确地指定为次客户 OS240 中的虚拟中断输 入位置。 0098 例如, 如图 3A 所示, 假设当指令代码 CodeA、 CodeB、 CodeC、 . 被分配于指令地址 a1、 a2、 a3、 , 并且 CodeC 至 CodeG 循环三次时, 在主客户 OS。
46、140 中的第十六次程序执行顺 序的 “a6” 处输入虚拟中断。该同步定时可以由分支数的计数值 “2” 和执行挂起位置 “a6” 表示。 0099 在该情况下, 在次虚拟机 230 中, 对分支数计数两次, 在第一次执行挂起位置 “a6” 处挂起次客户 OS240, 由此能够在与主客户 OS140 相同的定时处输入虚拟中断。 0100 由此为了执行对分支数进行计数的处理, 为同步信息生成单元 135 提供了分支执 行数生成单元136。 在指令代码级别中, 所有的循环语句、 跳转语句、 和分支语句都被分支指 令替代。因此, 在运行应用程序 150 时, 分支执行数生成单元 136 对由主客户 O。
47、S140 执行的 分支指令的数量进行计数, 由此能够对分支数计数。 为了对分支数计数, 可以使用性能计数 器。 0101 返回至图 2 的描述, 主虚拟机 130 生成包括有关虚拟中断的识别信息和同步定时 信息在内的同步信息, 然后将同步信息传送至次虚拟机 230(S108) 。 0102 为了根据同步定时信息来挂起次客户 OS240 的执行, 在接收到同步信息的次虚拟 机 230 中, 指定分支数执行单元 232 首先对执行次客户 OS240 时的分支数进行计数。当分 支计数达到同步定时信息中的分支数所表示的值时, 次虚拟机 230 挂起次客户 OS240。也 就是, 次虚拟机 230 执行。
48、次客户 OS240 的次数达到指定分支数量 (S109) 。为此, 在分支计 数达到指定分支数量以前不需要监控执行挂起位置和 CPU 执行指令的数量, 减小了处理负 荷。稍后将描述指定分支数执行单元 232 所执行的指定分支数执行操作的细节。 0103 指定位置上下文切换单元 233 在同步定时信息的执行挂起位置所表示的位置处 挂起次客户 OS240 的执行 (S110) 。 0104 在对次客户 OS240 的执行进行挂起过程中, 若使用了如在传统系统技术中嵌入 暂停指令以配置断点的技术, 则当客户 OS(140,240)或应用程序 (150,250)在虚拟机 (130,230) 中调试时,。
49、 挂起干扰了调试的断点, 并且不利地影响到相互的处理。因为可能存 在用户想要对彼此同步的虚拟机 (130,230) 上的应用程序 (150,250) 操作进行检查的情 况, 所以希望避免对断点的干扰。 0105 同样, 在不具有虚拟化支持功能的 CPU 中, 处理不能通过设置断点而从次客户 OS240 转移至次虚拟机 230。 0106 在该情况下, 在根据本实施例的容错系统 10 中, 指定位置上下文切换单元 233 执 行上下文切换, 而不使用暂停指令来挂起次客户 OS240 的执行。稍后将描述指定位置上下 文切换单元 233 执行的指定位置上下文切换操作的细节。 0107 当次虚拟机 230 挂起次客户 OS240 时, 次虚拟机 230 根据同步信息的虚拟中断识 别信息来配置虚拟中断以重新启动次客户OS240。 因此, 在与主客户OS140相同的定时处。