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

资源分配方法、装置、电子设备及存储介质与流程

2022-02-21 04:04:19 来源:中国专利 TAG:


1.本发明涉及虚拟机技术领域,尤其涉及一种资源分配方法、装置、电子设备及存储介质。


背景技术:

2.目前,两个非统一内存访问(non uniform memory access architecture,numa)架构是将服务器分成若干个numa节点,在这些numa节点中包含单独的处理器与内存资源,当处理器访问自身的numa节点的内存时,响应时间较短,访问其他numa节点的内存时,响应时间会变慢,从而希望能够在一个numa节点上创建的虚拟机与内存资源,而在运行虚拟机之前,只能从numa架构的第一个numa节点开始为虚拟机分配资源,包括设置虚拟机的处理器与内存参数,从而不能提高资源的利用效率。


技术实现要素:

3.有鉴于此,本发明实施例提供一种资源分配方法、装置、电子设备及存储介质,以至少解决相关技术不能提高资源的利用效率的问题。
4.本发明实施例的技术方案是这样实现的:
5.本发明实施例提供了一种资源分配的方法,所述方法包括:
6.将服务器中至少两个numa节点中的至少一个numa节点的资源参数设置为第一类型的资源参数;其中,所述第一类型的资源参数表征可在对应的numa节点上创建虚拟机;
7.将所述服务器中所述至少一个numa节点之外的其他numa节点的资源参数设置为第二类型的资源参数;其中,所述第二类型的资源参数表征对应的numa节点不支持创建虚拟机;
8.根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配。
9.上述方案中,所述资源参数包括处理器参数与内存参数,所述根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配,还包括:
10.获取所述至少两个numa节点中每个numa节点的处理器参数;
11.确定符合第一类型的资源参数的处理器参数的numa节点,并获取符合第一类型的资源参数的处理器参数的numa节点的节点序号;
12.根据获取的节点序号,确定所述获取的节点序号对应的numa节点的内存参数;
13.根据所述获取的节点序号对应的numa节点的处理器参数与内存参数,创建虚拟机并为虚拟机进行资源分配。
14.上述方案中,所述根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配时,所述方法包括:
15.获取当前numa节点的节点序号;所述至少两个numa节点中的每个numa节点对应一个节点序号;
16.当所述当前numa节点的节点序号与第一类型的资源参数对应的所有numa节点的节点序号均不同时,跳过所述当前numa节点;
17.当所述当前numa节点的节点序号与第一类型的资源参数对应的任一numa节点的节点序号相同时,在所述当前numa节点上创建虚拟机。
18.上述方案中,所述根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配,包括:
19.遍历所述服务器中的所有numa节点,得到所述服务器中的numa节点的节点总量;
20.当所有numa节点的节点序号同时满足以下所有条件时,根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配:
21.所有numa节点的节点序号连续;
22.所有numa节点的节点序号总量等于所述节点总量。
23.上述方案中,所述根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配时,所述方法还包括:
24.在所有第一类型的资源参数中存在空参数值的情况下,产生第一提示信息;所述第一提示信息表征资源参数设置失败。
25.上述方案中,所述资源参数包括处理器参数;所述根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配,包括:
26.在所述第一类型的资源参数中的处理器参数均不为空参数值的情况下,根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配。
27.上述方案中,在所述根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配时,所述方法包括:
28.在第一类型的资源参数对应的numa节点上创建虚拟机;
29.对于创建了虚拟机的第一numa节点,为对应的第一虚拟机分配同属于第一numa节点的处理器资源和内存资源;所述第一numa节点为处理器参数和内存参数均为有效参数的numa节点;
30.对于创建了虚拟机的第二numa节点,为对应的第二虚拟机分配属于第二numa节点的处理器资源,并为所述第二虚拟机分配属于第一numa节点的内存资源。
31.本发明实施例还提供了一种资源分配的装置,包括:
32.第一设置单元,用于将服务器中至少两个非统一内存访问numa节点中的至少一个numa节点的资源参数设置为第一类型的资源参数;其中,所述第一类型的资源参数表征可在对应的numa节点上创建虚拟机;
33.第二设置单元,用于将所述服务器中所述至少一个numa节点之外的其他numa节点的资源参数设置为第二类型的资源参数;其中,所述第二类型的资源参数表征对应的numa节点不支持创建虚拟机;
34.分配单元,用于根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配。
35.本发明实施例还提供了一种电子设备,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,
36.其中,所述处理器用于运行所述计算机程序时,执行上述任一方法的步骤。
37.本发明实施例还提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一方法的步骤。
38.在本发明实施例中,通过将服务器中至少两个numa节点中的至少一个numa节点的资源参数设置为第一类型的资源参数,第一类型的资源参数表征可在对应的numa节点上创建虚拟机,将服务器中至少一个numa节点之外的其他numa节点的资源参数设置为第二类型的资源参数,第二类型的资源参数表征对应的numa节点不支持创建虚拟机,根据对应的资源参数,对至少两个numa节点创建虚拟机并为虚拟机进行资源分配,能够在保持原有的代码逻辑的基础上,实现在服务器中指定任意的numa节点上创建虚拟机,对虚拟机进行资源分配,提高了资源的利用效率。
附图说明
39.图1为本发明一实施例提供的资源分配方法的实现流程示意图;
40.图2为本发明又一实施例提供的资源分配方法的实现流程示意图;
41.图3为本发明又一实施例提供的资源分配方法的实现流程示意图;
42.图4为本发明又一实施例提供的资源分配方法的实现流程示意图;
43.图5为本发明又一实施例提供的资源分配方法的实现流程示意图;
44.图6为本发明一实施例提供的numa架构下numa节点中进行的资源分配的示意图;
45.图7为本发明又一实施例提供的资源分配的具体算法流程图;
46.图8为本发明一实施例提供的资源分配装置的结构示意图;
47.图9为本发明一实施例提供电子设备的硬件组成结构示意图。
具体实施方式
48.下面结合附图及具体实施例对本发明作进一步详细的说明。
49.以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
50.需要说明的是,本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
51.另外,在本发明实施例中,“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
52.另外,本发明实施例中的用户界面示意图不用于限定本发明。
53.本发明实施例提供了一种资源分配方法,图1为本发明实施例的资源分配方法的一种流程示意图。如图1所示,所述方法包括:
54.s101:将服务器中至少两个numa节点中的至少一个numa节点的资源参数设置为第一类型的资源参数;其中,所述第一类型的资源参数表征可在对应的numa节点上创建虚拟机。
55.这里,numa是一种用于多处理器的电脑记忆体设计。numa架构能够将服务器分成若干个numa节点,这些numa节点包含单独的处理器和内存。这里,将服务器中至少一个numa
节点的资源参数设置为第一类型的资源参数,通过numa节点设置的第一类型的资源参数,能够在numa节点上创建虚拟机,第一类型的资源参数能够确定numa节点上创建的虚拟机所需要分配的资源的数量。服务器的numa节点的资源参数可以通过openstack中的flavor进行设置,openstack是一个开源的云计算管理平台项目,是一系列软件开源项目的组合,设置资源参数的具体代码为:
56.openstack flavor set flavor-name
57.--
property hw:numa_nodes=flavor-nodes
58.--
property hw:numa_cpus.n=flavor-cores
59.--
property hw:numa_mem.n=flavor-memory
60.其中,flavor-name指服务器的numa节点的名称,用以区分不要同服务器之间的numa节点。hw:numa_nodes是指numa节点数量,flavor-nodes是具体的numa节点数量值。numa_cpus.n和numa_mem.n属于表示节点序号为n的numa节点的资源参数,在实际应用中,常用n=0代表服务器的第一个numa节点,flavor-cores和flavor-memory是指具体的资源参数设置的数值。例如,对服务器中的第一个numa节点的资源参数设置为第一参数时,具体的代码为:
61.property hw:numa_cpu.0=0,1
62.property hw:numa_mem.0=2048
63.其中,hw:numa_cpu.0是指第一个numa节点中创建的处理器的编号,第一参数可以设置为序列,代表着在第一个numa节点中创建的虚拟机的数量,每台虚拟机对应处理器参数所设置的序列中的一个序号,例如,当第一参数为0,1时,代表着在第一个numa节点中创建两台虚拟机,第一台虚拟机对应的序号为0,第二台虚拟机对应的序号为1。hw:numa_mem.0是指第一个numa节点可供分配到虚拟机的内存容量的大小,代表着在第一个numa节点中创建的虚拟机可供分配的内存容量为2048。
64.s102:将所述服务器中所述至少一个numa节点之外的其他numa节点的资源参数设置为第二类型的资源参数;其中,所述第二类型的资源参数表征对应的numa节点不支持创建虚拟机。
65.这里,除了对服务器中至少一个numa节点设置了第一类型的资源参数,还需要对其他的numa节点的资源参数设置为第二类型的资源参数,当numa节点的资源参数设置为第二类型的资源参数,对应的numa节点不支持虚拟机的创建,也不会进行相应的资源分配。在实际应用中,在对numa节点上的虚拟机进行资源分配的时候,是从服务器的第一个numa节点开始创建虚拟机,进行相应的资源分配之后,才能转移到下一个numa节点进行资源分配的操作。因此,对服务器中的numa节点的资源参数设置为第一类型的资源参数之外,还需要对其他的numa节点的资源参数进行设置。其中,第一类型的资源参数与第二类型的资源参数并不相同,第一类型参数是为了在numa节点上创建虚拟机,并对虚拟机完成资源分配,而第二类型参数是不支持在numa节点上创建虚拟机,也不需要进行资源分配,通过第一类型资源参数与第二类型资源参数,将需要创建虚拟机的numa节点加以区分。对服务器中的第一个numa节点的资源参数设置为第二参数时,具体的代码为:
66.property hw:numa_cpu.0=,
67.property hw:numa_mem.0=0
68.其中,hw:numa_cpu.0=,表示服务器中第一个numa节点上不支持虚拟机的创建,从而也不能进行处理器资源分配的操作。hw:numa_mem.0=0表示服务器中第一个numa节点不进行内存资源分配的操作,因此,在服务器中第一个numa节点上不会创建虚拟机,也不会对虚拟机进行资源分配。第二类型资源参数中的处理器参数,设置的参数可以为序列之外的参数,例如,可以将具体的参数设置为标点符号。而对于内存参数而言,通常会将第二类型的资源参数的取值设置为0。
69.s103:根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配。
70.这里,当对服务器中的至少两个numa节点的资源参数设置完毕之后,根据numa节点对应的资源参数,基于服务器中的至少两个numa节点创建虚拟机进行资源分配。具体地,当numa节点的资源参数为第一类型的资源参数时,那么在对应的numa节点上创建虚拟机,并根据numa节点对应的资源参数,为虚拟机进行资源分配。当numa节点的资源参数为第二类型的资源参数时,那么不需要在numa节点上创建虚拟机,也不需要对虚拟机进行资源分配。
71.上述实施例中,通过对服务器中的至少两个numa节点中的至少一个numa节点的资源参数设置为第一类型的资源参数,第一类型的资源参数表征可在对应的numa节点上创建虚拟机,对服务器中至少一个numa节点之外的其他numa节点的资源参数设置为第二类型的资源参数,第二类型的资源参数表征在对应的numa节点不支持创建虚拟机,根据服务器中的numa节点设置的资源参数,创建虚拟机并为虚拟机进行资源分配,能够在指定服务器中的numa节点上创建虚拟机,并对创建的虚拟机进行资源分配,从而提高了资源的利用效率。
72.在一实施例中,如图2所示,所述资源参数包括处理器参数与内存参数,所述根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配,还包括:
73.s201:获取所述至少两个numa节点中每个numa节点的处理器参数。
74.这里,在对服务器中的numa节点设置资源参数的时候,分别需要设置处理器参数与内存参数。其中,处理器参数表示在对应的numa节点上创建的虚拟机的数量,内存参数表示可供分配给虚拟机的内存的大小。在对服务器的numa节点的资源参数设置完毕,对服务器中的numa节点创建虚拟机,并对虚拟机进行资源分配时,需要获取服务器中每个numa节点的处理器参数。
75.s202:确定符合第一类型的资源参数的处理器参数的numa节点,并获取符合第一类型的资源参数的处理器参数的numa节点的节点序号。
76.这里,在获取服务器中的所有numa节点的处理器参数之后,对获取的处理器参数进行分析,判断处理器参数的类型,确定处理器的参数为第一类型的资源参数中的处理器参数,还是为第二类型的资源参数中的处理器参数,具体地,判断处理器的参数表征是否能在numa节点上创建虚拟机,确定服务器中符合第一类型的资源参数的处理器参数的numa节点,并获取这些numa节点的节点序号。当存在numa节点的处理器参数的设置符合第一类型的资源参数中的处理器参数的时候,那么可以将numa节点的处理器参数确定为第一类型的处理器参数,并确定numa节点的节点序号。
77.s203:根据获取的节点序号,确定所述获取的节点序号对应的numa节点的内存参
数。
78.这里,资源分配的对象实际上是numa节点上创建的虚拟机,也就是对设置为第一类型的处理器参数的numa节点上创建的虚拟机进行资源分配,而不是设置为第一类型的处理器参数的numa节点不支持虚拟机的创建,也不需要对虚拟机进行资源分配,因此获取符合第一类型的资源参数中的处理器参数与内存参数,就能对对应的numa节点上创建的虚拟机完成资源分配。在获取符合第一类型的资源参数中的处理器参数的节点序号之后,根据获取的节点序号,查询所获取的节点序号的numa节点的内存参数,那么就可以获取服务器中资源参数为第一类型的资源参数的numa节点,并获取这些numa节点对应的具体资源参数的设置。
79.s204:根据所述获取的节点序号对应的numa节点的处理器参数与内存参数,创建虚拟机并为虚拟机进行资源分配。
80.这里,根据获取的属于第一类型的资源参数的numa节点的节点序号,在numa节点上创建虚拟机,并根据获取的numa节点的第一类型的资源参数的具体参数,对创建的虚拟机进行资源分配,包括处理器资源的分配与内存资源的分配。
81.在上述实施例中,通过获取每个numa节点的处理器参数,确定符合第一类型的资源参数的处理器参数的numa节点,并获取符合第一类型的资源参数的处理器参数的numa节点的节点序号,根据获取的节点序号,确定节点序号对应的numa节点的内存参数,根据获取的节点序号的numa节点的处理器参数与内存参数,创建虚拟机并为虚拟机进行资源分配,能够快速定位到需要创建虚拟机的numa节点,并对创建的虚拟机完成资源分配,提高了搜索目标nuam节点的效率以及资源分配的效率。
82.在一实施例中,如图3所示,所述根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配时,所述方法包括:
83.s301:获取当前numa节点的节点序号;所述至少两个numa节点中的每个numa节点对应一个节点序号。
84.这里,获取当前numa节点的节点序号,其中,每个numa节点都对应一个节点序号。在实际应用中,常用0代表着服务器中的第一个numa节点,1代表着服务器中的第二个numa节点的序号,如此类推,用节点序号区分服务器中的每个numa节点。
85.s302:当所述当前numa节点的节点序号与第一类型的资源参数对应的所有numa节点的节点序号均不同时,跳过所述当前numa节点。
86.这里,在获取当前numa节点的节点序号之后,与所有设置第一类型的资源参数的numa节点的节点序号进行比较,判断当前numa节点的节点序号是否与所有设置第一类型的资源参数的numa节点的节点序号都不相同,如果当前numa节点的节点序号与所有设置第一类型的资源参数的numa节点的节点序号不相同时,可以确定当前numa节点设置的资源参数为第二类型资源参数,那么不需要对当前numa节点创建虚拟机,并进行资源分配,从而跳过当前numa节点,获取下一个numa节点。
87.s303:当所述当前numa节点的节点序号与第一类型的资源参数对应的任一numa节点的节点序号相同时,在所述当前numa节点上创建虚拟机。
88.这里,如果当前numa节点的节点序号与第一类型的资源参数对应的任一numa节点的节点序号相同的时候,可以确定当前numa节点设置的资源参数为第一类型资源参数,也
就是说在当前的numa节点上创建虚拟机。在实际应用中,用户可以根据实际需求,对服务器中至少一个numa节点的资源参数设置为第一类型的资源参数,那么判断当前numa节点是否为设置第一类型的资源参数时,是将当前numa节点的节点序号与第一类型的资源参数对应的numa节点的节点序号进行比较。在实际应用中,当一个第一类型的资源参数对应的numa节点上创建了虚拟机之后,在之后进行的当前numa节点序号与第一类型的资源参数对应的numa节点的节点序号进行比较时,可以不包括已经创建了虚拟机的numa节点。例如,第一类型的资源参数对应的numa节点的节点序号分别为1,3。获取当前numa节点的节点序号为1,经过比较可以确定,当前的numa节点序号1在第一类型的资源参数对应的numa节点的节点序号中,那么可以确定在节点序号为1的numa节点上创建虚拟机。完成资源分配之后,获取下一个numa节点的节点序号,也就是2,那么在进行当前的numa节点的节点序号与第一类型的资源参数对应的numa节点的节点序号进行比较的时候,由于节点序号为1的numa节点已经创建虚拟机了,那么在进行比较的时候,只需要判断当前的numa节点的节点序号2是否与节点序号3相同即可,不需要再与节点序号1进行判断。
89.在上述实施例中,通过获取当前numa节点的节点序号,将当前numa节点的节点序号与资源参数为第一类型的资源参数的所有numa节点的节点序号进行比较,在当前numa节点的节点序号与资源参数为第一类型的资源参数的任一numa节点的节点序号相同时,则根据当前numa节点对应的资源参数,为当前numa节点对应的虚拟机进行资源分配,能够快速地确定需要进行资源分配的numa节点,从而能够对特定的numa节点的虚拟机进行资源分配,提高资源的利用效率。
90.在一实施例中,如图4所示,所述根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配,包括:
91.s401:遍历所述服务器中的所有numa节点,得到所述服务器中的numa节点的节点总量。
92.这里,服务器中的numa节点的节点总量是指服务器中numa节点的节点个数,可以通过对服务器中所有的numa节点进行初步搜索得到。
93.s402:当所有numa节点的节点序号同时满足以下所有条件时,根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配:
94.所有numa节点的节点序号连续;
95.所有numa节点的节点序号总量等于所述节点总量。
96.这里,在得到所有服务器中numa节点的节点总量之后,通过获取在服务器中设置了资源参数的numa节点的节点序号,判断服务器中设置了资源参数的numa节点的节点序号是否连续,当出现服务器中设置了资源参数的numa节点的节点序号不连续的时候,就说明服务器中存在numa节点没有进行资源参数的设置。还需要判断服务器中设置了资源参数的numa节点的节点序号总量是否等于服务器中所有numa节点的节点总量,保证服务器中每个numa节点都进行资源参数的设置。当服务器中进行资源参数设置的numa节点的节点序号是连续的,并且节点序号总量等于服务器中所有numa节点的节点总量时,可以根据numa节点设置的资源参数,在对应的numa节点上创建虚拟机并完成对虚拟机的资源分配。在实际应用中,现有的代码框架是根据numa节点的节点序号,按顺序对numa节点创建虚拟机,并对创建的虚拟机完成资源分配,不支持为节点序号不连续的numa节点创建虚拟机,并对创建的
虚拟机完成资源分配。为了能够兼容现有的代码框架的同时,对指定的numa节点创建虚拟机,并完成对虚拟机的资源分配,需要对每个numa节点进行资源参数的设置,具体地,对需要创建虚拟机并完成资源分配的numa节点的资源参数设置为第一类型的资源参数,对不支持虚拟机的创建并不能对虚拟机完成资源分配的numa节点的资源参数设置为第二类型的资源参数。
97.在上述实施例中,通过遍历服务器中的所有numa节点,得到服务器中的numa节点的节点总量,并在确定所有numa节点的节点序号是连续,以及所有numa节点的节点序号总量等于节点总量时,根据对应的资源参数,基于numa节点创建虚拟机并为虚拟机进行资源分配,从而能够兼容现有的代码框架的同时,完成指定的numa节点上创建的虚拟机的资源分配,提高资源的使用效率。
98.在一实施例中,所述根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配时,所述方法还包括:
99.在所有第一类型的资源参数中存在空参数值的情况下,产生第一提示信息;所述第一提示信息表征资源参数设置失败。
100.这里,对第一类型的资源参数设置相应的参数,才能在现有的代码框架上支持在设置第一类型的资源参数的numa节点上创建虚拟机,并为创建的虚拟机进行资源分配。当numa节点的资源参数为第一类型的资源参数时,说明对应的numa节点支持虚拟机的创建。当所有第一类型的资源参数存在空参数值的情况下时,也就是说处理器参数与内存参数存在空参数值时,对应的numa节点无法创建相应的虚拟机,也不能完成资源分配。当所有第一类型的资源参数中存在空参数值时,对设置资源参数的代码进行编译的时候,会产生报错,也就是产生第一提示消息,用于提醒资源参数设置出错,需要对资源参数的设置进行修改以兼容现有的代码框架。
101.在上述实施例中,通过在第一类型的资源参数中存在空参数值的情况下,产生表征资源参数设置失败的第一提示信息,能够兼容现有的代码框架,保证资源设置的代码逻辑的完整,保证了对numa节点上的虚拟机的资源分配的顺利完成,提高了资源的使用效率。
102.在一实施例中,所述资源参数包括处理器参数;所述根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配,包括:
103.在所述第一类型的资源参数中的处理器参数均不为空参数值的情况下,根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配。
104.这里,对服务器中的numa节点进行资源参数设置之后,如果属于第一类型的资源参数中的处理器参数均不为空参数值的情况下,根据numa节点设置的资源参数,在相应的numa节点上创建虚拟机,并对创建的虚拟机进行资源分配。其中,第一类型的资源参数中的处理器参数均不为空参数值是指处理器参数上设置了具体的序列,通过设置的序列,明确了对应的虚拟机分配到的处理器数量。在实际应用中,还会出现存在numa节点的资源参数属于第一类型的资源参数,处理器参数不为空参数值,但内存参数为0的情况时,在numa节点上创建了虚拟机,并对虚拟机完成资源分配之后,由于虚拟机没能分配到内存资源,在虚拟机进行工作的时候,虚拟机可以通过获取其他numa节点上闲置的内存资源,从而满足虚拟机工作时所需要的内存资源。当出现第一类型的资源参数中的处理器参数为空置的情况下,可以进行自动分配。具体地,可以获取服务器提供的处理器资源与内存资源,将处理器
资源与内存资源平均分配到相应的numa节点上。
105.在上述实施例中,通过在第一类型的资源参数中的处理器参数均不为空参数值的情况下,根据对应的资源参数,基于至少两个numa节点创建虚拟机并为虚拟机进行资源分配,从而能够保证numa节点中创建的虚拟机能够分配到相应的处理器资源,使虚拟机能够正常工作,提高了资源的使用效率。
106.在一实施例中,如图5所示,在所述根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配时,所述方法包括:
107.s501:在第一类型的资源参数对应的numa节点上创建虚拟机。
108.这里,第一类型的资源参数表征可以在numa节点上创建虚拟机,因此,获取资源参数设置为第一类型的资源参数对应的numa节点,并在对应的numa节点上创建虚拟机。
109.s502:对于创建了虚拟机的第一numa节点,为对应的第一虚拟机分配同属于第一numa节点的处理器资源和内存资源;所述第一numa节点为处理器参数和内存参数均为有效参数的numa节点。
110.这里,第一numa节点为处理器参数和内存参数均为有效参数的numa节点,当处理器参数与内存参数均为有效参数的时候,根据处理器参数为第一numa节点创建的虚拟机分配处理器资源,根据内存参数为第一numa节点创建的虚拟机分配内存资源。处理器参数的有效参数可以为表示虚拟机数量的序列,内存参数的有效参数可以为表示可供分配到虚拟机的内存容量的具体大小。例如,当存在节点序号为0的numa节点的处理器参数设置为0,1序列,内存参数设置为2048,那么处理器参数与内存参数均属于有效参数,对应的节点序号为0的numa节点为第一节点。在节点序号为0的numa节点分配两台虚拟机,并且提供可分配到虚拟机的内存容量的大小为2048。
111.s503:对于创建了虚拟机的第二numa节点,为对应的第二虚拟机分配属于第二numa节点的处理器资源,并为所述第二虚拟机分配属于第一numa节点的内存资源。
112.这里,第二numa节点的资源参数为第一类型的资源参数,处理器参数为有效参数,而内存参数为无效参数的numa节点,内存参数为无效参数表征在对虚拟机进行资源分配的时候,虚拟机不能分配到内存资源。当根据处理器参数与内存参数为第二numa节点上的虚拟机进行资源分配的时候,第二numa节点上的虚拟机能够分配到相应的处理器资源,由于内存参数为无效参数,那么第二numa节点上的虚拟机不能分配到内存资源。由于虚拟机需要一定的处理器资源与内存资源才能正常的工作,在此基础上,可以根据第一numa节点的内存参数,对第二numa节点上的虚拟机分配内存资源。例如,存在第一numa节点的处理器参数为0,1,内存参数为2048,存在第二numa节点的处理器参数为0,1,内存参数为0,那么在对第二numa节点上的虚拟机进行资源分配的时候,第二numa节点上能够创建两台虚拟机,但是可供分配到虚拟机的内存资源为0,此时可以根据第一numa节点的内存参数,对第二numa节点的虚拟机分配内存资源,最终,第二numa节点上能够创建两台虚拟机,并且可供分配到虚拟机的内存容量为2048,使第二numa节点的虚拟机能够正常运作。如图6所示,图6示出了numa架构下numa节点中进行的资源分配的流程图,图中的memory代表着内存,cpu代表着处理器,每个处理器对应一个内存资源,提高虚拟机的运行速度。对于一个numa节点而言,内存访问时间取决于内存的位置,当处理器访问的内存是节点内的内存,那么访问速度较快,内存访问时间就会较短,当处理器访问的内存是其他节点的内存,那么访问速度会变慢,内
存访问时间就会增加。当cpu 0访问memory0的时候,cpu 0直接访问memory 0,因此访问速度较快,当cpu 0访问memory1的时候,cpu 1先获取memory 1的内容,再通过cpu 1将memory 1的内容传输到cpu 0,因此访问速度较慢。
113.在上述实施例中,通过对第一类型的资源对应的numa节点上创建虚拟机,对处理器参数和内存参数均为有效参数的第一numa的节点分配属于第一numa节点的处理器资源和内存资源,对第二numa节点分配属于第二numa节点的处理器资源,并分配属于第一numa节点的内存资源,能够在不同的资源参数的设置下完成资源的分配,使numa节点上创建的虚拟机能够得到足够的资源进行工作,提高了资源的利用效率。
114.本发明还提供了一应用实施例,如图7所示,图7示出了资源分配的具体算法流程图。
115.s701:获取numa节点总量。
116.s702:判断numa节点总量是否大于0。
117.s703:取i=0。这里,i是指获取的服务器的numa节点的节点序号,i=0代表着获取服务器中第一个numa节点。
118.s704:判断i是否小于numa节点总量。当i小于numa节点总量,转到s7041,当i大于numa节点总量时,转到s705。这里,通过判断i与numa节点总量的大小,能够得知是否对服务器中所有的numa节点进行处理。
119.s7041:获取节点序号为i的numa节点的处理器参数。
120.s7042:获取下一个节点序号i,并转到s704。
121.s705:确定服务器中所有numa节点的cpu序列。
122.s706:取j=0。这里,j是指获取的服务器的numa节点的节点序号,与i进行区分。
123.s707:判断j是否小于numa节点总量。当j小于numa节点总量时,转到s7071,当j大于numa节点总量时,转到s708。
124.s7071:获取节点序号j的numa节点的内存参数。
125.s7072:获取下一个节点序号j,并转到s707。
126.s708:确定服务器中所有numa节点的内存容量的大小。
127.s709:判断cpu序列是否为空值,如果cpu序列为空值,转到s710,如果cpu序列不为空值,则转到s711。
128.s710:根据服务器的处理器总量与内存总量,对numa节点对应的平均分配资源。
129.s711:根据处理器参数与内存参数,对numa节点对应的虚拟机进行资源分配。
130.为实现本发明实施例的资源分配的方法,本发明实施例还提供了一种资源分配装置,如图8所示,该资源分配装置包括:
131.第一设置单元801,用于将服务器中至少两个非统一内存访问numa节点中的至少一个numa节点的资源参数设置为第一类型的资源参数;其中,所述第一类型的资源参数表征可在对应的numa节点上创建虚拟机;
132.第二设置单元802,用于将所述服务器中所述至少一个numa节点之外的其他numa节点的资源参数设置为第二类型的资源参数;其中,所述第二类型的资源参数表征对应的numa节点不支持创建虚拟机;
133.分配单元803,用于根据对应的资源参数,基于所述至少两个numa节点创建虚拟机
并为虚拟机进行资源分配。
134.在一实施例中,所述资源参数包括处理器参数与内存参数,所述分配单元根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配,还包括:
135.获取所述至少两个numa节点中每个numa节点的处理器参数;
136.确定符合第一类型的资源参数的处理器参数的numa节点,并获取符合第一类型的资源参数的处理器参数的numa节点的节点序号;
137.根据获取的节点序号,确定所述获取的节点序号对应的numa节点的内存参数;
138.根据所述获取的节点序号对应的numa节点的处理器参数与内存参数,创建虚拟机并为虚拟机进行资源分配。
139.在一实施例中,所述分配单元根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配时,所述方法包括:
140.获取当前numa节点的节点序号;所述至少两个numa节点中的每个numa节点对应一个节点序号;
141.当所述当前numa节点的节点序号与第一类型的资源参数对应的所有numa节点的节点序号均不同时,跳过所述当前numa节点;
142.当所述当前numa节点的节点序号与第一类型的资源参数对应的任一numa节点的节点序号相同时,在所述当前numa节点上创建虚拟机。
143.在一实施例中,所述分配单元根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配,包括:
144.遍历所述服务器中的所有numa节点,得到所述服务器中的numa节点的节点总量;
145.当所有numa节点的节点序号同时满足以下所有条件时,根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配:
146.所有numa节点的节点序号连续;
147.所有numa节点的节点序号总量等于所述节点总量。
148.在一实施例中,所述分配单元据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配时,所述方法还包括:
149.在所有第一类型的资源参数中存在空参数值的情况下,产生第一提示信息;所述第一提示信息表征资源参数设置失败。
150.在一实施例中,所述资源参数包括处理器参数,所述分配单元根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配,包括:
151.在所述第一类型的资源参数中的处理器参数均不为空参数值的情况下,根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配。
152.在一实施例中,所述分配单元根据对应的资源参数,基于所述至少两个numa节点创建虚拟机并为虚拟机进行资源分配时,所述装置还包括:
153.在第一类型的资源参数对应的numa节点上创建虚拟机;
154.对于创建了虚拟机的第一numa节点,为对应的第一虚拟机分配同属于第一numa节点的处理器资源和内存资源;所述第一numa节点为处理器参数和内存参数均为有效参数的numa节点;
155.对于创建了虚拟机的第二numa节点,为对应的第二虚拟机分配属于第二numa节点
的处理器资源,并为所述第二虚拟机分配属于第一numa节点的内存资源。
156.实际应用时,第一设置单元801、第二设置单元802、分配单元803可由资源分配装置中的处理器来实现。当然,处理器需要运行存储器中存储的程序来实现上述各程序模块的功能。
157.需要说明的是,上述图8实施例提供的资源分配装置在进行资源分配时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的资源分配装置与资源分配方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
158.基于上述程序模块的硬件实现,且为了实现本发明实施例的方法,本发明实施例还提供了一种电子设备,图9为本发明实施例电子设备的硬件组成结构示意图,如图9所示,电子设备包括:
159.通信接口1,能够与其它设备比如网络设备等进行信息交互;
160.处理器2,与通信接口1连接,以实现与其它设备进行信息交互,用于运行计算机程序时,执行上述一个或多个技术方案提供的资源分配方法。而所述计算机程序存储在存储器3上。
161.当然,实际应用时,电子设备中的各个组件通过总线系统4耦合在一起。可理解,总线系统4用于实现这些组件之间的连接通信。总线系统4除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图9中将各种总线都标为总线系统4。
162.本发明实施例中的存储器3用于存储各种类型的数据以支持电子设备的操作。这些数据的示例包括:用于在电子设备上操作的任何计算机程序。可以理解,存储器3可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(rom,read only memory)、可编程只读存储器(prom,programmable read-only memory)、可擦除可编程只读存储器(eprom,erasable programmable read-only memory)、电可擦除可编程只读存储器(eeprom,electrically erasable programmable read-only memory)、磁性随机存取存储器(fram,ferromagnetic random access memory)、快闪存储器(flash memory)、磁表面存储器、光盘、或只读光盘(cd-rom,compact disc read-only memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(ram,random access memory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(sram,static random access memory)、同步静态随机存取存储器(ssram,synchronous static random access memory)、动态随机存取存储器(dram,dynamic random access memory)、同步动态随机存取存储器(sdram,synchronous dynamic random access memory)、双倍数据速率同步动态随机存取存储器(ddrsdram,double data rate synchronous dynamic random access memory)、增强型同步动态随机存取存储器(esdram,enhanced synchronous dynamic random access memory)、同步连接动态随机存取存储器(sldram,synclink dynamic random access memory)、直接内存总线随机存取存储器(drram,direct rambus randomaccess memory)。本发明实施例描述的存储器3旨在包
括但不限于这些和任意其它适合类型的存储器。
163.上述本发明实施例揭示的方法可以应用于处理器2中,或者由处理器2实现。处理器2可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器2中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器2可以是通用处理器、dsp,或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器2可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器3,处理器2读取存储器3中的程序,结合其硬件完成前述方法的步骤。
164.处理器2执行所述程序时实现本发明实施例的各个方法中的相应流程,为了简洁,在此不再赘述。
165.在示例性实施例中,本发明实施例还提供了一种存储介质,即计算机存储介质,具体为计算机可读存储介质,例如包括存储计算机程序的存储器3,上述计算机程序可由处理器2执行,以完成前述方法所述步骤。计算机可读存储介质可以是fram、rom、prom、eprom、eeprom、flash memory、磁表面存储器、光盘、或cd-rom等存储器。
166.在本发明所提供的几个实施例中,应该理解到,所揭露的装置、终端和方法,可以通过其它的方式实现。以上所描述的设备实施例仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
167.上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
168.另外,在本发明各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
169.本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
170.或者,本发明上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服务器、或者网络设备等)执行本发明各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
171.以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
再多了解一些

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

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

相关文献