一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种虚拟机创建方法及相关设备与流程

2022-03-09 02:09:43 来源:中国专利 TAG:

一种虚拟机创建方法及相关设备
1.本技术要求于2020年9月8日提交中国知识产权局、申请号为202010935887.9、申请名称为“虚拟机创建方法及装置”的中国专利申请的优先权,其全部内容通过引用结合在本技术中。
技术领域
2.本技术实施例涉及虚拟机技术领域,尤其涉及一种虚拟机创建方法及相关设备。


背景技术:

3.虚拟机(virtual machine),是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。虚拟机可以部署于实体计算机(也可称之为宿主机)中,并且实体计算机能够完成的工作在虚拟机中通常也能够完成。在宿主机中创建虚拟机时,需要将宿主机的部分存储空间和内存容量作为虚拟机的存储空间和内存容量。而虚拟机的处理器,可以称之为虚拟处理器(virtual cpu,vcpu),可以通过宿主机中的相应物理处理器(physical cpu,pcpu)实现,即vcpu所执行的任务实际上是由pcpu或者pcpu中的非统一内存访问(non-uniform memory access,numa)节点执行。
4.实际应用中,不同虚拟机的vcpu所对应的处理器核在numa架构中的位置可能存在差异,如,实现部分虚拟机的vcpu的处理器核可能位于一个numa节点中,而实现另一部分虚拟机的vcpu的处理器核可以分布于多个不同的numa节点中。因此,在租户请求创建虚拟机时,如何实现租户自定义实现虚拟机所对应的处理器核的分布,是亟需解决的重要问题。


技术实现要素:

5.本技术实施例提供一种虚拟机创建方法、装置、计算设备及计算机可读存储介质,通过向租户提供跨numa选择接口并供用户对待创建虚拟机对应的处理器核分布进行选择,以实现租户自定义实现虚拟机所对应的处理器核的分布。
6.第一方面,本技术实施例提供一种虚拟机创建方法,该方法可以由虚拟机创建装置执行,具体的,虚拟机创建装置可以提供虚拟机创建接口,以便通过该虚拟机创建接口获取租户输入的待创建虚拟机的处理器规格,同时,还提供跨numa选择接口,以便通过该跨numa选择接口获取租户选择的将待创建虚拟机的处理器核设置在不同numa节点还是设置在一个numa节点。同时,虚拟机创建装置选择具有numa架构的计算节点,并在所选择的计算节点上创建待创建虚拟机。在跨numa选择接口指示租户选择将待创建虚拟机的处理器核设置在一个numa节点中的情况下,将计算节点的一个numa节点中的处理器核分配给待创建虚拟机,当然,该numa节点所提供的处理器核与租户输入的处理器规格相匹配,即numa节点提供的处理器核所实现的虚拟处理器核的数量与处理器规格所指示的虚拟处理器核的数量相等。而在跨numa选择接口指示租户选择将待创建虚拟机的处理器核设置在不同numa节点的情况下,虚拟机创建装置可以将计算节点的多个不同numa节点中的处理器核分配给待创建虚拟机,当然,该多个不同的numa节点所提供的总的处理器核与处理器规格相匹配。
7.由于虚拟机创建装置向租户提供了对于虚拟机的处理器核分布的跨numa选择接口,从而虚拟机创建装置可以根据租户对于虚拟机的处理器核是否跨numa节点的选择和设置,将虚拟机的处理器核分布在一个或者多个不同的numa节点。如此,实现了租户对于虚拟机所对应的处理器核的分布的自定义,提高了用户体验。
8.在第一方面的一种可能的实施方式中,在将计算节点的多个不同的numa节点中的处理器核分配给待创建虚拟机时,以将两个numa节点中的处理器核分配给待创建虚拟机为例,虚拟机创建装置具体可以是先确定计算节点的同一片内的第一numa节点以及第二numa节点,并将该第一numa节点中的第一部分处理器核与第二numa节点中的第二部分处理器核分配给待创建虚拟机,其中,该第一部分处理器核与第二部分处理器核的数量之和与处理器规格相匹配。
9.由于虚拟机创建装置为待创建虚拟机所确定出的第一numa节点与第二numa节点为位于同一cpu芯片,这使得第一numa节点中的处理器核在访问第二numa节点中的处理器核时,访问速度较快,时延较低,这相比于将处于不同片内的两个numa节点中的处理器核分配给待创建虚拟机而言,利用同片的两个numa节点中的处理器核创建得到的待创建虚拟机的性能相对更高。
10.在第一方面的一种可能的实施方式中,虚拟机创建装置在确定计算节点中位于同一cpu芯片内的第一numa节点以及第二numa节点时,可以是根据numa节点之间的节点距离进行确定。具体的,虚拟机创建装置可以计算出该计算节点中各个numa节点与其它numa节点之间的节点距离,并对各个numa节点与其它numa节点之间的节点距离进行排序,从而可以根据numa节点之间的节点距离排序结果确定位于哪些numa节点位于同一cpu芯片内,如此,虚拟机创建装置可以确定出位于同一cpu芯片内的第一numa节点以及第二numa节点,而该第一numa节点与第二numa节点之间的节点距离,不大于第一numa节点与其它numa节点之间的节点距离。
11.由于同一片内的numa节点之间的节点距离通常小于不同片内的numa节点之间的节点距离,因此,通过确定计算节点中不同numa节点之间的节点距离,可以准确确定出位于同一片内的numa节点。
12.在第一方面的一种可能的实施方式中,从第一numa节点中分配给待创建虚拟机的第一部分处理器核的数量,与从第二numa节点中分配给待创建虚拟机的第二部分处理器核的数量相等,如此,可以方便虚拟机创建装置对于numa节点中处理器核的分配和管理。
13.当然,在其它可能的实施方式中,第一部分处理器核的数量与第二部分处理器核的数量也可以是不同。
14.在第一方面的一种可能的实施方式中,处理器规格还能够用于指示待创建虚拟机的内存空间大小,则,虚拟机创建装置在确定跨numa选择接口指示租户选择将待创建虚拟机的处理器核设置在一个numa节点中的情况下,可以将计算节点的一个numa节点中的内存空间分配给待创建虚拟机,分配内存空间的numa节点与分配处理器核的numa节点为同一numa节点。其中,该numa节点中所提供的内存空间大小与处理器规格所指示的内存空间大小相等。
15.而在确定跨numa选择接口指示租户选择将待创建虚拟机的处理器核设置在一个numa节点中的情况下,虚拟机创建装置可以将计算节点的多个不同的numa节点中的内存空
间分配给待创建虚拟机,其中,分配内存空间的numa节点与分配处理器核的numa节点为相同的numa节点,并且,各个numa节点所提供的内存空间大小之和,与处理器规格所指示的内存空间大小相等。
16.如此,虚拟机创建装置不仅实现了处理器核的分配,还实现了内存空间的分配。
17.在第一方面的一种可能的实施方式中,在确定跨numa选择接口指示租户选择将待创建虚拟机的处理器核设置在一个numa节点中的情况下,不同numa节点中的各个numa节点分配给待创建虚拟机的内存空间的大小相等。如此,可以方便虚拟机创建装置对于numa节点中内存空间的分配和管理。
18.第二方面,本技术还提供了一种虚拟机创建方法,以使得所创建的虚拟机的性能较高。具体的,虚拟机创建装置可以接收虚拟机创建请求,并可以根据该虚拟机创建请求中包括的待创建虚拟机的处理器规格确定具有numa架构的计算节点,然后,虚拟机创建装置可以进一步根据该处理器规格,将计算节点中节点距离最小的numa节点中的处理器核分配给待创建虚拟机。
19.由于是基于节点距离最小的一个或者多个numa节点的处理器核来创建虚拟机,因此,基于该numa节点所创建出的虚拟机在内存访问速度等方面的性能能够达到较高水平。
20.特别的,当基于两个numa节点(如第一numa节点以及第二numa节点)中的处理器核的创建虚拟机时,第一numa节点与第二numa节点之间的节点距离,不大于第一numa节点与该计算节点中的其它numa节点之间的节点距离。
21.在第二方面的一种可能的实施方式中,虚拟机创建装置在确定分配给待创建虚拟机的numa节点时,还可以结合计算节点中各个numa节点所包含的空闲处理器核的数量。具体的,虚拟机创建装置可以是先获取该计算节点中多个numa节点的空闲处理器核的数量,并根据该处理器规格(也即该处理器规格所指示的处理器核的数量)以及多个numa节点中空闲处理器核的数量,从该多个numa节点中选择空闲处理器核的数量不小于第一预设阈值的第一numa节点以及第二numa节点,该第一预设阈值基于处理器规格进行确定,比如,当处理器规格指示的处理器核(虚拟处理器核)的数量为32,若第一numa节点与第二numa节点上每个处理器核(物理处理器核)上具有两个超线程,则第一预设阈值可以为8(即(32/2)/2)。当然,所选择的第一numa节点与第二numa节点之间的节点距离,不大于第一numa节点与计算节点中其它numa节点之间的节点距离。即,以第一numa节点为基准,第二numa节点为计算节点的多个numa节点中与该第一numa节点之间的节点距离最小的numa节点。
22.在确定用于创建虚拟机的numa节点时,通过根据numa节点中的空闲处理器核的数量来确定包含较多空闲处理器核的第一numa节点与第二numa节点,如此,可以避免虚拟机创建装置所确定出的第一unma节点与第二numa节点因为空闲处理器核的数量较小而导致创建虚拟机失败的情况,提高虚拟机创建成功的可能性。
23.在第二方面的一种可能的实施方式中,分配给待创建虚拟机的第一numa节点中的处理器核的数量,与分配给待创建虚拟机的第二numa节点中的处理器核的数量相等。如此,可以方便虚拟机创建装置对于numa节点中处理器核的分配和管理。
24.在第二方面的一种可能的实施方式中,处理器规格可以用于指示分配给所述待创建虚拟机的处理器核的数量。例如,处理器规格,可以包括socket值(即“路”数)、每“路”所包含的处理器核的数量、每个物理处理器核上的超线程数量,则虚拟机处理器核的数量等
于socket值、每“路”所包含的处理器核的数量、每个物理处理器核上的超线程数量三者之间的乘积。如此,虚拟机创建装置可以根据该处理器规格创建出满足该规格的虚拟机。
25.在第二方面的一种可能的实施方式中,虚拟机创建装置还可以在确定处理器规格所在还是得分配给待创建虚拟机的处理器核的数量不大于第二预设阈值时,确定可以在一个numa节点上创建虚拟机,具体可以是在计算节点中选择一个numa节点中的处理器核分配给待创建虚拟机。
26.在第二方面的一种可能的实施方式中,虚拟机创建装置还可以为待创建虚拟机分配内存空间。具体的,虚拟机创建装置还可以根据处理器规格,将第一numa节点中的第一内存空间与第二numa节点中的第二内存空间分配给待创建虚拟机,并且,第一内存空间的大小与第二内存空间的大小之和,可以与处理器规格所指示的内存空间大小相等。如此,虚拟机创建装置不仅实现了处理器核的分配,还实现了内存空间的分配。
27.在第二方面的一种可能的实施方式中,第一内存空间的大小与第二内存空间的大小相等。如此,可以方便待创建虚拟机对于第一numa节点以及第二numa节点中的内存空间的管理。
28.在第二方面的一种可能的实施方式中,虚拟机创建装置在获取处理器规格时,具体可以是向租户呈现规格输入界面,以使得租户在该规格输入界面中输入待创建虚拟机的处理器规格,从而虚拟机创建装置可以基于租户在该规格输入界面上的输入操作,生成相应的虚拟机创建请求,以触发执行后续的虚拟机创建过程。
29.由于向租户提供了规格输入界面,因此,租户可以在该规格输入界面上自定义所要创建的虚拟机的处理器规格,增加了租户对于处理器规格的可选性,提高了租户的使用体验。
30.在第二方面的一种可能的实施方式中,规格输入界面上可以包括待创建虚拟机的多个规格候选项,以便于租户在该规格输入界面上进行处理器规格的选择。
31.在第二方面的一种可能的实施方式中,虚拟机创建装置在确定用于创建虚拟机的numa节点时,具体可以是将待创建虚拟机与确定出的节点距离最小的numa节点中的处理器核进行绑定,如建立待创建虚拟机与上述第一numa节点中的处理器核、第二numa节点中的处理器核之间的对应关系等。
32.第三方面,本技术还提供了一种虚拟机创建装置,包括:获取模块,用于提供虚拟机创建接口,所述虚拟机创建接口用于获取租户输入的待创建虚拟机的处理器规格;设置模块,用于提供跨非统一内存访问numa选择接口,所述跨numa选择接口用于供所述租户选择将所述待创建虚拟机的处理器核设置在不同nuima节点或设置在一个numa节点;选择模块,用于选择具有numa架构的计算节点,并在所述计算节点上创建所述待创建虚拟机;分配模块,用于在所述跨numa选择接口指示所述租户选择将所述待创建虚拟机的处理器核设置在一个numa节点中的情况下,将所述计算节点的一个numa节点中的处理器核分配给所述待创建虚拟机,其中,所述计算节点的一个numa节点提供的处理器核与所述处理器规格匹配;所述分配模块,还用于在所述跨numa选择接口指示所述租户选择将所述待创建虚拟机的处理器核设置在不同numa节点中的情况下,将所述计算节点的不同numa节点中的处理器核分配给所述待创建虚拟机,其中,所述计算节点的不同numa节点提供的处理器核与所述处理器规格匹配。
33.第三方面或第三方面任意一种实现方式是第一方面或第一方面任意一种实现方式对应的方法实现,第一方面或第一方面任意一种实现方式中的描述适用于第三方面或第三方面任意一种实现方式任意一种实现方式,在此不再赘述。其中,第三方面所提供的虚拟机创建装置具有实现上述第一方面的各实施方式的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
34.第四方面,本技术还提供了一种虚拟机创建装置,包括:接收模块,用于接收虚拟机创建请求,所述虚拟创建请求包括待创建虚拟机的处理器规格;确定模块,用于根据所述处理器规格,确定具有非统一内存访问numa架构的计算节点;分配模块,用于根据所述处理器规格,将所述计算节点中第一numa节点以及第二numa节点中的处理器核分配给所述待创建虚拟机,所述计算节点还包括第三numa节点,所述第一numa节点与所述第二numa节点之间的节点距离,不大于所述第一numa节点与所述第三numa节点之间的节点距离。
35.第四方面或第四方面任意一种实现方式是第一方面或第一方面任意一种实现方式对应的方法实现,第一方面或第一方面任意一种实现方式中的描述适用于第四方面或第四方面任意一种实现方式任意一种实现方式,在此不再赘述。其中,第三方面所提供的虚拟机创建装置具有实现上述第一方面的各实施方式的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块。
36.第五方面,本技术还提供了一种计算设备,包括:处理器和存储器;该存储器用于存储指令,当该装置运行时,该处理器执行该存储器存储的该指令,以使该装置执行上述第一方面或第一方面的任一实现方法中虚拟机创建方法。需要说明的是,该存储器可以集成于处理器中,也可以是独立于处理器之外。装置还可以包括总线。其中,处理器通过总线连接存储器。其中,存储器可以包括可读存储器以及随机存取存储器。
37.第六方面,本技术还提供了一种计算设备,包括:处理器和存储器;该存储器用于存储指令,当该装置运行时,该处理器执行该存储器存储的该指令,以使该装置执行上述第二方面或第二方面的任一实现方法中虚拟机创建方法。需要说明的是,该存储器可以集成于处理器中,也可以是独立于处理器之外。装置还可以包括总线。其中,处理器通过总线连接存储器。其中,存储器可以包括可读存储器以及随机存取存储器。
38.第七方面,本技术还提供了一种计算机可读存储介质,所述可读存储介质中存储有程序或指令,当其在计算机上运行时,使得上述第一方面中任意的虚拟机创建方法被执行。
39.第八方面,本技术还提供了一种计算机可读存储介质,所述可读存储介质中存储有程序或指令,当其在计算机上运行时,使得上述第二方面中任意的虚拟机创建方法被执行。
40.第九方面,本技术实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面中任意的虚拟机创建方法。
41.第十方面,本技术实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面中任意的虚拟机创建方法。
42.另外,第三方面至第十方面中任一种实现方式方式所带来的技术效果可参见第一
方面或者第二方面中不同实现方式所带来的技术效果,此处不再赘述。
附图说明
43.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
44.图1为一种numa架构的示意图;
45.图2为一示例性调度系统示意图;
46.图3为本技术实施例中一种虚拟机创建方法的流程示意图;
47.图4为本技术实施例中又一种虚拟机创建方法的流程示意图;
48.图5为本技术实施例中一示例性规格输入界面示意图;
49.图6为本技术实施例中又一示例性规格输入界面示意图;
50.图7为4个numa节点之间的节点距离示意图;
51.图8为本技术实施例中一种虚拟机创建装置的结构示意图;
52.图9为本技术实施例中又一种虚拟机创建装置的结构示意图;
53.图10为本技术实施例中一种计算设备的硬件结构示意图;
54.图11为本技术实施例中又一种计算设备的硬件结构示意图。
具体实施方式
55.下面将结合附图,对本发明实施例中的技术方案进行描述。显然,所描述的实施例仅是本说明书一部分实施例,而不是全部的实施例。
56.在本说明书的描述中“一个实施例”或“一些实施例”等意味着在本说明书的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。
57.其中,在本说明书的描述中,除非另有说明,“/”表示或的意思,例如,a/b可以表示a或b;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,在本说明书实施例的描述中,“多个”是指两个或多于两个。
58.在本说明书的描述中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
59.租户在请求创建虚拟机时,可能期望对所创建的虚拟机自定义处理器核在numa架构中的分布,比如,用户可能基于费用的考虑,期望创建跨numa节点的虚拟机(即虚拟机对应的处理器核位于不同的numa节点),也可能会基于性能的考虑,期望在一个numa节点上创建虚拟机等。
60.基于此,本技术实施例提供了一种虚拟机创建方法,以实现租户自定义虚拟机的
处理器核分布,该方法可以是由虚拟机创建装置实现。具体实现时,虚拟机创建装置可以向租户提供虚拟机创建接口,该虚拟机创建接口用于获取租户输入的待创建虚拟机的处理器规格;同时,虚拟机创建装置还提供跨numa选择接口,该跨numa选择接口用于供租户选择将待创建虚拟机的处理器核设置在不同numa节点或者设置在一个numa节点。在租户完成对于处理器核的分布设置后,虚拟机创建装置可以选择具有numa架构的计算节点,并所选择的计算节点上创建待创建虚拟机。然后,当租户选择将待创建虚拟机的处理器核设置在一个numa节点时,虚拟机创建装置将计算节点的一个numa节点中的处理器核分配给该待创建虚拟机,其中,计算节点的一个numa节点提供的处理器核与处理器规格匹配;而当租户选择将待创建虚拟机的处理器核设置在多个不同的numa节点时,虚拟机创建装置可以从计算节点中选择多个不同的numa节点,并将该多个不同的numa节点中的处理器核分配给该待创建虚拟机,其中,计算节点的不同numa节点提供的处理器核与所述处理器规格匹配。
61.由于虚拟机创建装置向租户提供了对于虚拟机的处理器核分布的跨numa选择接口,从而虚拟机创建装置可以根据租户对于虚拟机的处理器核是否跨numa节点的选择和设置,将虚拟机的处理器核分布在一个或者多个不同的numa节点。如此,实现了租户对于虚拟机所对应的处理器核的分布的自定义,提高了用户体验。
62.实际应用的一部分场景中,在虚拟化和云计算平台,各个虚拟机的vcpu通常是由虚拟机管理器负责调度管理。在创建虚拟机时,虚拟机管理器会基于负载均衡策略将宿主机上的numa节点分配给创建的虚拟机,作为虚拟机的vcpu。但是,基于这种方式所创建出的虚拟机,其性能普遍较低。
63.参见图1,示出了一种numa架构的示意图。如图1所示,numa架构100包括4个numa节点,分别为numa节点0、numa节点1、numa节点2以及numa节点3。其中,numa节点0与numa节点1位于cpu0中,numa节点2与numa节点3位于cpu1中。
64.cpu0与cpu1之间可以通过互联总线进行通信,则,numa节点0可以通过该互联总线与numa节点2进行通信。
65.每个numa节点中可以包含32个核(core),如图1所示,numa节点0中包含核0、核1、
……
、核31等32个核,numa节点2中包含核64、核65、
……
、核95等32个核。同时,每个numa节点还可以配置有相应的内存,如numa节点0可以配置有内存0,其大小可以是4*32g等。
66.在图1所示的numa架构中,以numa节点0为基准,numa节点0可以称之为本地节点(local node),则与该numa节点0相邻的numa节点1以及numa节点2,可以称之为该numa节点0的邻居节点(neighbour node),而既不是本地节点也不是邻居节点的numa节点3,可以称之为远端节点(remote node)。
67.其中,本地节点访问不同numa节点对应的内存的速度,通常是存在差异的。具体的,本地节点在访问自身配置的内存0时,访问速度最快;在访问远端节点的内存3时,访问速度最慢;而访问邻居节点的内存1或者内存2时,访问速度比访问内存0的速度慢,但是比访问内存3的速度快。对于不同的邻居节点,本地节点访问与其位于同一cpu的邻居节点的内存的速度,比访问与其位于不同cpu的邻居节点的内存的速度更快。
68.作为一种示例,可以采用节点距离(node distance)来衡量numa节点之间的内存访问速度(或内存访问时延)。其中,节点距离的大小,可以体现numa节点访问内存的快慢程度,具体的:节点距离越大,表征访问内存的速度越慢;节点距离越小,表征访问内存的速度
越快。如图1所示,numa节点0访问自身配置的内存0的节点距离为10(内存访问速度最快),访问numa节点1对应的内存1的节点距离为16,访问numa节点2对应的内存2的节点距离为32,访问numa节点3对应的内存3的节点距离为33(内存访问速度最慢)。
69.在传统的创建虚拟机的实施方式中,虚拟机管理器通常是采用负载均衡这种调度策略,确定待创建的每个虚拟机所对应的numa节点,即虚拟机管理器可以将负载较小的一个或者多个numa节点作为该虚拟机的vcpu。但是,这种调度策略并不适用于numa架构下的虚拟机创建,会造成所创建出的虚拟机的性能较低的问题。比如,当以利用率来衡量numa节点负载时,假设numa节点0至numa节点3的负载依次为:10%、20%、35%、5%,则虚拟机管理器会根据负载均衡策略,将负载较小的numa节点0以及numa节点3作为所创建的虚拟机的vcpu。但是,numa节点0与numa节点3之间的节点距离为33,即numa节点0与numa节点3互相访问对方内存时的访问速度较慢,这使得所创建的虚拟机在访问内存的速度方面,性能较差;而且,numa节点0与numa节点3之间通常需要通过cpu0与cpu1之间的互联总线实现互相访问,因此,访问对方内存所产生的通信开销较大,并且需要与其它numa节点竞争cpu0与cpu1之间的互联总线。因此,基于负载均衡策略所创建出的虚拟机的性能并不高。
70.基于此,本技术实施例提供了一种虚拟机创建方法,以使得所创建出的虚拟机的性能保持在较高水平。具体实现时,可以根据所要创建的虚拟机的处理器规格,从预先确定的具有numa架构的计算节点中选择节点距离较小的第一numa节点以及第二numa节点,该第一numa节点与第二numa节点之间的节点距离,不大于第一numa节点与计算节点中其余numa节点之间的节点距离,如此,可以使得所创建出的虚拟机在内存访问速度等方面的性能能够达到较高水平。
71.仍以上述从numa节点0至numa节点3中选择作为虚拟机vcpu的numa节点为例进行示例性说明。在为待创建的虚拟机确定作为vcpu的numa节点时,由于numa节点0与numa节点1之间的节点距离为16,小于numa节点0与numa节点2之间的节点距离32,也小于numa节点0与numa节点3之间的节点距离33,因此,可以将numa节点0以及numa节点1作为待创建的虚拟机的vcpu。这相比于选择numa节点0和numa节点2作为vcpu,或者相比于选择numa节点0和numa节点3作为vcpu而言,内存访问速度更快,从而所创建的虚拟机在内存访问速度上能够更快。并且,所选择的两个nuam节点位于同一cpu内,因此,这两个numa节点无需通过cpu之间的互联总线访问对方内存,从而可以减小访问内存所需的通信开销。这样,基于numa节点0与numa节点1所创建出的虚拟机的性能能够达到较高水平。
72.此外,上述创建虚拟机的过程可以实现自动化,无需用户手动配置计算节点中的哪些numa节点作为vcpu,这不仅可以提高创建虚拟机的效率,而且,即使发生pcpu的热插拔、计算节点中的numa节点的拓扑结构发生其它改变,或者需要进行虚拟机迁移(包括热迁移和实现虚拟机高可用性(highly available,ha)),可以通过再次执行上述自动化过程,重新为该虚拟机确定作为vcpu的numa节点,降低了对于numa节点的硬件拓扑结构的依赖。另外,也无需要求创建的虚拟机所使用的vcpu的数量是实际的pcpu数目的倍数关系。
73.当然,上述示例中是以采用两个numa节点作为vcpu为例进行示例性说明,若根据待创建虚拟机的vcpu的规格确定采用三个numa节点作为待创建的虚拟机的vcpu时,可以选择节点距离较小的numa节点0、numa节点1以及numa节点2作为vcpu,以使得所创建出的虚拟机的性能较高。
74.示例性的,执行上述虚拟机创建方法的虚拟机创建装置,可以是服务器(如实现云平台的服务器等),或者是应用于服务器的器件或功能模块;或者,该虚拟机创建装置也可以是终端等设备。同时,虚拟机创建装置,可以是由软件实现,也可以是由硬件实现。
75.其中,当虚拟机创建装置由软件实现时,该虚拟机创建装置可以位于图2所示的调度系统,该调度系统可以包括vcpu调度策略以及内存分配策略,而调度系统中的虚拟机创建装置,可以根据vcpu调度策略,从底层硬件中调度相应的numa节点作为待创建虚拟机的vcpu,同时,可以根据内存分配策略为待创建虚拟机分配相应的内存空间。而虚拟机的vcpu的规格,可以由虚拟机创建装置通过上层应用获得,并根据来自上层应用的人机交互界面或者接口的创建指示开始创建该规格的虚拟机等。
76.当虚拟机创建装置由硬件实现时,该虚拟机创建装置具体可以是专用集成电路(application-specific integrated circuit,asic),或可编程逻辑器件(programmable logic device,pld),上述pld可以是复杂程序逻辑器件(complex programmable logical device,cpld),现场可编程门阵列(field-programmable gate array,fpga),通用阵列逻辑(generic array logic,gal)或其任意组合实现上述虚拟机创建装置的功能。实际应用中,该虚拟机创建装置可以应用于包含多个numa节点的设备中,如服务器、终端或者其它可能的网络设备等。
77.下面将结合附图对本技术实施例中的各种非限定性实施方式进行示例性说明。显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本技术保护的范围。
78.参阅图3,示出了本技术实施例中一种虚拟机创建方法的流程示意图。为便于描述,以下以该方法应用于虚拟机创建装置为例进行示例性说明。该方法具体可以包括:
79.s301:虚拟机创建装置提供虚拟机创建接口,该虚拟机创建接口用于获取租户输入的待创建虚拟机的处理器规格。
80.其中,待创建虚拟机的处理器规格,例如可以是待创建虚拟机所包含的虚拟处理器核(core)的数量,该待创建虚拟机的虚拟处理器核,可以是由计算节点中物理处理器核实现。实际应用中,一个物理处理器核,可以支持一个虚拟处理器核的业务执行,即待创建虚拟机中的虚拟处理器核所执行的业务,实际上是由该物理处理器核执行;或者,一个物理处理器核,也可以是支持两个以上(包括两个)虚拟处理器核的业务执行,如该物理处理器核可以采用分时工作的方式模拟实现两个以上的虚拟处理器核。
81.本实施例中,租户在请求创建虚拟机时,可以预先定义所要创建的虚拟机具有何种规格,如租户可以请求创建32核的vcpu,或者创建20核的vcpu等。具体实现时,虚拟机创建装置可以向租户提供虚拟机创建接口,而租户可以通过该虚拟机创建接口请求创建虚拟机,并向虚拟机创建装置输入待创建虚拟机的处理器规格。如此,虚拟机创建装置可以获取到租户输入的处理器规格。
82.s302:虚拟机创建装置提供跨numa选择接口,该跨numa选择接口用于供租户选择将待创建虚拟机的处理器核设置在不同numa节点或者设置在一个numa节点。
83.为便于租户能够自定义待创建虚拟机的处理器核在numa架构中的分布,虚拟机创建装置可以向租户提供跨numa选择接口。这样,租户可以通过该跨numa选择接口设置待创
建虚拟机的处理器核分布在一个numa节点,还可以多个不同的numa节点,并可以进一步设置处理器核所分布的numa节点的数量。
84.s303:虚拟机创建装置选择具有numa架构的计算节点,并在该计算节点上创建待创建虚拟机。
85.示例性的,计算节点,可以是具有numa架构的服务器,也可以是具有numa架构的终端等设备,本实施例对于计算节点的具体实现方式并不进行限定。
86.实际应用中,虚拟机创建装置可以将多个计算节点纳入管理,比如,虚拟机创建装置可以记录有数据中心的多个服务器的硬件架构信息,并且,该多个服务器中的部分服务器可能具有numa架构,而另一部分服务器可能具有smp架构。因此,虚拟机创建装置可以在确定创建虚拟机后,从管理的多个计算节点中选择具有numa架构的计算节点,并在所选择的计算节点上创建虚拟机。
87.在一种可能的实施方式中,虚拟机创建装置还可以结合计算节点的硬件架构信息以及各个计算节点的负载或者所包含的空闲处理器核的数量,进行计算节点的选择。具体的,虚拟机创建装置可以先根据各个计算节点的硬件架构信息,确定出具有numa架构的计算节点,然后,可以进一步根据各个计算节点的负载或者所包含的空闲处理器核的数量,从确定出的具有numa架构的计算节点中选择出能够满足待创建虚拟机的处理器规格的计算节点。如此,可以降低因为所选择的计算节点的负载过高或者其所包含的空闲处理器核的数量过少,而导致虚拟机创建装置在该计算节点上创建虚拟机失败的可能性。
88.当然,实际应用中,也可以是采用其它方式确定具有numa架构的计算节点,本实施例对此并不进行限定。
89.s304:在跨numa选择接口指示租户选择将待创建虚拟机的处理器核设置在一个numa节点中的情况下,虚拟机创建装置将计算节点的一个numa节点中的处理器核分配给待创建虚拟机,其中,该计算节点的一个numa节点提供的处理器核与该处理器规格匹配。
90.通常情况下,计算节点中可以包含多个numa节点,如图1或图2所示计算节点可以包括4个(或者其它数量)numa节点,并且,每个numa节点中的处理器核,可以包括多个处理器核。实际应用中,不同numa节点中所包含的空闲处理器核的数量可能存在差异,比如,图1中numa节点0包括的36个处理器核中,可能包括12个空闲的处理器核,而剩余的24个处理器核可能用于实现其它已创建的虚拟机的vcpu,或者用于执行其它业务;numa节点1包括的36个处理器核中,可能包括30个空闲的处理器核,剩余的6个处理器核被占用等。
91.因此,在确定租户选择将待创建虚拟机的处理器核分布在一个numa节点中时,虚拟机创建装置可以基于计算节点中各个numa节点中的空闲处理器核的数量以及待创建虚拟机所要求创建的处理器核的数量,来选择基于哪个numa节点创建虚拟机,并将该numa节点中的处理器核分配给该待创建虚拟机。比如,当待创建虚拟机的处理器规格为24核时,则虚拟机创建装置可以选择将numa1节点中的处理器核分配给待创建虚拟机。
92.s305:在跨numa选择接口指示租户选择将待创建虚拟机的处理器核设置在不同numa节点中的情况下,虚拟机创建装置将计算节点的不同numa节点中的处理器核分配给待创建虚拟机,其中,该计算节点的不同numa节点提供的处理器核与该处理器规格匹配。
93.当租户选择将待创建虚拟机的处理器核分布在多个不同的numa节点时,虚拟机创建装置可以确定租户所设定的处理器核分布的numa节点的数量,并从计算节点包括的多个
numa节点中选择该数量的numa节点,并进一步从该numa节点中选择相应数量的处理器核并将其分配给待创建虚拟机。
94.在一种示例性的实施方式中,由于不同numa节点之间的节点距离存在差异,而位于同一cpu芯片上的numa节点之间的节点距离通常小于不同cpu芯片上的两个numa节点之间的节点距离,因此,当处理器核分布的numa节点的数量为多个时,虚拟机创建装置可以根据计算节点中各个numa节点之间的节点距离进行选择。
95.具体的,以处理器核分布的numa节点的数量为2为例,虚拟机创建装置可以通过计算或者查询等方式,确定计算节点中的每个numa节点与其它numa节点之间的节点距离,并对每个numa节点与其他numa节点之间的节点距离按照从小到大的顺序排序,从而可以根据nuam节点之间的节点距离,确定出位于同一cpu芯片上的numa节点,从而虚拟机创建装置可以从位于同一cpu芯片上的两个numa节点作为用于创建该待创建虚拟机numa节点。为便于描述,所选择的位于同一片的两个numa节点分别称之为第一numa节点以及第二numa节点。
96.然后,虚拟机创建装置,可以将第一numa节点中的第一部分处理器核与第二numa节点中的第二部分处理器核分配给待创建虚拟机,而所分配的第一部分处理器核和第二部分处理器核的数量之和与处理器规格相匹配,具体可以是第一部分处理器核与第二部分处理器核所实现的虚拟处理器核的数量与处理器规格所指示的虚拟处理器核的数量相等。其中,通过物理处理器核所实现的虚拟机处理器核的数量,可以是基于下述公式(1)进行计算得到:
97.vcpu的核数量=n*p*s
ꢀꢀꢀ
(1)
98.其中,n为每个处理器核上的超线程数量,p为每“路”(socket)所具有的处理器核的数量,s为“路”数(即主板上的cpu插槽的数量)。
99.在一些示例中,为便于资源管理和分配,虚拟机创建装置从第一numa节点以及第二numa节点中分配的处理器核的数量可以相等,即第一部分处理器核的数量与第二部分处理器核的数量相等。
100.实际应用中,虚拟机创建装置不仅可以将numa节点中的处理器核分配给待创建虚拟机,还可以将numa节点中的内存空间也分配给待创建虚拟机,作为该待创建虚拟机的内存空间。
101.具体实现时,虚拟机创建装置在确定租户将待创建虚拟机的处理器核分布在一个numa节点时,可以将分配处理器核的numa节点中的内存空间分配给待创建虚拟机,所分配的内存空间大小即为处理器规格所指示的内存空间大小,当然,在其它可能的实施方式中,虚拟机创建装置所分配的内存空间大小也可以是固定值,本实施例对此并不进行限定。
102.而在确定租户将待创建虚拟机的处理器核分布在多个不同的numa节点时,虚拟机创建装置可以将多个不同的numa节点中的内存空间分配给待创建虚拟机,该多个不同的numa节点也是分配处理器核给该待创建虚拟机的numa节点。相应的,该多个不同的numa节点为待创建虚拟机所提供的内存空间大小之和,与处理器规格所指示的内存空间大小相等。在进一步可能的实施方式中,各个numa节点分配给待创建虚拟机的内存空间的大小相等。比如,当基于第一numa节点以及第二numa节点为待创建虚拟机分配32gb的内存空间时,可以将第一numa节点中的16gb大小的内存空间分配给待创建虚拟机,同时,将第二numa节点中的16gb大小的内存空间也分配给待创建虚拟机,如此,即可待创建虚拟机的内存空间
为32gb(即16gb 16gb)。
103.参阅图4,示出了本技术实施例中又一种虚拟机创建方法的流程示意图。为便于描述,以下以该方法应用于虚拟机创建装置为例进行示例性说明。该方法具体可以包括:
104.s401:虚拟机创建装置接收虚拟机创建请求,该虚拟机创建请求包括待创建虚拟机的处理器规格。
105.实际应用中,创建不同的虚拟机可能具有不同规格的vcpu,如可以是具有32核的vcpu、24核的vcpu、16核的vcpu等,相应的,用于实现不同规格的虚拟机所采用的numa节点或者numa节点中处理器核的数量也会存在差异。
106.因此,虚拟机创建装置在创建虚拟机时,可以先确定所要创建的虚拟机采用何种处理器规格,以便基于该处理器规格为租户创建相应的虚拟机。
107.在一些可能的实施方式中,虚拟机的处理器规格,可以是由租户在人机交互界面上进行确定。具体的,虚拟机创建装置可以向租户呈现规格输入界面,并由租户在该规格输入界面上输入虚拟机的处理器规格。这样,虚拟机创建装置可以根据租户在规格输入界面上的输入操作,确定需要创建何种规格的虚拟机。本实施例中,虚拟机的处理器规格,例如可以是待创建虚拟机所包括的虚拟处理器核的数量。
108.示例性的,虚拟机创建装置所呈现的规格输入界面可以如图5所示,在该规格输入界面上可以提供vcpu中核(即vcpu中的虚拟处理器核)数量的输入窗口,相应的,租户可以在该输入窗口中输入待创建虚拟机的vcpu中核的数量。这样,虚拟机创建装置可以根据该输入窗口所接收到的输入结果,确定待创建虚拟机的处理器规格。
109.在其它示例中,虚拟机创建装置所呈现的规格输入界面中,还可以提供待创建虚拟机的多个规格候选项。如图6所示,vcpu中的核数量的输入窗口在初始状态下可以呈现数值24,表征默认创建24核的vcpu。用户在点击vcpu的核数量对应的下拉菜单按钮后,在规格输入界面上可以呈现4、8、16、24等多个数值,每个数值均为vcpu中核数量的一种候选项。这样,用户可以按照实际应用的需求,从呈现的多个规格候选项(即图6中的多个数值)中选择其中一个候选项作为待创建虚拟机的vcpu的核数量,以此完成待创建虚拟机的处理器规格的输入。
110.在进一步可能的实施方式中,规格输入界面还可以向用户呈现其它信息。如图5以及图6所示,在规格输入界面中还可以呈现核心计数、每核心线程数、vcpu所包括的核的数量、socket值、虚拟机的内存空间以及该虚拟机被创建后的收费价格等信息。其中,核心计数,是指用于实现虚拟机的vcpu的处理器核的数量。socket值,是指主板上cpu的插槽数量,也即为通常所称的cpu的“路”的数量,核心计数可以通过socket值与每“路”所具有的处理器核数量的乘积进行计算得到。而用户在请求创建虚拟机时,可以在该规格输入界面中输入该虚拟机的核心计数、每核心超线程数、vcpu所包括的核的数量(该数值可以是由虚拟机创建装置根据用户输入核心计数以及每核心超线程数进行自动计算并呈现在规格输入界面)、socket值、虚拟机的内存空间,同时,规格输入界面可以根据用户的输入,自动计算并呈现创建该虚拟机所需的收费价格,如每小时的收费金额等。
111.实际应用中,规格输入界面的具体表现形式不局限于图5以及图6示例,在其它可能的实施方式中,规格输入界面中呈现的元素可以在图5以及图6的基础上,相应的增加或减少,如增加虚拟机的运行功率等其它属性信息等,本实施例对此并不进行限定。
112.上述实施方式中,虚拟机创建装置可以是根据用户输入的虚拟机规格,实时创建出符合用户预期的虚拟机。而在其它可能的实施方式中,待创建虚拟机也可以预先创建一个或者多个不同规格的虚拟机。其中,待创建虚拟机的处理器规格,也可以是通过预先设定的规格模板(flavor)进行定义,不同虚拟机的规格可以通过相应的规格模板完成定义,如图2所示,上层应用中可以包括预先定义的规格模板1以及规格模板2,其中,规格模板1以及规格模板2中可以定义作为vcpu的numa节点数量(即图2中的“hw:numa_nodes”)、socket值(即图2中的“cpu_sockets”)、每“路”所具有的处理器核数量(即图2中的“cpu_cores”)、每个处理器核上所具有的超线程数量(即图2中的“cpu_threads”)。这样,用户可以根据需求,选择相应规格的虚拟机进行使用即可。则,虚拟机创建装置,可以根据规格模板中所定义的虚拟机的处理器规格,创建出该规格的虚拟机。
113.s402:虚拟机创建装置根据处理器规格,确定具有numa架构的计算节点。
114.本实施例中,虚拟机创建装置所管理的计算节点可能包括多个,比如,虚拟机创建装置可以记录有数据中心的多个服务器的硬件架构信息,并且,该多个服务器中的部分服务器可能具有numa架构,而另一部分服务器可能具有smp架构。因此,虚拟机创建装置可以在确定创建虚拟机后,从管理的多个计算节点中选择具有numa架构的计算节点,并在所选择的计算节点上创建虚拟机。
115.在一些可能的实施方式中,虚拟机创建装置可以是基于负载均衡策略选择具有numa架构的计算节点,即在创建虚拟机时,虚拟机创建装置可以选择当前负载较小的、具有numa架构的计算节点,并在该计算节点上创建虚拟机。当然,实际应用中,虚拟机创建装置也可以是基于其它策略选择计算节点,本实施例对此并不进行限定。
116.s403:虚拟机创建装置根据确定的处理器规格,将计算节点中节点距离最小的numa节点中的处理器核分配给待创建虚拟机。
117.其中,节点距离最小的numa节点,是指以计算节点中的一个numa节点(以下称之为第一numa节点)为基准,确定与该numa节点之间的节点距离最小的numa节点。当虚拟机创建装置确定基于一个numa节点来创建虚拟机时,与第一numa节点之间的节点距离最小的numa节点即为该第一numa节点本身。而当虚拟机创建装置确定基于多个nunma节点来创建虚拟机时,以基于两个numa节点来创建虚拟机为例,节点距离最小的numa节点包括该第一numa节点以及第二numa节点,其中,第二numa是计算节点中除第一numa节点以外与第一numa节点之间的节点距离最小的numa节点,也即第一numa节点与第二numa节点之间的节点距离,不大于第一numa节点与计算节点中其它numa节点之间的节点距离。
118.实际应用中,每个numa节点自身的节点距离通常小于该numa节点与其他numa节点之间的节点距离,因此,当基于一个nuna节点来创建虚拟机时,虚拟机创建装置可以基于负载均衡策略或者随机选择等方式选择任意一个numa节点来创建虚拟机。
119.本实施例中,将重点描述如何从计算节点中选择多个numa节点作为创建虚拟机的numa节点,以使得虚拟机的性能达到较高水平。为便于描述,以下以选择第一numa节点以及第二numa节点为例进行示例性说明。
120.在一种可能的实施方式中,虚拟机创建装置,可以通过调用相应的接口,获取计算节点中各个numa节点之间的节点距离,然后,根据所确定的vcpu的规格以及各个numa节点之间的节点距离,从计算节点中选择出节点距离较小的第一numa节点以及第二numa节点作
为待创建虚拟机的vcpu。
121.其中,计算节点中未被虚拟机创建装置所选择的numa节点,可以称之为第三numa节点,则,第一numa节点与第二numa节点之间的节点距离,不大于第一numa节点与第三numa节点之间的节点距离。
122.以计算节点包括图1所示的4个numa节点为例,虚拟机创建装置可以获取这4个numa节点之间的节点距离,如图7上侧所示。其中,“u'0'”表征numa节点0、“u'1'”表征numa节点1、“u'2'”表征numa节点2、u'3'”表征numa节点3。然后,虚拟机创建装置可以按照节点距离的大小,对每个numa节点与其它numa节点之间的节点距离进行排序,如图7下侧所示。假设虚拟机创建装置将第一numa节点可以是图1中的numa节点0,如根据vcpu的规格确定需要基于2个numa节点中的处理器核实现vcpu,则根据图7下侧所示的排序后的节点距离,可以确定第二numa节点为numa节点1,相应的,第三numa节点可以是以及numa节点2以及numa节点3。特别的,虚拟机创建装置还可以根据numa节点0与numa节点1之间的节点距离,确定该numa节点0与numa节点1位于同一cpu中,从而作为虚拟机vcpu的这两个numa节点在访问内存时,无需通过cpu之间的互联总线进行跨cpu访问,在提高内容访问速度的同时也能降低内存访问开销,缓解了对于互联总线的竞争。而若根据vcpu的规格确定需要基于3个numa节点中的处理器核实现vcpu,则根据图7下侧所示的排序后的节点距离,节点距离最小的numa节点可以包括numa节点0、numa节点1以及numa节点2。
123.在一些场景中,比如,在创建第一个虚拟机等场景,虚拟机创建装置可以根据numa节点之间的节点距离以及一个cpu所包含的numa节点的数量,确定哪些numa节点位于同一cpu中。则虚拟机创建装置在对各个numa节点之间的节点距离进行排序后,能够优先从与第一numa节点位于同一cpu中其余numa节点中选取第二numa节点。比如,假设一个cpu中包括n(n为大于2的正整数)个numa节点,则虚拟机创建装置可以确定与第一numa节点之间的节点距离较小的前(n-1)个numa节点与该第一numa节点位于同一cpu中,从而虚拟机创建装置可以从这些numa节点中确定出第二numa节点。
124.实际应用中,虚拟机创建装置可以选择计算节点中的任意一个numa节点作为第一numa节点,并通过调用相应的接口,获取第一numa节点与其余各个numa节点之间的节点距离。然后,虚拟机创建装置可以确定出与第一numa节点之间的节点距离最小的n个numa节点作为第二numa节点(n为正整数,并且n的数值可以根据vcpu的规格进行确定)。其中,虚拟机创建装置通过接口获取节点距离,存在众多已有的技术实现,本实施例对此不再进行赘述。
125.作为一种示例,虚拟机创建装置还可以向用户呈现计算节点中多个numa节点之间的节点距离,比如,假设计算节点包括图1中所示的4个numa节点,则呈现的这4个numa节点之间的节点距离可以如图7所示。另外,虚拟机创建装置还可以向用户呈现其它信息,如图7所示的各个numa节点所包括的处理器核、各个numa节点所具有的内存空间以及可用内存空间(其中“size”表征numa节点所具有的内存空间,“free”表征numa节点所具有的可用内存空间)等。这样,用户可以基于虚拟机创建装置呈现的节点距离、处理器核数量以及内存空间等信息,申请创建该计算节点所能满足的虚拟机。
126.本实施例中,虚拟机创建装置所确定出的第一numa节点以及第二numa节点,用于实现待创建虚拟机的vcpu,具体实现时,虚拟机可以将待创建虚拟机的vcpu与第一numa节点、第二numa节点进行绑定,具体是将vcpu与第一numa节点中的特定处理器核、第二numa节
点中的特定处理器核进行绑定,如建立vcpu与该特定处理器核之间的对应关系等,从而vcpu所执行的工作,可以是由第一numa节点与第二numa节点中的特定处理器核进行实现。
127.其中,numa节点的数量,可以根据vcpu的规格进行确定。比如,当vcpu的规格指示vcpu包括32个核时,虚拟机创建装置可以根据预先设定的调度策略,选择2个numa节点作为待创建虚拟机的vcpu,此时,由于第一numa节点的数量为1,则虚拟机创建装置所确定的第二numa节点的数量为1;而若虚拟机创建装置选择4个numa节点作为待创建虚拟机的vcpu,则虚拟机创建装置所确定的第三numa节点的数量为3。
128.本实施例中,第一numa节点与第二numa节点所提供的处理器核总数与每个处理器核上的超线程数的乘积,可以等于vcpu所包括的核的数量。以虚拟机创建装置确定两个numa节点为例,这两个numa节点所提供的处理器核的数量为32,此时,每个处理器核上的超线程数量为1;而在其它实施方式中,两个numa节点所能提供的处理器核的数量也可以为16,此时,每个处理器核上的超线程数量可以为2,即每个处理器核通过差分调度的方式作为虚拟机的两个核,而对于待创建的虚拟机来说,其感知到是在不同时间段内工作的两个核。其中,每个处理器核上的超线程数量,可以是由用户进行选择设定,如用户可以通过图5或者图6所示的规格输入界面输入每个处理器核上的超线程数量等;或者,每个处理器核上的超线程数量也可以是固定值。
129.进一步的,虚拟机创建装置所确定的各个numa节点,所提供的处理器核的数量可以相同。具体的,假设每个处理器核上的超线程数量为1,则用于实现vcpu的第一numa节点中可以包含第一核,第二numa节点中可以包含第二核,则第一numa节点的第一核数量与各个第二numa节点的第二核的数量总和,等于vcpu所包括的核的数量。如此,可以提高虚拟机创建装置对于nuam节点中处理器核的调度性能。当然,第一核的数量与第二数量的数量也可以是不相等,本实施例对此并不进行限定。类似的,若每个处理器核上的超线程数量为2或者其它数值,则第一numa节点中的第一核、第二numa节点中的第二核与vcpu所包括的核的数量之间的关系可以如下述公式(2)所示:
130.vcpu的核数量=n*(第一核的数量 m*第二的核数量)(2)
131.其中,n为每个处理器核上的超线程数量,m为第二numa节点的数量。
132.本实施例中,第一核可以是第一numa节点中全部处理器核,也可以是第一numa节点中的部分处理器核。特别的,当第一核为第一numa节点中的部分处理器核时,虚拟机创建装置通过对多个numa节点中的处理器核进行“拼凑”,可以得到待创建虚拟机的vcpu所需的处理器核,从而无需从单个numa节点中获取创建虚拟机所需的所有处理器核。这样,当待创建虚拟机的vcpu的规格较大时,即使计算节点中不存在单个numa节点所包含的处理器核数量能够满足该vcpu的需求,也能通过“拼凑”多个numa节点中的处理器核得到该vcpu的规格所要求的处理器核数量,从而可以提高创建虚拟机的成功率。
133.实际应用时,计算节点中的部分numa节点中的处理器核可能会被占用,如被其它已创建的虚拟机占用等。因此,在进一步可能的实施方式中,虚拟机创建装置还可以结合计算节点中各个numa节点中空闲处理器核的数量以及vcpu的规格,来确定第一numa节点与第二numa节点,如此,可以避免所确定的第一numa节点或第二numa节点中没有足够多的空闲处理器核,避免虚拟机创建失败或者创建出的虚拟机因为处理器核被占用而导致虚拟机性能较低。
134.具体实现时,虚拟机创建装置可以获取计算节点中多个numa节点的空闲处理器核的数量,并从计算节点的多个numa节点中确定出空闲处理器核的数量大于预设阈值的numa节点,然后,虚拟机创建装置再从确定出的numa节点中,根据vcpu的规格以及这些numa节点之间的节点距离,进一步确定出节点距离较小的第一numa节点以及第二numa节点,如此,可以使得所选择出的第一numa节点以及第二numa节点具有足够数量的空闲处理器核来实现待创建虚拟机的vcpu。
135.在又一种可能实施方式中,虚拟机创建装置,还可以结合计算节点中各个numa节点的分配率,来确定第一numa节点以及第二numa节点。具体实现时,虚拟机创建装置可以记录当前已创建的虚拟机所对应的numa节点,从而根据所记录的已创建虚拟机同一numa之间的对应关系,确定计算节点中各个numa节点的分配率。这样,虚拟机创建装置在确定第一numa节点以及第二numa节点时,可以根据各个numa的分配率大小进行排序,并从计算节点的多个numa节点中确定出分配率较小的numa节点,从而虚拟机创建装置可以从分配率较小的numa节点中,根据vcpu的规格以及节点距离,确定出第一numa节点以及第二numa节点。如此,可以提高计算节点中numa节点的分配率。
136.实际应用中,虚拟机创建装置不仅可以为待创建虚拟机分配numa节点,还可以为其分配相应的内存空间,作为待创建虚拟机的内存空间。基于此,本实施例还可以进一步包括如下步骤:
137.s404:虚拟机创建装置根据确定的处理器规格,将第一numa节点中的第一内存空间与第二numa节点中的第二内存空间,作为待创建虚拟机的内存空间,其中,该第一内存空间与第二内存空间之和与处理器规格所指示的内存空间大小相等。
138.在一些可能的实施方式中,虚拟机创建装置可以根据用户在规格输入界面中所述输入的内存空间大小,确定待创建虚拟机具有多大的内存空间,从而虚拟机创建装置可以按照该内存空间,从第一numa节点以及第二numa节点中进行内存空间的调度,具体可以是从第一numa节点中调度出第一内存空间,从各个第二numa节点中调度出第二内存空间,则vcpu的规格所指示的内存空间大小,即为第一内存空间与各个第二内存空间的总和。
139.而在其它可能的实施方式中,待创建虚拟机的内存空间大小也可以是固定的。则,虚拟机创建装置在创建虚拟机时,可以为该虚拟机分配固定大小的内存空间,具体是根据该内存空间大小分别从第一numa节点以及第二numa节点中调度出相应的第一内存空间以及第二内存空间。
140.实际应用中,在第一numa节点所调度出的第一内存空间,可以与在第二numa节点中所调度出的第二内存空间的大小相等,这样,可以方便虚拟机创建装置对于内存空间的调度。当然,第一内存空间与第二内存空间的大小也可以不相等,本实施例对此并不进行限定。
141.基于上述实施例描述的虚拟机创建方法,本技术实施例还提供一种虚拟机创建装置。参阅图8,示出了虚拟机创建装置的结构示意图。如图8所示,装置800具体可以包括:
142.获取模块801,用于提供虚拟机创建接口,所述虚拟机创建接口用于获取租户输入的待创建虚拟机的处理器规格;
143.设置模块802,用于提供跨非统一内存访问numa选择接口,所述跨numa选择接口用于供所述租户选择将所述待创建虚拟机的处理器核设置在不同nuima节点或设置在一个
numa节点;
144.选择模块803,用于选择具有numa架构的计算节点,并在所述计算节点上创建所述待创建虚拟机;
145.分配模块804,用于在所述跨numa选择接口指示所述租户选择将所述待创建虚拟机的处理器核设置在一个numa节点中的情况下,将所述计算节点的一个numa节点中的处理器核分配给所述待创建虚拟机,其中,所述计算节点的一个numa节点提供的处理器核与所述处理器规格匹配;
146.所述分配模块804,还用于在所述跨numa选择接口指示所述租户选择将所述待创建虚拟机的处理器核设置在不同numa节点中的情况下,将所述计算节点的不同numa节点中的处理器核分配给所述待创建虚拟机,其中,所述计算节点的不同numa节点提供的处理器核与所述处理器规格匹配。
147.在一种可能的实施方式中,所述分配模块804,具体用于:
148.确定所述计算节点的同一片内的第一numa节点和第二numa节点;
149.将所述第一numa节点中的第一部分处理器核和所述第二numa节点中的第二部分处理器核分配给所述待创建虚拟机,所述第一部分处理器核和所述第二部分处理器核的数量之和与所述处理器规格匹配。
150.在一种可能的实施方式中,所述分配模块804,具体用于:
151.计算所述计算节点内第一numa节点与其它numa节点之间的节点距离;
152.对所述第一numa节点与其它numa节点之间的节点距离进行排序,确定所述其它numa节点中与所述第一numa节点位于同一片内的第二numa节点,所述第一numa节点与所述第二numa节点之间的节点距离,不大于所述第一numa节点与其它numa节点之间的节点距离。
153.在一种可能的实施方式中,所述第一部分处理器核与所述第二部分处理器核的数量相等。
154.在一种可能的实施方式中,所述处理器规格还用于指示待创建虚拟机的内存空间大小,所述分配模块804,还用于:
155.在所述跨numa选择接口指示所述租户选择将所述待创建虚拟机的处理器核设置在一个numa节点中的情况下,将所述计算节点的一个numa节点中的内存空间分配给所述待创建虚拟机,其中,所述计算节点的一个numa节点提供的内存空间大小与所述处理器规格所指示的内存空间大小相等;
156.在所述跨numa选择接口指示所述租户选择将所述待创建虚拟机的处理器核设置在不同numa节点中的情况下,将所述计算节点的不同numa节点中的内存空间分配给所述待创建虚拟机,其中,所述计算节点的不同numa节点提供的内存空间大小之和与所述处理器规格所指示的内存空间大小相等。
157.在一种可能的实施方式中,所述不同numa节点中的各个numa节点分配给所述待创建虚拟机的内存空间的大小相等。
158.本实施例提供的在虚拟机创建装置800对应于前述图3所示实施例中的虚拟机创建方法,因此,本实施例中所提供的各个模块的具体实现方式及其所具有的技术效果,可以参见前述实施例中的相关之处描述,在此不做赘述。
159.根据图4所示实施例中的虚拟机创建方法,本技术实施例还提供一种虚拟机创建装置。参阅图9,示出了虚拟机创建装置的结构示意图。如图9所示,装置900具体可以包括:
160.接收模块901,用于接收虚拟机创建请求,所述虚拟创建请求包括待创建虚拟机的处理器规格;
161.确定模块902,用于根据所述处理器规格,确定具有非统一内存访问numa架构的计算节点;
162.分配模块903,用于根据所述处理器规格,将所述计算节点中节点距离最小的numa节点中的处理器核分配给所述待创建虚拟机。
163.在一种可能的实施方式中,所述分配模块903,包括:
164.获取所述计算节点中多个numa节点的空闲处理器核的数量;
165.根据所述处理器规格以及所述多个numa节点的空闲处理器核的数量,从所述多个numa节点中选择空闲处理器核的数量不小于第一预设阈值的所述第一numa节点以及所述第二numa节点,并将所述第一numa节点以及所述第二numa节点中的处理器核分配给所述待创建虚拟机,所述第一numa节点与所述第二numa节点之间的节点距离,不大于所述第一numa节点与所述计算节点中其它numa节点之间的节点距离,所述第一预设阈值基于所述处理器规格进行确定。
166.在一种可能的实施方式中,分配给所述待创建虚拟机的第一numa节点中的处理器核的数量,与分配给所述待创建虚拟机的第二numa节点中的处理器核的数量相等。
167.在一种可能的实施方式中,所述处理器规格用于指示分配给所述待创建虚拟机的处理器核的数量。
168.在一种可能的实施方式中,所述分配模块903,还用于当所述处理器规格所指示的分配给所述待创建虚拟机的处理器核的数量不大于第二预设阈值时,从所述计算节点中选择一个numa节点中的处理器核分配给所述待创建虚拟机。
169.在一种可能的实施方式中,所述处理器规格还用于指示待创建虚拟机的内存空间大小,所述分配模块903,还用于根据所述处理器规格,将所述第一numa节点中的第一内存空间以及所述第二numa节点中的第二内存空间,作为所述待创建虚拟机的内存空间,所述第一内存空间的大小与所述第二内存空间的大小之和与所述处理器规格所指示的内存空间大小相等。
170.在一种可能的实施方式中,所述第一内存空间的大小与所述第二内存空间的大小相等。
171.在一种可能的实施方式中,所述接收模块901,具体用于:
172.呈现规格输入界面;
173.响应于用户在所述规格输入界面上针对所述待创建虚拟机的处理器规格的输入操作,生成所述虚拟机创建请求。
174.在一种可能的实施方式中,所述规格输入界面包括所述待创建虚拟机的多个规格候选项;
175.则,所述输入操作,具体为针对所述多个规格候选项的选择操作。
176.在一种可能的实施方式中,所述分配模块903,具体用于将所述待创建虚拟机与所述第一numa节点中的处理器核、第二numa节点中的处理器核进行绑定。
177.本实施例提供的在虚拟机创建装置900对应于前述图4所示实施例中的虚拟机创建方法,因此,本实施例中所提供的各个模块的具体实现方式及其所具有的技术效果,可以参见前述实施例中的相关之处描述,在此不做赘述。
178.此外,根据图3或图8所示的实施例,本技术实施例还提供一种计算设备。如图10所示,装置1000中可以包括通信接口1010、处理器1020。可选的,装置1000中还可以包括存储器1030。其中,存储器1030可以设置于装置内部,还可以设置于装置外部。示例性地,上述图3中虚拟机创建装置所执行的动作均可以由处理器1020实现。处理器1020通过通信接口1010接收租户输入的操作,并用于实现图2中所述的虚拟机创建装置所执行的任一方法。其中,该通信接口1010可以包括上述虚拟机创建接口、跨numa选择接口等。在实现过程中,处理流程的各步骤可以通过处理器1020中的硬件的集成逻辑电路或者软件形式的指令完成图3中所述虚拟机创建装置所执行的方法。为了简洁,在此不再赘述。处理器1020用于实现上述方法所执行的程序代码可以存储在存储器1030中。存储器1030和处理器1020连接,如耦合连接等。
179.本技术实施例的一些特征可以由处理器1020执行存储器1030中的程序指令或者软件代码来完成/支持。存储器1030上在加载的软件组件可以从功能或者逻辑上进行概括,例如,图8所示的获取模块801、设置模块802、选择模块803以及分配模块804。
180.本技术实施例中涉及到的任一通信接口可以是电路、总线、收发器或者其它任意可以用于进行信息交互的装置。比如装置1000中的通信接口1010,示例性地,该其它装置可以是与该装置1000相连的设备,比如,可以是租户所使用的设备。
181.此外,根据图4或图9所示的实施例,本技术实施例还提供一种计算设备。如图11所示,装置1100中可以包括通信接口1110、处理器1120。可选的,装置1100中还可以包括存储器1130。其中,存储器1130可以设置于装置内部,还可以设置于装置外部。示例性地,上述图4中虚拟机创建装置所执行的动作均可以由处理器1120实现。处理器1120通过通信接口1110接收虚拟机创建请求,并用于实现图4中所述的虚拟机创建装置所执行的任一方法。在实现过程中,处理流程的各步骤可以通过处理器1120中的硬件的集成逻辑电路或者软件形式的指令完成图4中所述虚拟机创建装置所执行的方法。为了简洁,在此不再赘述。处理器1120用于实现上述方法所执行的程序代码可以存储在存储器1130中。存储器1130和处理器1120连接,如耦合连接等。
182.本技术实施例的一些特征可以由处理器1120执行存储器1130中的程序指令或者软件代码来完成/支持。存储器1130上在加载的软件组件可以从功能或者逻辑上进行概括,例如,图9所示的接收模块901、确定模块902以及分配模块903。
183.本技术实施例中涉及到的任一通信接口可以是电路、总线、收发器或者其它任意可以用于进行信息交互的装置。比如装置1100中的通信接口1110,示例性地,该其它装置可以是与该装置1100相连的设备,比如,可以是租户所使用的设备。
184.本技术实施例中涉及的处理器可以是通用处理器、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
185.本技术实施例中的耦合是装置、模块或模块之间的间接耦合或通信连接,可以是电性,机械或其它的形式,用于装置、模块或模块之间的信息交互。
186.处理器可能和存储器协同操作。存储器可以是非易失性存储器,比如硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd)等,还可以是易失性存储器(volatile memory),例如随机存取存储器(random-access memory,ram)。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。
187.本技术实施例中不限定上述通信接口、处理器以及存储器之间的具体连接介质。比如存储器、处理器以及通信接口之间可以通过总线连接。所述总线可以分为地址总线、数据总线、控制总线等。
188.基于以上实施例,本技术实施例还提供了一种计算机存储介质,该存储介质中存储软件程序,该软件程序在被一个或多个处理器读取并执行时可实现上述任意一个或多个实施例提供的虚拟机创建装置执行的方法。所述计算机存储介质可以包括:u盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
189.基于以上实施例,本技术实施例还提供了一种芯片,该芯片包括处理器,用于实现上述实施例所涉及的虚拟机创建装置的功能,例如用于实现图1中虚拟机创建装置所执行的方法。可选地,所述芯片还包括存储器,所述存储器,用于处理器所执行必要的程序指令和数据。该芯片,可以由芯片构成,也可以包含芯片和其他分立器件。
190.本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
191.本技术是参照根据本技术实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
192.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
193.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
194.显然,本领域的技术人员可以对本技术实施例进行各种改动和变型而不脱离本技术实施例的范围。这样,倘若本技术实施例的这些修改和变型属于本技术权利要求及其等
同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献