异构计算环境中的过程迁移方法和系统的制作方法

文档序号:8926982阅读:354来源:国知局
异构计算环境中的过程迁移方法和系统的制作方法
【技术领域】
[0001]本发明一般地涉及过程迀移领域。更具体地,本发明涉及用于异构计算环境中的过程迀移、即从源硬件系统上的源操作系统到目标硬件系统上的目标操作系统的过程迀移的方法和系统,其中,所述源和目标操作系统不同,并且所述源和目标硬件不同。
【背景技术】
[0002]采用标准化的网络接口来互相连接使用不同硬件和不同操作系统的计算机是公知技术。尤其是云环境,其可能包括多种多样的服务器机器架构和操作系统(异构云环境)O
[0003]这种服务器机器需要进行定期维护或面临导致服务器停机的其他停电。为了避免这个问题,一些服务器机器提供到另一个服务器机器的虚拟服务器零停机迀移。然而,这些解决方案总是要求目标机器具有与源机器相同的架构。
[0004]在异构云环境中,在必须实现零停机迀移的时间点,可能没有与源服务器机器具有相同架构的服务器机器可用,而是有具有不同架构、不同架构级别或安装有不同硬件特性的服务器机器。
[0005]可以在目标机器上采用源机器的仿真器来迀移到不同的硬件/架构,然而,通常来说,代码仿真的整体性能较差。但是,在这样一种场景下,需要进行完整虚拟服务器的迀移,即,不可能将在源机器上运行的不同应用程序移动到不同的目标机器上。
[0006]因此,具有用于实现异构云场景中的应用程序的迀移的机制将是有利的,其中,被迀移的应用程序在目标机器上以本机模式或者接近本机模式运行,从而提供最大可能的灵活性。
[0007]在本发明上下文中的迀移可以涉及实时迀移(live migrat1n)或非实时迀移(non-live migrat1n)。实时迀移意味着在不中断的情况下迀移一个运行的过程。非实时迀移意味着在源系统上暂停运行的过程,在源系统上保存过程的状态,将过程状态从源系统传送到目标系统。在传送了过程状态之后,在源系统上终止该过程,并在目标系统上重启O

【发明内容】

[0008]本发明的实施例的一个目标是提供用于在异构计算环境中迀移过程的改进的计算机实现的方法、计算机可读介质和系统。该目标是采用独立权利要求的特征来实现的。在从属权利要求中给出了优选实施例。除非在这里明确指明,本发明的实施例可以彼此自由地合并。
[0009]在第一方面,本发明涉及一种用于将至少一个过程从带有源操作系统的源系统迀移到带有目标操作系统的目标系统的计算机实现的方法,其中,所述源和目标系统以及所述源或目标操作系统不同,其中,所述目标系统(S2)包括:
[0010]-目标虚拟化和迀移组件,其与所述源系统的源虚拟化和迀移组件兼容,适于接收由所述源虚拟化和迀移组件发送的迀移触发信息;
[0011]-仿真器,适于使用所述目标系统仿真所述源系统;
[0012]-编译器,适于将与在所述源系统上执行的过程相关联的源应用程序代码翻译成可在所述目标系统上执行的二进制目标应用程序代码;
[0013]-系统调用翻译器,用于将指向所述源操作系统的系统调用翻译成指向所述目标操作系统的系统调用;
[0014]-运行时库翻译器,用于将指向所述源操作系统的运行时库的调用翻译成指向所述目标操作系统的运行时库的调用;
[0015]其中,所述方法包括下列步骤:
[0016]-通过使用所述源和目标虚拟化和迀移组件开始所述至少一个过程的迀移;
[0017]-在所述目标系统中为要迀移的所述过程分配虚拟地址空间;
[0018]-将要迀移的所述过程的虚拟地址空间的存储器(memory)复制到所述目标系统的所述分配的虚拟地址空间;
[0019]-将关于与所述过程相关联的操作系统状态的信息复制到所述目标操作系统;
[0020]-借助所述仿真器在所述目标操作系统上执行要迀移的所述过程,其中,所述仿真器开始执行与所述过程相关联的代码并进行或启动下列步骤:
[0021]-借助所述系统调用翻译器在用于所述目标操作系统的系统调用中以及借助所述运行时库翻译器在用于所述目标操作系统的运行时库调用中,翻译与所述过程相关联的用于源操作系统的系统调用和运行时库调用;
[0022]-如果所述源应用程序代码还未被翻译,借助所述编译器将与要迀移的所述过程相关联的所述源应用程序代码翻译成可在所述目标系统上执行的二进制目标应用程序代码.’以及
[0023]-在所述目标系统上开始执行所述翻译的二进制目标应用程序代码。
[0024]因此,该方法使得能够在零停机情况下将过程从源系统迀移到目标系统,即,在两个不同的操作系统/硬件组合之间进行过程的实时迀移。这样,可以把要临时关机的服务器上的过程分发到不同的目标系统。从而,本发明提出了两阶段的迀移,即,首先,在目标系统上仿真源系统,以使得源系统上的被迀移的过程能够被立即执行。为了提高性能,
[0025]在第二阶段,将源应用程序代码翻译成目标应用程序代码,其可以在目标系统上本机执行。在翻译之后,可以停止仿真过程,以便节约计算资源。
[0026]根据本发明的优选实施例,翻译系统调用和运行时库调用以及翻译所述源应用程序代码的步骤是按需执行的。在目标系统内启动了要被翻译的过程的仿真之后,逐步地翻译源应用程序代码。例如,如果在仿真器内执行一段源代码,并且该段源代码之前未被翻译,则立即翻译该段源代码。类似地,如果出现过去未翻译的系统调用或运行时库调用,则在使用之后立即翻译这些系统调用。
[0027]根据本发明的优选实施例,编译器是实时编译器。通过采用实时编译、也称为动态编译,在运行时产生机器可读的二进制目标代码,即,在快要执行时才对代码进行编译。因而,对于实时编译器的输入可以是由实时编译器修改的中间代码或机器可读二进制代码。实时编译提高了过程迀移的性能。
[0028]根据本发明的优选实施例,要由编译器编译的源应用程序代码是二进制机器代码、二进制机器代码和中间代码的组合、或中间代码。中间代码是程序源代码在其已经被解析并且执行了词汇和语义分析之后的抽象的编译器内部表示。在使用二进制机器代码时,可以直接使用要被仿真器执行的代码来产生二进制目标代码,即,仿真器和编译器使用相同的二进制代码。相反地,使用中间代码使得编译器可以基于初始源代码的抽象表示对程序进行再编译和优化。这个方法很可能导致目标系统的二进制代码基本上就象从初始源代码直接产生的一样。
[0029]根据本发明的优选实施例,在不中断的情况下迀移该过程,其中,当开始在所述目标系统上执行所述翻译后的二进制目标应用程序代码时,停止该过程的仿真。通过将过程从源系统迀移到目标系统的仿真器并且随后在目标系统上以本机模式执行该过程,即,通过使用翻译后的二进制应用程序代码,可以在零停机的情况下将过程传递到目标系统,即,在执行要迀移的过程时,没有或至少没有显著的中断。
[0030]根据本发明的优选实施例,在启动仿真器之前,在目标操作系统的仿真器过程的上下文中相同地预先分配关于与要迀移的过程相关的源操作系统(OSl)的状态的信息。为了迀移过程,将限定源操作系统的状态的特定操作系统资源、例如过程标识符、页表设置、文件描述符、系统V IPC资源等传送到目标操作系统的上下文中至关重要。在相同地预先分配了资源之后,在仿真器中运行的过程可以立即并且直接地使用这些资源。
[0031]根据本发明的优选实施例,将关于源操作系统的状态的信息放在目标操作系统的上下文中的任何地方,将对这些信息的访问从源操作系统的上下文中的系统资源动态匹配到目标操作系统的上下文中的系统资源。
[0032]根据本发明的优选实施例,翻译系统调用和运行时库调用以及翻译所述源应用程序代码的步骤是采用至少两个系统调用翻译器、至少两个运行时库翻译器、至少两个仿真器和/或至少两个编译器的级联来进行的。从而,如果缺少用于特定操作系统/硬件组合的系统调用翻译器、运行时库翻译器、仿真器和/或编译器,则可以通过堆叠至少两个这样的翻译器、仿真器和编译器来实现迀移,并能够进行代码的转换、调用等等。
[0033]根据本发明的优选实施例,将至少两个不相关的过程从一个源系统迀移到至少两个目标系统,用于分离和/或分发计算负荷。从而,可以将准备要关机的源系统上的过程迀移到多个目标服务器上,从而使得特定目标服务器所必须要接管的工作负荷最小。
[0034]根据本发明的优选实施例,将翻译后的二进制目标应用程序代码高速缓存和/或持久地存储在目标系统的储存库中,从而可以重用,优选地,即使在目标系统关机之后也可以重用。还可以将翻译后的二进制目标应用程序代码发送到具有相同操作系统/硬件配置的另一个目标系统上来重用。
[0035]根据本发明的优选实施例,将翻译后的二进制目标应用程序代码持久地存储在中央储存库中,以供源和目标系统访问。仿真器和/或编译器可以在以后重用已经翻译的目标应用程序代码或部分翻译后的目标应用程序代码,而不用自己执行翻译。
[0036]根据本发明的优选实施例,将源应用程序代码翻译成二进制目标应用程序代码是由中央编译实体进行的。中央编译实体可以适于以高度并行并且非常快速的方式翻译代码。中央编译实体可以用来接管目标系统的所有编译任务。或者,中央编译实体可以用来预先翻译特定的经常使用的代码部分,并将翻译后的代码存储在储存库中。在可以迀移之前,目标系统可以从储存库预先加载这些预先翻译的代码部分。可以通过采用这些预先翻译的代码部分来构建最终的目标应用程序代码,从而显著地加速迀移。
[0037]根据本发明的优选实施例,通过采用检查实体,将迀移之前在源系统上运行的应用程序代码的执行的语义与迀
当前第1页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1