本申请涉及虚拟机技术领域,特别涉及一种虚拟机调度方法、虚拟机调度装置、电子设备及计算机可读存储介质。
背景技术:
服务器集群中存在多台服务器,各个服务器之间存在共享资源、例如处理器、缓存、带宽等。整个集群中部署有多台虚拟机,为了使得各个虚拟机均能正常工作,尽可能地发挥性能,需要为不同的虚拟机分配不同的共享资源,因此需要按照特殊的调度方式对虚拟机进行调度。相关技术通常采用负载均衡的方式为各个虚拟机分配共享资源,然而该分配方式仅考虑虚拟机的负载,得到的资源分配方式可能并不是真实的最优解。因此相关技术得到的虚拟机调度方式的可靠性和有效性较差,无法最大程度地使虚拟机发挥性能。
技术实现要素:
有鉴于此,本申请的目的在于提供一种虚拟机调度方法、虚拟机调度装置、电子设备及计算机可读存储介质,通过检测待测虚拟机在各种情况下的虚拟机性能,并利用第一矩阵作为标准对第二稀疏矩阵进行补全,使得得到的调度矩阵记录了各种调度方式下虚拟机的性能数据,因此调度矩阵对应的第一调度方式即为真实的最优解,按照第一调度方式调度虚拟机可以提高虚拟机调度过程的可靠性和有效性,最大程度地发挥虚拟机性能。
为解决上述技术问题,本申请提供了一种虚拟机调度方法,具体包括:
确定待测虚拟机,并将所述待测虚拟机放置于至少一个测试处理器上运行,得到至少一个测试性能数据;
将至少一个待调度虚拟机分别放置于至少一个第一处理器上运行,得到至少一个第一性能数据,并将所述待测虚拟机放置于各个不同的第二处理器上运行,得到至少一个第二性能数据;
利用所述测试性能数据生成第一矩阵,并利用所述第二性能数据、所述第一性能数据和所述第一矩阵生成第二稀疏矩阵;
对所述第二稀疏矩阵进行矩阵补全处理,得到调度矩阵;
根据所述调度矩阵确定第一调度方式,并根据所述第一调度方式将虚拟机部署在第一处理器上;所述虚拟机包括待测虚拟机和待调度虚拟机。
可选地,所述对所述第二稀疏矩阵进行矩阵补全处理,得到调度矩阵,包括:
对所述第二稀疏矩阵进行初次补全处理,得到第二矩阵;
识别所述第二矩阵对应的已有调度方式,并根据所述已有调度方式和全部调度方式确定缺失调度方式;
基于所述缺失调度方式,在所述第二矩阵中插入零数据行和/或零数据列,得到调度稀疏矩阵;
对所述调度稀疏矩阵进行二次补全处理,得到所述调度矩阵。
可选地,所述利用所述测试性能数据生成第一矩阵,包括:
利用所述测试性能数据组成第一稀疏矩阵,并对所述第一稀疏矩阵进行矩阵补全处理,得到第一矩阵。
可选地,所述对所述第一稀疏矩阵进行矩阵补全处理,得到第一矩阵,包括:
将所述第一稀疏矩阵输入基于随机梯度下降的隐因子模型中,得到所述第一矩阵。
可选地,所述根据所述调度矩阵确定第一调度方式,包括:
从所述调度矩阵中获取各个调度方式分别对应的至少一个性能数据;
利用所述性能数据得到各个所述调度方式对应的性能参数;
将最佳性能参数对应的所述调度方式确定为所述第一调度方式。
可选地,还包括:
监控各个所述虚拟机的运行状态,判断是否存在异常虚拟机;
若存在所述异常虚拟机,则利用所述异常虚拟机对应的真实性能数据生成重新调度矩阵;
判断所述重新调度矩阵中是否存在第二调度方式;所述第二调度方式对应的目标性能参数大于当前调度方式对应的当前性能参数;
若存在,则根据所述第二调度方式对所述虚拟机进行重新调度;
若不存在,则对非交互虚拟机进行处理器迁移或资源限制处理。
可选地,所述根据所述第二调度方式对所述虚拟机进行重新调度,包括:
判断所述第二调度方式的数量是否大于1;
若不大于1,则按照所述第二调度方式对所述虚拟机进行重新调度;
若大于1,则判断各个所述第二调度方式中是否存在非交互虚拟机调度方式;所述非交互虚拟机调度方式为对非交互虚拟机进行处理器迁移的调度方式;
若存在所述非交互虚拟机调度方式,则按照所述非交互虚拟机调度方式对所述虚拟机进行重新调度。
本申请还提供了一种虚拟机调度装置,包括:
测试模块,用于确定待测虚拟机,并将所述待测虚拟机放置于至少一个测试处理器上运行,得到至少一个测试性能数据;
性能数据采集模块,用于将至少一个待调度虚拟机分别放置于至少一个第一处理器上运行,得到至少一个第一性能数据,并将所述待测虚拟机放置于各个不同的第二处理器上运行,得到至少一个第二性能数据;
矩阵生成模块,用于利用所述测试性能数据生成第一矩阵,并利用所述第二性能数据、所述第一性能数据和所述第一矩阵生成第二稀疏矩阵;
矩阵补全模块,用于对所述第二稀疏矩阵进行矩阵补全处理,得到调度矩阵;
调度模块,用于根据所述调度矩阵确定第一调度方式,并根据所述第一调度方式将虚拟机部署在第一处理器上;所述虚拟机包括待测虚拟机和待调度虚拟机。
本申请还提供了一种电子设备,包括存储器和处理器,其中:
所述存储器,用于保存计算机程序;
所述处理器,用于执行所述计算机程序,以实现上述的虚拟机调度方法。
本申请还提供了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现上述的虚拟机调度方法。
本申请提供的虚拟机调度方法,确定待测虚拟机,并将待测虚拟机放置于至少一个测试处理器上运行,得到至少一个测试性能数据;将至少一个待调度虚拟机分别放置于至少一个第一处理器上运行,得到至少一个第一性能数据,并将待测虚拟机放置于各个不同的第二处理器上运行,得到至少一个第二性能数据;利用测试性能数据生成第一矩阵,并利用第二性能数据、第一性能数据和第一矩阵生成第二稀疏矩阵;对第二稀疏矩阵进行矩阵补全处理,得到调度矩阵;根据调度矩阵确定第一调度方式,并根据第一调度方式将虚拟机部署在第一处理器上;虚拟机包括待测虚拟机和待调度虚拟机。
可见,该方法以待测虚拟机为标准,通过将待测处理器上运行待测虚拟机,可以得到至少一个测试性能数据。测试性能数据可以表现出待测虚拟机在不同情况下的虚拟机性能。第二处理器为被指定的用于运行待测虚拟机的第一处理器,其数量为至少一个。当第二处理器发生变化时,由于运行待测虚拟机的处理器发生了变化,因此必然导致调度方式发生了变化,故此当选择不同的第二处理器时,对应于采用了不同的调度方式。通过多次选择第二处理器,分多次将待测虚拟机分别放置于不同的第二处理器上运行,同时将待调度虚拟机放置于第一处理器上运行,可以得到在多种调度方式下各个虚拟机的性能数据。由于虚拟机的调度方式过多,无法通过全部遍历的方式获取各个调度方式下的性能数据。因此利用测试性能数据生成第一矩阵,并将第一矩阵作为标准矩阵对没有遍历到的调度方式下的性能数据进行补全,即利用第二性能数据、第一性能数据和第一矩阵生成第二稀疏矩阵,并对第二稀疏矩阵进行补全。第二稀疏矩阵中的零元素即为当前未覆盖到的调度方式对应的性能数据,通过对第二稀疏矩阵进行矩阵补全处理,可以得到记录有全部调度方式对应的性能数据的调度矩阵,进一步可以基于调度矩阵确定第一调度方式,从而基于第一调度方式对虚拟机进行部署。该方法通过检测待测虚拟机在各种情况下的虚拟机性能,并利用第一矩阵作为标准对第二稀疏矩阵进行补全,使得得到的调度矩阵记录了各种调度方式下虚拟机的性能数据,因此调度矩阵对应的第一调度方式即为真实的最优解,按照第一调度方式调度虚拟机可以提高虚拟机调度过程的可靠性和有效性,最大程度地发挥虚拟机性能,解决了相关技术中虚拟机调度方式的可靠性和有效性较差,无法最大程度地使虚拟机发挥性能的问题。
此外,本申请还提供了一种虚拟机调度装置、电子设备及计算机可读存储介质,同样具有上述有益效果。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种虚拟机调度方法流程图;
图2为本申请实施例提供的一种具体的虚拟机调度方法流程图;
图3为本申请实施例提供的一种虚拟机调度装置的结构示意图;
图4为本申请实施例提供的一种虚拟机调度方法所适用的一种硬件组成框架示意图;
图5为本申请实施例提供的另一种虚拟机调度方法所适用的一种硬件组成框架示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
整个服务器集群由至少一个服务器组成,每个服务器具有若干个处理器(即cpu,centralprocessingunit),不同的处理器对应的计算能力、可分配内存大小、缓存容量大小、可分配存储容量大小、网络带宽等共享资源也不同,因此为了充分利用各种共享资源,使得服务器集群上的各个虚拟机能够发挥最佳的性能,需要对虚拟机进行调度。相关技术通常采用负载均衡的方式进行调度,尽量保持各个虚拟机的负载压力平衡。然而,这种基于贪心的调度均衡方法仅从负载的方面对虚拟机进行调度,得到的调度方案,即共享资源的分配方案,仅仅是从负载角度的理论层面上得到的资源分配方案,虚拟机的时机运行中可能会受到其他因素的影响。因此基于贪心的调度均衡方案无法准确在实际应用情况中对各个虚拟机实际需要的资源进行准确分配,无法与实际应用情况中各个虚拟机真实所需的调度方案直接等价,这种基于贪心的调度均衡方法得到的调度方案可能并不是最优方案,因此相关技术得到的虚拟机调度方式的可靠性和有效性较差。且相关技术通常从计算能力使用情况和内存使用情况两个方面反映虚拟机的负载情况,而虚拟机的共享资源并不仅仅为计算能力和内存,例如还可以包括存储容量、带宽、多级缓存等,因此无法准确反映虚拟机对各种共享资源的需求,负载情况不准确会进而导致调度准确率较低,无法最大程度地使虚拟机发挥性能。
为了解决上述问题,本申请提供了一种虚拟机调度方法。请参考图1,图1为本申请实施例提供的一种虚拟机调度方法流程图。该方法包括:
s101:确定待测虚拟机,并将待测虚拟机放置于至少一个测试处理器上运行,得到至少一个测试性能数据。
待测虚拟机可以为集群中的任意一个虚拟机,其具体内容不做限定,其用于在测试处理器上运行并得到对应的性能数据,即测试性能数据。需要说明的是,不同的测试处理器对应于不同的共享资源和/或压力等级,以便模拟不同的运行情况,因此得到的测试性能数据可以反映待测虚拟机在不同情况下的运行性能。为了提高调度准确性,本实施例中的共享资源包括处理器的计算资源、内存容量和内存带宽、存储容量和存储带宽、多级缓存大小,每个测试处理器可对应于一项共享资源。压力等级用于表示待测虚拟机在测试处理器上得到的共享资源地充裕程度,其具体形式不做限定。例如可以共分为十级,以处理器的计算能力为例,一级压力具体可以为待测虚拟机独享一个处理器的全部计算能力,二级压力具体可以为待测虚拟机与一个用于进行压力测试的标准虚拟机共享一个处理器的全部计算能力,三级压力具体可以为待测虚拟机与两个标准虚拟机共享一个处理器的全部计算能力,以此类推。可以理解的是,压力等级越大,待测虚拟机所处的运行环境越恶劣,待测虚拟机的性能越差,因此其对应的测试性能数据也越差。
本实施例并不限定测试性能参数的具体数量,由于共享资源和压力等级均具有至少一个,当每个测试处理器对应于一个压力等级和一个共享资源时,测试性能数据的数量最多可以为共享资源数与压力等级数的乘积。因此在一种实施方式中,可以预先为每个共享资源和压力等级的组合设置一个对应的测试处理器,以直接得到各个组合对应的测试性能数据。在另一种实施方式中,由于共享资源和压力等级的数量较多,因此可以为部分共享资源和压力等级的组合设置对应的测试处理器,进而得到部分组合对应的测试性能数据。本实施例并不限定测试性能数据的具体形式,例如可以采用单位时间内的指令数(instructionperclock,ipc,表示每个周期内运行的指令数)作为性能指标数据,在进行测试时,性能指标数据即为测试性能数据。
s102:将至少一个待调度虚拟机分别放置于至少一个第一处理器上运行,得到至少一个第一性能数据,并将待测虚拟机放置于各个不同的第二处理器上运行,得到至少一个第二性能数据。
需要说明的是,第一处理器即为集群中的所有处理器,可以在其中选择若干个作为第二处理器。类似的,也可以在其中选择若干个作为测试处理器,以便利用其得到测试性能数据。在确定待测虚拟机后,从集群对应的至少一个第一处理器中分多次依次选择一个作为第二处理器,作为用于运行待测虚拟机的处理器。可以理解的是,第二处理器可以多次选择,即选择多个第一处理器作为第二处理器,以便获取尽可能多的第一性能数据和第二性能数据。由于第二处理被指定用于运行待测虚拟机,因此当第二处理器的具体身份不同时,则说明采用了不同的虚拟机调度方式。待调度虚拟机为集群内除待测虚拟机以外的其他虚拟机,在选定第二处理器,确定待调度虚拟机位于第一处理器后,将待测虚拟机分别放置于各个第二处理器上,以便模拟不同的虚拟机调度方案。在待测虚拟机和待调度虚拟机放置完毕后,运行待测虚拟机得到其对应的第二性能数据,同时运行待调度虚拟机得到对应的第一性能数据。由于第二处理器的数量为至少一个,在每次确定第二处理器后,均可以得到第二性能数据和第一性能数据。可以理解的是,每次更换第二处理器时,待调度虚拟机也可以重新放置。
可以理解的是,由于待调度虚拟机和第一处理器的数量均为至少一个,因此待调度虚拟机在第一处理器上的放置方式存在多种,而每种不同的放置方式对应的性能数据必然不同。因此在每次确定第二处理器后,可以分别采用多种放置方式对待调度虚拟机进行放置,并获取对应的第一性能数据。可以理解的是,由于获取第一性能数据需要一定的时间,而虚拟机的数量和处理器的数量较多,因此导致放置方式的具体数量较多,无法通过遍历的方式获取各种放置方式对应的性能数据,而必然需要在后续利用矩阵补全的方式补全所有放置方式(即调度方式)对应的性能数据,因此在获取第一性能数据时,为了减少虚拟机调度所需的时长,可以在每次确定第二处理器后仅获取一组第一性能数据。
需要说明的是,本实施例并不限定第二性能数据、第一性能数据和测试性能数据的获取顺序,例如可以先获取测试性能数据,再获取第二性能数据和第一性能数据;或者可以先获取第二性能数据和第一性能数据,再获取测试性能数据。
s103:利用测试性能数据生成第一矩阵,并利用第二性能数据、第一性能数据和第一矩阵生成第二稀疏矩阵。
在得到测试性能数据、第二性能数据和第一性能数据后,可以利用测试性能数据生成第一矩阵,第一矩阵记录了待测虚拟机在全部压力等级和共享资源的组合下对应的测试性能数据,其可以作为标准数据对s102步骤中未获取到的调度方式对应的性能数据进行补全。由于第二性能数据和第一性能数据并不能覆盖各种调度方式,因此利用其与第一矩阵生成的矩阵必然为稀疏矩阵,可以将其称为第二稀疏矩阵。稀疏矩阵即为其中零元素数量远大于非零元素数量的矩阵。需要说明的是,本实施例并不限定第一矩阵的具体生成方式,在一种实施方式中,若测试性能数据包括了全部压力等级和共享资源的组合时,可以直接利用其组成第一矩阵;在另一种实施方式中,若测试性能数据不包括全部压力等级和共享资源的组合时,可以利用测试性能数据生成第一稀疏矩阵,并对其进行补全处理,得到第一矩阵。
s104:对第二稀疏矩阵进行矩阵补全处理,得到调度矩阵。
在得到第二稀疏矩阵后,对其进行矩阵补全处理,记得得到对应的调度矩阵。由于第二稀疏矩阵中包括有第一矩阵,因此其可以以第一矩阵为基础对第二稀疏矩阵中的零元素进行修改,即对第二稀疏矩阵中未覆盖到的调度方式对应的性能数据进行补全,进而得到调度矩阵。本实施例并不限定具体的补全方式,例如可以利用神经网络模型对第二稀疏矩阵进行补全处理。神经网络模型具体可以为隐因子模型。
s105:根据调度矩阵确定第一调度方式,并根据第一调度方式将虚拟机部署在第一处理器上。
需要说明的是,本实施例中的虚拟机包括待测虚拟机和待调度虚拟机。在得到调度矩阵后,由于调度矩阵中记录了各种调度方式对应的性能数据,因此可以从中确定第一调度方式。第一调度方式的具体内容不做限定,其可以为所有虚拟机的平均性能数据最佳的调度方式,或者可以为所有虚拟机总性数据最佳的调度方式。根据第一调度方式将虚拟机部署在第一处理器上,即可完成对虚拟机的调度。
应用本申请实施例提供的虚拟机调度方法,以待测虚拟机为标准,通过将待测处理器上运行待测虚拟机,可以得到至少一个测试性能数据。测试性能数据可以表现出待测虚拟机在不同情况下的虚拟机性能。第二处理器为被指定的用于运行待测虚拟机的第一处理器,其数量为至少一个。当第二处理器发生变化时,由于运行待测虚拟机的处理器发生了变化,因此必然导致调度方式发生了变化,故此当选择不同的第二处理器时,对应于采用了不同的调度方式。通过多次选择第二处理器,分多次将待测虚拟机分别放置于不同的第二处理器上运行,同时将待调度虚拟机放置于第一处理器上运行,可以得到在多种调度方式下各个虚拟机的性能数据。由于虚拟机的调度方式过多,无法通过全部遍历的方式获取各个调度方式下的性能数据。因此利用测试性能数据生成第一矩阵,并将第一矩阵作为标准矩阵对没有遍历到的调度方式下的性能数据进行补全,即利用第二性能数据、第一性能数据和第一矩阵生成第二稀疏矩阵,并对第二稀疏矩阵进行补全。第二稀疏矩阵中的零元素即为当前未覆盖到的调度方式对应的性能数据,通过对第二稀疏矩阵进行矩阵补全处理,可以得到记录有全部调度方式对应的性能数据的调度矩阵,进一步可以基于调度矩阵确定性能最佳的第一调度方式,从而基于第一调度方式对虚拟机进行部署。该方法通过检测待测虚拟机在各种情况下的虚拟机性能,并利用第一矩阵作为标准对第二稀疏矩阵进行补全,使得得到的调度矩阵记录了各种调度方式下虚拟机的性能数据,因此调度矩阵对应的第一调度方式即为真实的最优解,按照第一调度方式调度虚拟机可以提高虚拟机调度过程的可靠性和有效性,最大程度地发挥虚拟机性能,解决了相关技术中虚拟机调度方式的可靠性和有效性较差,无法最大程度地使虚拟机发挥性能的问题。
基于上述实施例,本实施例将对上述实施例中的若干步骤进行具体阐述。在一种可行的实施方式中,为了提高虚拟机调度的速度,利用测试性能数据生成第一矩阵的过程可以包括如下步骤:
步骤11:利用测试性能数据组成第一稀疏矩阵,并对第一稀疏矩阵进行矩阵补全处理,得到第一矩阵。
在本实施例中,由于获取测试性能数据需要待测虚拟机在测试处理器上运行一定时长,因此为了提高获取调度矩阵的速度,可以获取部分压力等级和共享资源对应的测试性能数据,并利用其组成第一稀疏矩阵。通过对第一稀疏矩阵进行矩阵补全处理即可得到对应的第一矩阵。具体的,为了提高矩阵补全处理的速度,生成第一矩阵的过程可以包括:
步骤21:将第一稀疏矩阵输入基于随机梯度下降的隐因子模型中,得到第一矩阵。
在本实施例中,利用隐因子模型进行矩阵补全处理,隐因子模型即为lfm(latentfactormodel)模型,其用于关联对象属性和特征,是一种在推荐系统中应用相当普遍的一种模型,通过对所有的对象进行分类,则可以根据用户的兴趣分类给用户推荐该分类中的对象。随机梯度下降即为sgd(stochasticgradientdescent),是每次迭代使用一个样本来对参数进行更新的迭代算法,通常用于求解最小二乘问题。通过采用随机梯度下降,可以提高训练速度,进而提高第一矩阵的生成速度。lfm可以假设存在一个完整的矩阵,其输出可以视作输入矩阵的矩阵和乘积。具体的,可以采用如下损失函数作为隐因子模型的损失函数:
在进行sgd迭代时,可以修改p矩阵和q矩阵,迭代过程为:
puf=puf+α((rui-pufqfi)-λpuf)
qfi=qfi+α((rui-pufqfi)-λquf)
其中,α和λ为常数,rui为输入矩阵的第u行第i列的元素,r’ui为输出矩阵的第u行第i列的元素,f为隐因子模型中隐因子的个数,同样为分类的类别数。
基于上述实施例,在一种可行的实施方式中,为了节省获取第一性能数据和第二性能数据所需的时间,可能无法将各个第一处理器都确定为第二处理器,因此为了提高虚拟机调度的速度和调度矩阵的准确性,对第二稀疏矩阵进行矩阵补全处理,得到调度矩阵的过程可以包括如下步骤:
步骤31:对第二稀疏矩阵进行初次补全处理,得到第二矩阵。
由于第二稀疏矩阵由第一性能数据和第二性能数据,而第一性能数据和第二性能数据没有完全覆盖全部的调度方式,因此在进行矩阵补全时,可能无法对所有调度方式进行补全。例如当存在1、2、3三个处理器,a为待测虚拟机时,若第二稀疏矩阵中仅包括a处于1处理器和a处于2处理器上的性能数据,则对第二稀疏矩阵直接进行矩阵补全后得到的调度矩阵可能无法对a处于3处理器上的性能数据进行补全,造成数据缺失,使得调度矩阵准确性下降。同时,即便可以直接进行补全,一次矩阵补全得到完整的调度矩阵所需的时长较长。为了解决这个问题,本申请采用两次调度对稀疏矩阵进行补全,第一次补全为直接对第二稀疏矩阵进行补全,得到对应的第二矩阵。
步骤32:识别第二矩阵对应的已有调度方式,并根据已有调度方式和全部调度方式确定缺失调度方式。
在得到第二矩阵后,识别其中已有的调度方式,并根据全部调度方式确定缺失调度方式,缺失调度方式为第二矩阵中缺失的调度方式,其具体为待测虚拟机处于非第二处理器的第一处理器时对应的调度方5f0f。本实施例并限定确定缺失调度方式的具体方式,由于调度方式实际就是各个虚拟机在各个处理器上放置位置的排列组合,因此可以根据第二矩阵中已有的组合与全部组合做差,得到对应的缺失调度方式。
步骤33:基于缺失调度方式,在第二矩阵中插入零数据行和/或零数据列,得到调度稀疏矩阵。
根据缺失调度方式,在第二矩阵中插入新的零数据行和/或零数据列,表示缺失调度方式的性能数据。由于得到的新矩阵中存在大量零数据,因此可以称其为调度稀疏矩阵。
步骤34:对调度稀疏矩阵进行二次补全处理,得到调度矩阵。
通过对调度稀疏矩阵进行矩阵补全处理,即进行二次补全处理,即可得到覆盖了全部调度方式的调度矩阵。
在得到调度矩阵后,由于性能数据可能无法直接表示调度方式之间的优劣,即利用性能数据无法直接确定第一调度方式。因此根据调度矩阵确定第一调度方式的过程可以包括如下步骤:
步骤41:从调度矩阵中获取各个调度方式分别对应的至少一个性能数据;
其中,性能数据包括待测虚拟机和待调度虚拟机的性能数据。
步骤42:利用性能数据计算各个调度方式对应的性能参数;
由于性能数据无法直接确定第一调度方式,但是其可以体现调度方式的优劣,因此可以利用其计算调度方式对应的性能参数,通过计算的过程对数据进行处理,得到可以准确评价各个性能数据的优劣的性能参数。性能参数的具体数量和形式不做限定,例如可以为至少一个,形式可以为平均值、加权平均值、方差、标准差等。
步骤43:将最佳性能参数对应的调度方式确定为第一调度方式。
在得到各个性能参数后,从中确定最佳性能参数,并将其对应的调度方式确定为第一调度方式。根据性能参数的形式不同,确定最佳性能参数的方式也可以不同。当性能参数为平均值形式时,最佳性能参数可以为最大值;当性能参数为方差形式时,最佳性能参数可以为最小值。
基于上述实施例,在一种可行的实施方式中,再一次虚拟机调度后的实际运行中,某些虚拟机可能无法达到正常的运行状态,降低了整个集群的性能。为了解决上述问题,还可以包括如下步骤:
步骤51:监控各个虚拟机的运行状态,判断是否存在异常虚拟机;
本实施例并不限定异常虚拟机的具体判断方式,例如可以判断某一虚拟机的性能数据是否小于预设性能阈值,若小于则确定该虚拟机为异常虚拟机;或者可以判断某一虚拟机的性能数据是否小于当前调度方式中该虚拟机对应的最低性能值,最低性能值为调度矩阵中该虚拟机对应的性能数据减去误差数据得到的值,若小于则确定该虚拟机为异常虚拟机。
步骤52:若存在异常虚拟机,则利用异常虚拟机对应的真实性能数据生成重新调度矩阵;
若检测到存在异常虚拟机,则可以将其真实的性能数据(即实际运行时得到的运行数据)作为测试性能数据生成对应的调度矩阵,即重新调度矩阵。
步骤53:判断重新调度矩阵中是否存在第二调度方式。
需要说明的是,本实施例中第二调度方式对应的目标性能参数大于当前调度方式对应的当前性能参数。
步骤54:若存在,则根据第二调度方式对虚拟机进行重新调度;
步骤55:若不存在,则对非交互虚拟机进行处理器迁移或资源限制处理。
若存在第二调度方式,则说明当前调度方式已经不是最优的调度方式,需要进行重新调度,因此根据第二调度方式进行重新调度。若不存在第二调度方式,则说明当前已经是最优的调度方式,集群已经达到其上限,为了保证集群与外界的交互不受影响,可以对非交互虚拟机进行处理器迁移或资源限制处理。非交互虚拟机即为不与外界进行交互的虚拟机,其具体内容不做限定,通过限制非交互虚拟机对共享资源的使用,可以使得交互虚拟机具有充足的资源运行,保证集群与外界的正常交互。处理器迁移处理是指将非交互虚拟机迁移至曾经运行过的处理器上,虚拟机与曾经运行过的处理器通常更加契合,更加契合通常会使得虚拟机的性能更好。
进一步的,为了在重新调度的过程中减少对集群与外界之间的数据交互的影响,根据第二调度方式对虚拟机进行重新调度的过程可以包括如下步骤:
步骤61:判断第二调度方式的数量是否大于1。
在确定存在第二调度方式时,可以判断其数量是否为1,即判断是否可以根据实际需要选择其中的一个进行重新调度。
步骤62:若不大于1,则按照第二调度方式对虚拟机进行重新调度。
若其数量不大于1,则说明仅有一个第二调度方式,因此按照该方式对虚拟机进行重新调度。
步骤63:若大于1,则判断各个第二调度方式中是否存在非交互虚拟机调度方式。
需要说明的是,本实施例中的非交互虚拟机调度方式为对非交互虚拟机进行处理器迁移的调度方式。虚拟机重新调度的过程就是将虚拟机从一个处理器迁移到另一个处理器的过程,由于对非交互虚拟机进行迁移并不会对集群与外界的交互造成影响,而交互虚拟机需要与外界进行交互,对交互虚拟机进行迁移则必然会对集群与外界的交互造成影响,因此当第二调度方式的数量大于一个时,判断其中是否存在仅对非交互虚拟机进行处理器迁移的调度方式。
步骤64:若存在非交互虚拟机调度方式,则按照非交互虚拟机调度方式对虚拟机进行重新调度。
若存在非交互虚拟机调度方式,则按照其进行重新调度。通过避免对交互虚拟机进行迁移,可以避免在重新调度的过程中减少对集群与外界之间的数据交互的影响。
请参考图2,图2为本申请实施例提供的一种具体的虚拟机调度方法流程图。在本实施例中,可以在有新的虚拟机进入集群时,将新的虚拟机确定为待测虚拟机进而进行虚拟机调度。其中数据采集即为获取测试性能数据、第一性能数据和第二性能数据的过程,数据分析为生成调度矩阵的过程,调度即为确定第一调度方式并部署虚拟机的过程。在调度完毕后,可以判断各个虚拟机时是否满足性能要求,若存在某一虚拟机不满足性能要求,则基于其其运行时产生的真实性能数据进行数据更新,即将真实性能数据确定为新的测试性能数据并重新进行数据采集和数据分析,并重新进行调度。
下面对本申请实施例提供的虚拟机调度装置进行介绍,下文描述的虚拟机调度装置与上文描述的虚拟机调度方法可相互对应参照。
请参考图3,图3为本申请实施例提供的一种虚拟机调度装置的结构示意图,包括:
测试模块110,用于确定待测虚拟机,并将待测虚拟机放置于至少一个测试处理器上运行,得到至少一个测试性能数据;
性能数据采集模块120,用于将至少一个待调度虚拟机分别放置于至少一个第一处理器上运行,得到至少一个第一性能数据,并将待测虚拟机放置于各个不同的第二处理器上运行,得到至少一个第二性能数据;
矩阵生成模块130,用于利用测试性能数据生成第一矩阵,并利用第二性能数据、第一性能数据和第一矩阵生成第二稀疏矩阵;
矩阵补全模块140,用于对第二稀疏矩阵进行矩阵补全处理,得到调度矩阵;
调度模块150,用于根据调度矩阵确定第一调度方式,并根据第一调度方式将虚拟机部署在第一处理器上;虚拟机包括待测虚拟机和待调度虚拟机。
可选地,矩阵补全模块140,包括:
初次补全单元,用于对第二稀疏矩阵进行初次补全处理,得到第二矩阵;
缺失调度方式确定单元,用于识别第二矩阵对应的已有调度方式,并根据已有调度方式和全部调度方式确定缺失调度方式;
零数据插入单元,用于基于缺失调度方式,在第二矩阵中插入零数据行和/或零数据列,得到调度稀疏矩阵;
二次补全单元,用于对调度稀疏矩阵进行二次补全处理,得到调度矩阵。
可选地,矩阵生成模块130,包括:
输入单元,用于利用测试性能数据组成第一稀疏矩阵,并对第一稀疏矩阵进行矩阵补全处理,得到第一矩阵。
可选地,输入单元,包括:
隐因子模型输入子单元,用于将第一稀疏矩阵输入基于随机梯度下降的隐因子模型中,得到第一矩阵。
可选地,调度模块150,包括:
性能数据获取单元,用于从调度矩阵中获取各个调度方式分别对应的至少一个性能数据;
性能参数计算单元,用于利用性能数据计算各个调度方式对应的性能参数;
第一调度方式确定单元,用于将最佳性能参数对应的调度方式确定为第一调度方式。
可选地,还包括:
异常虚拟机判断模块,用于监控各个虚拟机的运行状态,判断是否存在异常虚拟机;
重新调度矩阵生成模块,用于若存在异常虚拟机,则利用异常虚拟机对应的真实性能数据生成重新调度矩阵;
第二调度方式确定模块,用于判断重新调度矩阵中是否存在第二调度方式;第二调度方式对应的目标性能参数大于当前调度方式对应的当前性能参数;
重新调度模块,用于若存在,则根据第二调度方式对虚拟机进行重新调度;
限制处理模块,用于若不存在,则对非交互虚拟机进行处理器迁移或资源限制处理。
可选地,重新调度模块,包括:
数量判断单元,用于判断第二调度方式的数量是否大于1;
第一重新调度单元,用于若不大于1,则按照第二调度方式对虚拟机进行重新调度;
方案判断单元,用于若大于1,则判断各个第二调度方式中是否存在非交互虚拟机调度方式;非交互虚拟机调度方式为对非交互虚拟机进行处理器迁移的调度方式;
第二重新调度单元,用于若存在非交互虚拟机调度方式,则按照非交互虚拟机调度方式对虚拟机进行重新调度。
下面对本申请实施例提供的电子设备进行介绍,下文描述的电子设备与上文描述的虚拟机调度方法可相互对应参照。
请参考图4,图4为本申请实施例提供的一种虚拟机调度方法所适用的一种硬件组成框架示意图。其中电子设备100可以包括处理器101和存储器102,还可以进一步包括多媒体组件103、信息输入/信息输出(i/o)接口104以及通信组件105中的一种或多种。
其中,处理器101用于控制电子设备100的整体操作,以完成上述的虚拟机调度方法中的全部或部分步骤;存储器102用于存储各种类型的数据以支持在电子设备100的操作,这些数据例如可以包括用于在该电子设备100上操作的任何应用程序或方法的指令,以及应用程序相关的数据。该存储器102可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(staticrandomaccessmemory,sram)、电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,eeprom)、可擦除可编程只读存储器(erasableprogrammableread-onlymemory,eprom)、可编程只读存储器(programmableread-onlymemory,prom)、只读存储器(read-onlymemory,rom)、磁存储器、快闪存储器、磁盘或光盘中的一种或多种。在本实施例中,存储器102中至少存储有用于实现以下功能的程序和/或数据:
确定待测虚拟机,并将所述待测虚拟机放置于至少一个测试处理器上运行,得到至少一个测试性能数据;
将至少一个待调度虚拟机分别放置于至少一个第一处理器上运行,得到至少一个第一性能数据,并将所述待测虚拟机放置于各个不同的第二处理器上运行,得到至少一个第二性能数据;
利用所述测试性能数据生成第一矩阵,并利用所述第二性能数据、所述第一性能数据和所述第一矩阵生成第二稀疏矩阵;
对所述第二稀疏矩阵进行矩阵补全处理,得到调度矩阵;
根据所述调度矩阵确定第一调度方式,并根据所述第一调度方式将虚拟机部署在第一处理器上;所述虚拟机包括待测虚拟机和待调度虚拟机。
多媒体组件103可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器102或通过通信组件105发送。音频组件还包括至少一个扬声器,用于输出音频信号。i/o接口104为处理器101和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件105用于电子设备100与其他设备之间进行有线或无线通信。无线通信,例如wi-fi,蓝牙,近场通信(nearfieldcommunication,简称nfc),2g、3g或4g,或它们中的一种或几种的组合,因此相应的该通信组件105可以包括:wi-fi部件,蓝牙部件,nfc部件。
电子设备100可以被一个或至少一个应用专用集成电路(applicationspecificintegratedcircuit,简称asic)、数字信号处理器(digitalsignalprocessor,简称dsp)、数字信号处理设备(digitalsignalprocessingdevice,简称dspd)、可编程逻辑器件(programmablelogicdevice,简称pld)、现场可编程门阵列(fieldprogrammablegatearray,简称fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述实施例给出的虚拟机调度方法。
当然,图4所示的电子设备100的结构并不构成对本申请实施例中电子设备的限定,在实际应用中电子设备100可以包括比图4所示的更多或更少的部件,或者组合某些部件。
可以理解的是,本申请实施例中并不对电子设备的数量进行限定,其可以是至少一个电子设备共同协作完成虚拟机调度方法。在一种可能的实施方式中,请参考图5,图5为本申请实施例提供的另一种虚拟机调度方法所适用的硬件组成框架示意图。由图5可知,该硬件组成框架可以包括:第一电子设备11和第二电子设备12,二者之间通过网络13连接。
在本申请实施例中,第一电子设备11与第二电子设备12的硬件结构可以参考图4中电子设备100。即可以理解为本实施例中具有两个电子设备100,两者进行数据交互。进一步,本申请实施例中并不对网络13的形式进行限定,即,网络13可以是无线网络(如wifi、蓝牙等),也可以是有线网络。
其中,第一电子设备11和第二电子设备12可以是同一种电子设备,如第一电子设备11和第二电子设备12均为服务器;也可以是不同类型的电子设备,例如,第一电子设备11可以是服务器,第二电子设备12可以是计算机。第一电子设备11和第二电子设备12之间的交互行为可以为:服务器进行测试性能数据、第一性能数据和第二性能数据的采集,并将其发送给计算机,计算机利用其生成调度矩阵,并确定第一调度方式后将第一调度方式发送给服务器,服务器利用第一调度方式进行虚拟机调度。
下面对本申请实施例提供的计算机可读存储介质进行介绍,下文描述的计算机可读存储介质与上文描述的虚拟机调度方法可相互对应参照。
本申请还提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述的虚拟机调度方法的步骤。
该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本领域技术人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应该认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系属于仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语包括、包含或者其他任何变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。