拟机管理器,也可能运行客户端操作系统,所以每个处理器核心可以有两种操作模式。在本实施例中,可以称为虚拟机管理器(英文:Virtual Machine Manager,简称:VMM)模式和客户端模式。在VMM模式下,处理器核心运行虚拟机管理器。在客户端模式下,处理器核心运行客户端操作系统。
[0070]因为虚拟机管理器和客户端操作系统之间的“空间划分”的性质,即占用不同的处理器核心的性质,所以如图3中运行客户端操作系统I的处理器核心(Core6、Core7、Core9和CorelO)不会从客户端模式切换到VMM模式,避免导致运行在处理器核心(Core6、Core7、Core9和Core 10)上的客户端操作系统I挂起而载入虚拟机管理器运行接管。
[0071]在本申请实施例中,当客户端操作系统发生需要与虚拟机管理器的交互事件时,客户端操作系统向运行虚拟机管理器的处理器核心产生处理器核间中断(英文:Inter-Processor Interrupt,简称:IPI),中断信息包含退出通知(Exitnotificat1n)。然后等待虚拟机管理器的IPI,该IPI中的中断信息包含进入通知(Entry notificat1n)。当接收到虚拟机管理器发送的IPI之后,客户端操作系统挂起现有进程,恢复等待中断的进程。如果客户端操作系统未接收到虚拟机管理器发送的IPI,就进行进程调度,继续运行。
[0072]对应的,虚拟机管理器接收客户端操作系统发送的IPI事件;虚拟机管理器处理所述中断事件;虚拟机管理器在处理完所述中断事件之后,向客户端操作系统发送进入通知,以通知所述客户端操作系统继续运行。
[0073]请再参考图5a和图5b所示,服务器还包括与处理器核心数量一致的本地高级可编程中断控制器(Local APIC)。每个处理器核心配置一个Local_APIC。需要说明的是,对于加速器类型的处理器核心可以不配置Local_APIC。每个虚拟机管理器用于记录自身所管理的物理处理器核心区的每个Local_APIC的标识信息,并发送给运行在自身所管理的物理处理器核心区的客户端操作系统,以使所述客户端操作系统根据所述标识信息发送所述IPI事件。如此可以防止客户端操作系统将中断信息传递到其他虚拟机管理器所管理的物理处理器核心区内。
[0074]对于客户端操作系统来说,当一个处理器核心想对另一个处理器核心发送中断信息时,就在自己的Local_APIC里的中断命令寄存器(英文:Interrupt Command Register,简称:ICR)中存放其中断向量和目标处理器核心对应的Local_APIC的标识信息,触发中断,通知目标处理器核心进行中断处理。
[0075]因此,虚拟机管理器可以通过与运行自身的处理器核心对应的Local_APIC来接收客户端操作系统发送的IPI事件。
[0076]进一步,服务器还包括P个1/0高级可编程中断控制器(1/0 APIC),如图5a和图5b所示。其中,P为小于等于M的正整数。当P等于M时,每个虚拟机管理器所管理的物理处理器核心区可以对应一个1/0 APIC,如图5a中,第一部分可以对应一个1/0 APIC,例如1/0 APIC_0。第二部分可以对应一个1/0 APIC,例如I/0APIC_1。因此,每个虚拟机管理器还用于:为自身所管理的物理处理器核心区分配1/0 APIC,并配置1/0 APIC内的重定向表。通过所述重定向表,虚拟机管理器自身所管理的物理处理器核心能够通过1/0 APIC接收到外部的中断信息。其中,外部的中断信息例如是来自存储、网络等外部1/0硬件。
[0077]当P小于M时,表示可以多个物理处理器核心区可以被分配一个1/0 APIC。换言之,虚拟机管理器可以配置该一个I/O APIC的重定向表,使得一个1/0 APIC服务于多个物理处理器核心区。
[0078]在配置完成后,在服务器的运行过程中,物理处理器核心区的内部中断和外部中断均不会出现跨越物理处理器核心区的情况,实现中断处理的硬划分。客户端操作系统在运行时可以在自己的另一部分核心区内实现自己的“中断亲和力”和“中断负载均衡”等功能。而且不需要虚拟机管理器的干预。因此,降低了虚拟机管理器的内部实现复杂度。其中,“中断亲和力”是指相关中断只会发送到相关的处理器核心中处理。“中断负载均衡”是指大量的中断会被划分到不同的处理器核心区域中处理,不会出现某块处理器核心区域处理中断忙不过来,另一部分较闲的情况。
[0079]可选的,在本实施例中,独立的物理处理器之间是通过片上网络进行连接虚拟机管理器之间的通信消息可以以广播的形式在片上网络传播,使得每个虚拟机管理器内保存的信息完整且全局统一。由于服务器内部署的虚拟机管理器的数量的级别不会过大,且物理处理器核心区的划分和撤销、客户端操作系统的创建和销毁通常不会过于频繁,所以总的消息广播量是可控的。当然,在实际运用中,虚拟机管理器之间的通信消息还可以以其他形式传播,本申请不作具体限定。
[0080]可选的,每个虚拟机管理器还用于:向其他虚拟机管理器发送自身所管理的物理处理器核心的信息;接收其他虚拟机管理器发送的其他虚拟机管理器所管理的物理处理器核心的信息并保存所有虚拟机管理器所管理的物理处理器核心的信息。
[0081]可选的,M个虚拟机管理器中的任意一个虚拟机管理器还用于:向上层管理平台发送保存的所有虚拟机管理器所管理的物理处理器核心的信息,以使得上层管理平台根据所述信息将应用的部署请求发送给匹配的虚拟机管理器。其中,上层管理平台例如为Openstack0
[0082]上述过程通常在服务器初始化流程中实施,例如在运行每个虚拟机管理器之后,虚拟机管理器就开始执行上述动作。该信息例如是处理器核心的种类和/或数量。
[0083]在运行过程中,该信息例如是每个虚拟机管理器所管理的物理处理器核心区的资源利用率。
[0084]上层管理平台可以根据虚拟机管理器上报的信息,按照应用与物理处理器核心区的匹配程度,调用相应的虚拟机管理器为应用分配上述另一部分处理器核心区。因此,每个虚拟机管理器才会执行步骤201和步骤202。
[0085]基于同一发明构思,请参考图6所示,为本申请实施例提供的一种虚拟机管理器的结构框图。所述虚拟机管理器用于实现上述图4所示的资源管理方法。如图6所示,虚拟机管理器包括:分区及管理模块301,用于接收应用的部署请求,请求中包括应用的类型和/或需求;并根据类型和/或需求分配物理处理器核心区的另一部分核心区以运行应用所寄宿的客户端操作系统;其中,另一部分核心区和部分核心区不相同。
[0086]可选的,分区及管理模块301还用于:接收客户端操作系统发送的处理器核间中断IPI事件;处理IPI事件;并在处理完IPI事件之后,向客户端操作系统发送进入通知,以通知客户端操作系统继续运行。
[0087]可选的,服务器还包括与每个处理器核心数量一致的本地高级可编程中断控制器,分别配置给每个处理器核心,虚拟机管理器还包括:
[0088]中断定向分发模块302,用于获取虚拟机管理器所管理的物理处理器核心对应的本地高级可编程中断控制器的标识信息;并将标识信息发送给客户端操作系统,以使客户端操作系统根据标识信息发送IPI事件。
[0089]进一步,中断定向分发模块302还用于:为虚拟机管理器所管理的物理处理器核心区分配I/o高级可编程中断控制器;并配置I/O高级可编程中断控制器的重定向表;在接收到外部中断信息时,通过重定向表将外部中断信息分发到对应的本地高级可编程中断控制器中。
[0090]结合以上各实施例,虚拟机管理器还包括:
[0091]交互模块303,用于向其他虚拟机管理器发送虚拟机管理器所管理的物理处理器核心的信息;接收其他虚拟机管理器发送的其他虚拟机管理器所管理的物理处理器核心的信息并将M个虚拟机管理器所管理的物理处理器核心的信息发送给上层管理平台,以使得上层管理平台根据信息将应用的部署请求发送给匹配的虚拟机管理器。
[0092]前述图1-图5b实施例中的服务器及资源管理方法中的各种变化方式和具体实例同样适用于本实施例的虚拟机管理器,通过前述对服务器及资源管理方法的详细描述,本领域技术人员可以清楚的知道本实施例中服务器的实施方法,所以为了说明书的简洁,在此不再详述。
[0093]申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:
[0094]本申请实施例中,服务器包括N类物理处理器核心;控制器,用于根据所述N类物理处理器核心的种类部署M个虚拟机管理器,每个虚拟机管理器用于管理一个物理处理器核心区,每个所述物理处理器核心区属于所述N类物理处理器中核心的一类。因为每个虚拟机管理器只管理N类物理处理器核心的一类,所以管理的范围有限,如此可以降低每个虚拟机管理器的内部实现复杂度和性能损耗。而且本实施例中的方案,只需要简单的添加虚拟机管理器的数量来进行管理,就可以满足单台服务器的内部处理器核心的不断增多的情况,所以具有良好的扩展性。
[0095]本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[