CN110673927B - 一种虚拟机的调度方法和装置 - Google Patents
一种虚拟机的调度方法和装置 Download PDFInfo
- Publication number
- CN110673927B CN110673927B CN201910925514.0A CN201910925514A CN110673927B CN 110673927 B CN110673927 B CN 110673927B CN 201910925514 A CN201910925514 A CN 201910925514A CN 110673927 B CN110673927 B CN 110673927B
- Authority
- CN
- China
- Prior art keywords
- host
- thread
- task
- available memory
- remaining available
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45583—Memory management, e.g. access or allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例公开了一种虚拟机的调度方法和装置,应用于主机集群,该主机集群包括多台主机,每台主机上配置有多个虚拟机VM,包括:将主机集群中具有待处理任务的VM放入多个线程中,每个线程包括预设数量的VM,采用多线程排队分批处理的机制,各线程依次对其中包括的VM的待处理任务进行处理,也就是说,上一个线程处理到满足预设条件作为触发下一个线程开始对其中包括的VM的待处理任务进行处理的条件,这样,避免同时对大量待处理任务进行并行操作导致主机集群中主机的内存超分,从而影响该主机的性能以及其上虚拟机的正常运行的问题,能够一定程度上有效的避免主机内存超分,确保主机以及其上虚拟机的正常运行。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种虚拟机的调度方法和装置。
背景技术
通常,在主机上配置多个虚拟机(英文:Virtual Machine,简称:VM),每个VM独立运行在主机上,且这些VM上可以安装各种软件和应用程序,丰富该主机上支持的服务,以提高主机的性能。主机上配置有主机内存,且在其上构建VM时也会为其分配配置内存,而且每个主机确定数值在0.8~1.2之间的任意值作为虚拟化度。
但是,为了确保主机以及其上虚拟机的正常运行,需要确保主机不超分,即,确保主机上构建的所有VM的配置内存之和不超过主机内存和虚拟化度的乘积,因为主机超分的情况下,如果所有VM满负荷运行,不仅导致主机性能下降,而且VM上部署的软件和应用程序等也会出现卡顿甚至无法开机等问题。
在很多情况下,需要快速启动大量的虚拟机,例如:对主机上所有的VM进行开机操作,或者,需要一次性迁移大量的虚拟机,例如:某个主机宕机,需要将其上所有VM都迁移到其他主机上,极容易出现主机内存超分的问题。基于此,目前亟待提出合理的虚拟机调度机制,能够有效的避免主机内存超分,确保主机以及其上虚拟机的正常运行。
发明内容
本申请所要解决的技术问题是,提供一种虚拟机的调度方法和装置,以使得在需要对大量的虚拟机进行操作的情况下,也能够在确保主机不超分的前提下合理且有效的完成对每个虚拟机的调度,从而能够保证主机以及其上虚拟机的正常运行。
第一方面,提供了一种虚拟机的调度方法,应用于主机集群,所述主机集群包括多台主机,每台主机上配置有多个虚拟机VM,所述方法包括:
将所述主机集群中具有待处理任务的VM放入多个线程中,每个所述线程包括预设数量的所述VM,所述多个线程中包括第一线程和第二线程;
对所述第一线程中的VM对应的待处理任务进行处理;
当对所述第一线程中VM的处理满足预设条件时,对所述第二线程中的VM对应的待处理任务进行处理。
可选地,所述方法还包括:
检测到所述主机集群中的第一主机宕机,则,将所述第一主机上的每个第一VM对应分配所述VM迁移任务。
可选地,所述对所述第一线程中的VM对应的待处理任务进行处理,包括:
基于所述主机集群中除所述第一主机之外的其他主机的剩余可用内存,对所述第一线程中的每个所述第一VM,确定符合迁移条件的第二主机;
更新所述第二主机的剩余可用内存为第二剩余可用内存,所述第二剩余可用内存为将所述第二主机的第一剩余可用内存减去该第一VM的配置内存得到的;
基于所述第二剩余可用内存,确定将该第一VM迁移至所述第二主机。
可选地,所述基于所述主机集群中除所述第一主机之外的其他主机的剩余可用内存,对所述第一线程中的每个所述第一VM,确定符合迁移条件的第二主机,包括:
基于所述主机集群中除所述第一主机之外的其他主机的剩余可用内存,对所述第一线程中的每个所述第一VM,确定符合迁移条件的至少一个第三主机;
将所述至少一个第三主机中剩余可用内存最大的主机,确定为所述第二主机。
可选地,所述迁移条件包括:
主机开机条件,存储未挂载,网络连接正常,以及剩余可用内存大于该第一VM的配置内存。
可选地,所述基于所述第二剩余可用内存,确定将该第一VM迁移至所述第二主机,包括:
若根据所述第二剩余可用内存确定允许迁移,则,将该第一VM迁移至所述第二主机;
若根据所述第二剩余可用内存确定拒绝迁移,则,生成迁移失败消息,并释放所述第二主机为该第一VM分配的配置内存,更新所述第二主机的剩余可用内存为所述第一剩余可用内存。
可选地,当所述待处理任务还包括VM开机任务时,所述将该第一VM迁移至所述第二主机之后,所述方法还包括:
将该第一VM在所述第二主机进行所述VM开机任务;
当所述VM开机任务的执行进度达到预设进度阈值时,对所述第一线程中的下一个所述第一VM执行所述确定符合迁移条件的第二主机以及之后的操作。
可选地,所述第一线程中VM的处理满足预设条件,具体为:所述第一线程中的最后一个所述第一VM在迁移后的第四主机中,进行所述VM开机任务的执行进度达到所述预设进度阈值。
可选地,当所述待处理任务包括VM开机任务时,所述对所述第一线程中的VM对应的待处理任务进行处理,包括:
开始对所述第一线程中的第五VM进行调度时,为所述第一线程中的其他VM添加排它锁;
对所述第五VM执行所述VM开机任务;
当所述第五VM的所述VM开机任务的执行进度达到预设进度阈值时,开始对所述第一线程中的第六VM进行调度,为所述第一线程中的其他VM添加排它锁。
可选地,所述对所述第五VM执行所述VM开机任务,包括:
当确定配置所述第五VM的源主机符合开机条件时,将所述第五VM在所述源主机上进行所述VM开机任务;
当确定配置所述第五VM的所述源主机不符合开机条件时,基于所述主机集群中除所述源主机之外的其他主机的剩余可用内存,确定符合迁移条件的至少一个待迁移主机;
将所述至少一个待迁移主机中剩余可用内存最大的主机,确定为目标主机;
将所述第五VM迁移至所述目标主机,并且将所述第五VM在所述目标主机上进行所述VM开机任务。
可选地,当所述主机集群中第五主机中的运行参数满足预设调度条件时,所述方法还包括:
对所述第五主机中的VM进行分布式资源调度DRS;
其中,所述运行参数包括所述第五主机中实际的内存占用率和中央处理器CPU利用率中的至少一个,所述预设调度条件包括内存占用阈值和CPU利用率阈值中的至少一个。
第二方面,还提供了一种虚拟机的调度装置,应用于主机集群,所述主机集群包括多台主机,每台主机上配置有多个虚拟机VM,所述装置包括:
线程设置单元,用于将所述主机集群中具有待处理任务的VM放入多个线程中,每个所述线程包括预设数量的所述VM,所述多个线程中包括第一线程和第二线程;
第一处理单元,用于对所述第一线程中的VM对应的待处理任务进行处理;
第二处理单元,用于当对所述第一线程中VM的处理满足预设条件时,对所述第二线程中的VM对应的待处理任务进行处理。
可选地,所述装置还包括:
分配单元,用于检测到所述主机集群中的第一主机宕机,则,将所述第一主机上的每个第一VM对应分配所述VM迁移任务。
可选地,所述第一处理单元,包括:
第一确定子单元,用于基于所述主机集群中除所述第一主机之外的其他主机的剩余可用内存,对所述第一线程中的每个所述第一VM,确定符合迁移条件的第二主机;
更新子单元,用于更新所述第二主机的剩余可用内存为第二剩余可用内存,所述第二剩余可用内存为将所述第二主机的第一剩余可用内存减去该第一VM的配置内存得到的;
第二确定子单元,用于基于所述第二剩余可用内存,确定将该第一VM迁移至所述第二主机。
可选地,所述第一确定子单元,包括:
第三确定子单元,用于基于所述主机集群中除所述第一主机之外的其他主机的剩余可用内存,对所述第一线程中的每个所述第一VM,确定符合迁移条件的至少一个第三主机;
第四确定子单元,用于将所述至少一个第三主机中剩余可用内存最大的主机,确定为所述第二主机。
可选地,所述迁移条件包括:
主机开机条件,存储未挂载,网络连接正常,以及剩余可用内存大于该第一VM的配置内存。
可选地,所述第二确定子单元,包括:
迁移子单元,用于若根据所述第二剩余可用内存确定允许迁移,则,将该第一VM迁移至所述第二主机;
释放子单元,用于若根据所述第二剩余可用内存确定拒绝迁移,则,生成迁移失败消息,并释放所述第二主机为该第一VM分配的配置内存,更新所述第二主机的剩余可用内存为所述第一剩余可用内存。
可选地,所述装置还包括:
第一开机单元,用于当所述待处理任务还包括VM开机任务时,所述将该第一VM迁移至所述第二主机之后,将该第一VM在所述第二主机进行所述VM开机任务;
第三处理单元,用于当所述VM开机任务的执行进度达到预设进度阈值时,对所述第一线程中的下一个所述第一VM执行所述确定符合迁移条件的第二主机以及之后的操作。
可选地,所述第一线程中VM的处理满足预设条件,具体为:所述第一线程中的最后一个所述第一VM在迁移后的第四主机中,进行所述VM开机任务的执行进度达到所述预设进度阈值。
可选地,当所述待处理任务包括VM开机任务时,所述第一处理单元,包括:
第一添加子单元,用于开始对所述第一线程中的第五VM进行调度时,为所述第一线程中的其他VM添加排它锁;
第一开机子单元,用于对所述第五VM执行所述VM开机任务;
第二添加子单元,用于当所述第五VM的所述VM开机任务的执行进度达到预设进度阈值时,开始对所述第一线程中的第六VM进行调度,为所述第一线程中的其他VM添加排它锁。
可选地,所述第一开机子单元,包括:
第二开机子单元,用于当确定配置所述第五VM的源主机符合开机条件时,将所述第五VM在所述源主机上进行所述VM开机任务;
第五确定子单元,用于当确定配置所述第五VM的所述源主机不符合开机条件时,基于所述主机集群中除所述源主机之外的其他主机的剩余可用内存,确定符合迁移条件的至少一个待迁移主机;
第六确定子单元,用于将所述至少一个待迁移主机中剩余可用内存最大的主机,确定为目标主机;
迁移开机子单元,用于将所述第五VM迁移至所述目标主机,并且将所述第五VM在所述目标主机上进行所述VM开机任务。
可选地,所述装置还包括:
DRS单元,用于当所述主机集群中第五主机中的运行参数满足预设调度条件时,对所述第五主机中的VM进行分布式资源调度DRS;
其中,所述运行参数包括所述第五主机中实际的内存占用率和中央处理器CPU利用率中的至少一个,所述预设调度条件包括内存占用阈值和CPU利用率阈值中的至少一个。
第三方面,还提供了一种设备,所述设备包括处理器以及存储器:
所述存储器用于存储计算机程序;
所述处理器用于根据所述计算机程序执行上述第一方面提供的所述的方法。
第四方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行上述第一方面提供的所述的方法。
在本申请实施例中,提供了一种虚拟机的调度方法,应用于主机集群,该主机集群包括多台主机,每台主机上配置有多个虚拟机VM,该方法具体可以包括:将主机集群中具有待处理任务的VM放入多个线程中,每个线程包括预设数量的VM,多个线程中可以包括第一线程和第二线程;先对第一线程中的VM对应的待处理任务进行处理;当对第一线程中VM的处理满足预设条件时,再对第二线程中的VM对应的待处理任务进行处理。可见,通过本申请实施例提供的方法,可以在主机集群中大量VM的并行批量处理(例如:批量迁移和批量开机)时,通过将大量的VM放入多个线程,采用多线程排队分批处理的机制,各线程依次对其中包括的VM的待处理任务进行处理,也就是说,上一个线程处理到一定程度(即,满足预设条件)作为触发下一个线程开始对其中包括的VM的待处理任务进行处理的条件,这样,可以避免同时对大量待处理任务进行并行操作导致主机集群中主机的内存超分,从而影响该主机的性能以及其上虚拟机的正常运行的问题,本申请实施例提供的更加合理的多线程排队分批处理的机制,能够一定程度上有效的避免主机内存超分,确保主机以及其上虚拟机的正常运行。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本申请实施例中一主机集群的示意图;
图2为本申请实施例中一种虚拟机的调度方法的流程示意图;
图3为本申请实施例中步骤202一实现方式的流程示意图;
图4为本申请实施例中步骤202另一实现方式的流程示意图;
图5为本申请实施例中一种虚拟机的调度装置的结构示意图;
图6为本申请实施例中一种设备的结构示意图。
具体实施方式
参见图1,为一主机集群的示意图,该主机集群中,可以包括:主机10、主机20和主机30,其中,主机10上可以配置有VM 101、VM 102、……VM10n(其中,n表示主机10中配置的VM的总数,n的取值为大于1的整数),同理,主机20上可以配置有VM 201、VM 202、……VM20m(其中,m表示主机20中配置的VM的总数,m的取值为大于1的整数),主机30上可以配置有VM 301、VM 302、……VM 30k(其中,k表示主机30中配置的VM的总数,k的取值为大于1的整数)。需要说明的是,上述图1所示的主机集群仅仅是为了说明本申请实施例的应用场景所作的示例性的说明,主机集群中也可以包括更多的主机。
以主机10为例,假设主机10上配置的主机内存为128G,自身运行需要占用8G,其上配置的VM的配置内存为4G,且每个VM自身占用200M,那么,该主机10上最多可以配置(128-8)/4.2约等于28个VM,当该主机10上配置的VM个数(即,n的取值)大于28,例如配置29个VM,则,可以认为该主机10出现超分,如果其上所有VM满负荷运行,不仅导致主机10性能下降,而且VM上部署的软件和应用程序等也会出现卡顿甚至无法开机等问题。
上述由于在主机上本身配置的VM过多或每个VM配置内存过大导致的主机内存超分,尚可在配置之初克服,但是,发明人经过研究发现,在很多情况下,需要快速启动或快速迁移大量的虚拟机,也极容易出现主机内存超分的问题,例如:对主机上所有的VM进行开机操作,又例如:某个主机宕机,需要将其上所有VM都迁移到其他主机上,这些情况下,主机内存超分可以是指:主机上构建的所有VM的配置内存之和不超过主机内存和虚拟化度的乘积,其中,虚拟化度是指主机配置的额数值在0.8~1.2之间的任意值,例如1.2。可见,在需要对大量的虚拟机进行操作的情况下,为了尽可能的克服主机内存超分的问题,需要配置合理的虚拟机调度机制。
基于此,在本申请实施例中,提供了一种虚拟机的调度方法和装置,应用于主机集群,该主机集群包括多台主机,每台主机上配置有多个虚拟机VM,该方法具体可以包括:将主机集群中具有待处理任务的VM放入多个线程中,每个线程包括预设数量的VM,多个线程中可以包括第一线程和第二线程;先对第一线程中的VM对应的待处理任务进行处理;当对第一线程中VM的处理满足预设条件时,再对第二线程中的VM对应的待处理任务进行处理。
如此,通过本申请实施例提供的方法,可以在主机集群中大量VM的并行批量处理(例如:批量迁移和批量开机)时,通过将大量的VM放入多个线程,采用多线程排队分批处理的机制,各线程依次对其中包括的VM的待处理任务进行处理,也就是说,上一个线程处理到一定程度(即,满足预设条件)作为触发下一个线程开始对其中包括的VM的待处理任务进行处理的条件,这样,可以避免同时对大量待处理任务进行并行操作导致主机集群中主机的内存超分,从而影响该主机的性能以及其上虚拟机的正常运行的问题,本申请实施例提供的更加合理的多线程排队分批处理的机制,能够一定程度上有效的避免主机内存超分,确保主机以及其上虚拟机的正常运行。
下面结合附图,通过实施例来详细说明本申请实施例中一种虚拟机的调度方法的具体实现方式。
图2为本申请实施例中一种虚拟机的调度方法的流程示意图。该方法例如可以应用于图1所示的主机集群,该主机集群可以包括多台主机(如:主机10、主机20和主机30),每台主机上配置有多个虚拟机VM。
参见图2,该方法具体可以包括:
步骤201,将主机集群中具有待处理任务的VM放入多个线程中,每个线程包括预设数量的VM,多个线程中包括第一线程和第二线程。
可以理解的是,当有大量的VM需要并行进行一些操作时,可以获得这些要并行进行操作的VM,以及这些VM对应的待处理任务,为基于本申请实施例进行合理的VM调度提供数据基础。
其中,VM对应的待处理任务可以包括:VM开机任务和VM迁移任务。VM开机任务,可以是指通过用户操作或者其他触发方式触发生成VM开机的请求,每个VM开机的请求对应记作一个VM开机任务。可以理解的是,当需要执行VM上安装的软件或应用程度时,或者,在VM迁移之后,可以根据设置手动或者自动的触发VM开机任务的执行。VM迁移任务,可以是指当有将一个主机上的一VM迁移到另一个主机上的需求,对应一个VM迁移任务。可以理解的是,一种情况下,VM迁移任务具体可以是由于主机集群中的某个主机宕机触发的,该具有VM迁移任务的VM即为该宕机的主机上配置的部分或所有VM;另一种情况下,也可以是VM开启过程中,源主机不满足开机条件时触发的该VM的调度任务;再一种情况下,还可以是主机上的VM运行时,由于主机需要进行分布式资源调度(英文:Distributed Resource Scheduler,简称:DRS)而触发该主机上的VM执行的迁移任务。
具体实现时,当具有待处理任务的VM的数量超过预设数量(例如20)时,认为具有待处理任务的VM较多,需要引入本申请实施例提供的多线程排队分批处理的机制,以避免大量的VM并行处理导致主机内存超分的问题。此时,可以将该大量的具有待处理任务的VM放入多个线程。每个线程可以包括预设数量的VM,方便合理、均衡的执行多线程排队分批处理的机制。
例如:假设目前存在100个具有待处理任务的VM,预设数量为20,那么,可以将该100个VM放入5个线程中,这5个线程包括:线程1、线程2、线程3、线程4和线程5,每个线程中包括20个VM(也可以认为每个线程中包括20个VM对应的待处理任务)。
其中,步骤201中得到多个线程,本申请实施例中以其中的第一线程和第二线程这两个线程为例进行后续的处理流程的说明,如果该多个线程包括两个以上线程,也属于本申请实施例的保护范围,具体实现方式可以参见本实施例中两个线程的处理过程,在此不再赘述。
可见,通过上述步骤201,得到包括第一线程和第二线程的多个线程,每个线程中均包括部分具有待处理任务的VM,为后续步骤202~步骤203的执行提供了数据基础。
步骤202,对第一线程中的VM对应的待处理任务进行处理。
可以理解的是,一种情况下,当第一线程为该多线程中的第一个处理的线程,那么,在步骤201得到该多线程后,即可触发执行该步骤202;另一种情况下,当该第一线程不是该多线程中的第一个处理的线程,那么,在步骤201得到该多线程后,可以先按照顺序,先执行该多线程中的第一个处理的线程,再执行该多线程中的第二个处理的线程,以此类推,直到执行到该第一进程。
需要说明的是,本申请实施例中以多个线程中的第一线程和第二线程按照多线程排队分批处理的机制执行的过程为例进行说明,该多个线程中其他线程的执行,均可以参见本申请实施例中的相关实现。
在一些具体的实现方式中,本申请实施例还可以包括:当检测到主机集群中的第一主机宕机,则,将第一主机上的每个第一VM对应分配VM迁移任务。即,对发生故障无法正常运行的第一主机,其上的所有或者部分第一VM执行VM迁移任务,将这些待迁移的VM迁移至该主机集群中其他正常运行的主机上,避免由于第一主机宕机导致其上VM提供的服务中断。
该实现方式下,步骤202中对第一线程中的VM对应的待处理任务进行处理,参见图3,例如可以包括:
步骤2021,基于主机集群中除第一主机之外的其他主机的剩余可用内存,对第一线程中的每个第一VM,确定符合迁移条件的第二主机;
步骤2022,更新第二主机的剩余可用内存为第二剩余可用内存,第二剩余可用内存为将第二主机的第一剩余可用内存减去该第一VM的配置内存得到的;
步骤2023,基于第二剩余可用内存,确定将该第一VM迁移至第二主机。
可以理解的是,迁移条件具体可以包括:主机开机条件,存储未挂载,网络连接正常,以及剩余可用内存大于该第一VM的配置内存。也就是说,当主机集群中的主机满足主机开机条件,其对应的存储未挂载,其对应的网络连接正常,以及其上的剩余可用内存大于该第一VM的配置内存,则确定该主机满足预设的迁移条件,可以作为该第一VM迁移至的目的主机的备选项或者直接作为目的主机。
作为一个示例,当确定满足预设的迁移条件的主机有且仅有一个主机时,步骤2021中可以直接将该主机作为第二主机,即,该第一VM迁移到的目的主机。
作为另一个示例,当确定满足预设的迁移条件的主机为至少一个第三主机时,步骤2021中基于主机集群中除第一主机之外的其他主机的剩余可用内存,对第一线程中的每个第一VM,确定符合迁移条件的第二主机,具体可以包括:S11,基于主机集群中除第一主机之外的其他主机的剩余可用内存,对第一线程中的每个第一VM,确定符合迁移条件的至少一个第三主机;S12,将至少一个第三主机中剩余可用内存最大的主机,确定为第二主机。
其中,根据步骤2021确定出该VM可以迁移至的第二主机后,即可根据步骤2022更新该第二主机上的剩余可用内存为该VM迁移至第二主机后该第二主机上的实际剩余可用内存,即,预先将该VM的配置内存从第二主机当前的第一剩余可用内存中剔除,得到第二剩余可用内存,即,第二主机上当前预分配给该VM配置内存后的全局性的剩余可用内存。这样,通过在确定目标主机后即在该目标主机上为待迁移至预分配的内存,一定程度上确保了实际迁移过程主机不会出现内存超分的问题。
具体实现时,步骤2023中基于第二剩余可用内存,确定将该第一VM迁移至第二主机,例如可以包括:S21,根据第二剩余可用内存判断是否允许该VM迁移至该第二主机,若是,则执行S22,否则,执行S23;S22,将该第一VM迁移至第二主机;S23,生成迁移失败消息,并释放第二主机为该第一VM分配的配置内存,更新第二主机的剩余可用内存为第一剩余可用内存。其中,S21中的判断不允许该VM迁移至该第二主机的依据可以是第二剩余可用内存太小甚至趋近于零,或者,该第二主机的网络断开等,此时,生成的迁移失败消息用于告知该主机集群,将该VM迁移至第二主机的VM迁移任务失败,而且,为了各主机的剩余可用内存的准确性,以及后续待处理任务准确的执行,避免出现由于剩余可用内存更新不及时导致VM调度不合理的问题,还将该VM迁移失败的VM在第二主机中预分配的配置内存释放掉,即,将第二主机的剩余可用内存更新为其为该VM预分配配置内存之前的第一剩余可用内存。
作为一个示例,当待处理任务还包括VM开机任务时,执行完S22中将该第一VM迁移至第二主机之后,本申请实施例还可以包括:S31,将该第一VM在第二主机进行VM开机任务;S32,当VM开机任务的执行进度达到预设进度阈值(例如:完成开机的总进度的50%)时,对第一线程中的下一个第一VM执行确定符合迁移条件的第二主机以及之后的操作,即,对该第一线程中的下一个第一VM执行步骤2021~步骤2023的操作,或者,当该下一个VM还包括VM开机任务时,执行步骤2021~步骤2023以及S31~S32的操作。
需要说明的是,当第一线程中的VM的待处理任务包括VM迁移任务和VM开机任务时,那么,该步骤2021~步骤2023的操作,直至该第一线程中的最后一个第一VM在迁移后的第四主机中,进行VM开机任务的执行进度达到预设进度阈值,此时,可以确认该步骤202执行完毕。
在另一些具体的实现方式中,当待处理任务仅包括VM开机任务时,该步骤202中对第一线程中的VM对应的待处理任务进行处理,如图4所示,例如可以包括:
步骤401,开始对第一线程中的第五VM进行调度时,为第一线程中的其他VM添加排它锁;
步骤402,对第五VM执行VM开机任务;
步骤403,当第五VM的VM开机任务的执行进度达到预设进度阈值时,开始对第一线程中的第六VM进行调度,为第一线程中的其他VM添加排它锁。
可以理解的是,在同一个线程中,对多个VM进行VM开机任务,为了避免多个VM同时开机导致该主机性能下降,当开始对第五VM执行VM开机任务时,同时给该线程中的其他VM通过synchronized等方式为添加排它锁,即,其他VM上对应的待处理任务为锁定状态,不可以执行;当对第五VM的VM开机任务执行完成时,可以解除该排它锁,并开始对第五VM的下一个VM——第六VM执行VM开机任务时,同时给该线程中的其他VM添加排它锁,即,其他VM上对应的待处理任务为锁定状态,不可以执行。如此,通过加排它锁的方式,确保了同一线程中给多个VM进行批量开机时,不发生内存等资源的占用冲突。
其中,以步骤402中对第五VM执行VM开机任务为例,说明对各个VM执行VM开机任务的具体过程。该步骤402具体可以包括:S41,判断配置该第五VM的源主机是否符合开机条件,若是,则执行S42,否则,执行S43~S45;S42,将第五VM在源主机上进行VM开机任务;S43,基于主机集群中除源主机之外的其他主机的剩余可用内存,确定符合迁移条件的至少一个待迁移主机;S44,将至少一个待迁移主机中剩余可用内存最大的主机,确定为目标主机;S45,将第五VM迁移至目标主机,并且将第五VM在目标主机上进行VM开机任务。可以理解的是,该开机条件,具体可以是指该源主机是否掉电或是否在第五VM开机后是否负载过重或是否导致主机内存超分,如果是,则认为该源主机不满足开机条件,如果否,则可以认为该源主机满足开机条件。
需要说明的是,当第一线程中的VM的待处理任务包括VM开机任务时,那么,依次对第一线程中的每个VM进行本申请实施例的调度操作,直至该第一线程中的最后一个第一VM进行VM开机任务的执行进度达到预设进度阈值,此时,可以确认该步骤202执行完毕。
步骤203,当对第一线程中VM的处理满足预设条件时,对第二线程中的VM对应的待处理任务进行处理。
其中,在对第一线程中的VM对应的待处理任务进行处理的过程中,第二线程处于等待状况,只有检测到该第一线程中VM的处理满足了预设条件,例如:第一线程中的最后一个第一VM进行VM开机任务的执行进度达到预设进度阈值,此时,可以认为第一线程中的VM对应的待处理任务基本处理完成,可以开始执行下一个线程,即,第二线程中的任务,即,可以触发对该第二线程中的VM对应的待处理任务进行处理。
具体实现时,可以在检测到该第一线程中VM的处理满足了预设条件时,生成第一线程的结束标识,第二线程检测到该第一线程的结束标识后即可开始对其中的VM对应的待处理任务进行处理;或者,也可以直接设计在“对第一线程中VM的处理满足预设条件”时即刻触发执行“对第二线程中的VM对应的待处理任务进行处理”。
对第二线程中的VM对应的待处理任务进行处理的具体实现方式,与对第一线程中的VM对应的待处理任务进行处理的具体实现方式基本类型,相关描述可以参见步骤202的相关描述。
作为一个示例,本申请实施例还可以包括:检测到主机集群中的第六主机宕机,则,将第六主机上的每个第六VM对应分配VM迁移任务。那么,该示例下,对第二线程中的VM对应的待处理任务进行处理,包括:S51,基于主机集群中除第六主机之外的其他主机的剩余可用内存,对第二线程中的每个第六VM,确定符合迁移条件的第七主机;S52,更新第七主机的剩余可用内存为第四剩余可用内存,第四剩余可用内存为将第七主机的第三剩余可用内存减去该第六VM的配置内存得到的;S53,基于第四剩余可用内存,确定将该第六VM迁移至第七主机。
其中,S51中基于主机集群中除第一主机之外的其他主机的剩余可用内存,对第一线程中的每个第一VM,确定符合迁移条件的第二主机,例如可以包括:S61,基于主机集群中除第六主机之外的其他主机的剩余可用内存,对第二线程中的每个第六VM,确定符合迁移条件的至少一个第八主机;S62,将至少一个第八主机中剩余可用内存最大的主机,确定为第七主机。
可以理解的是,上述迁移条件具体可以包括:主机开机条件,存储未挂载,网络连接正常,以及剩余可用内存大于该第六VM的配置内存。
其中,S53中基于第四剩余可用内存,确定将该第六VM迁移至第七主机,例如可以包括:S71,若根据第四剩余可用内存确定允许迁移,则,将该第六VM迁移至第七主机;S72,若根据第四剩余可用内存确定拒绝迁移,则,生成迁移失败消息,并释放第七主机为该第六VM分配的配置内存,更新第七主机的剩余可用内存为第三剩余可用内存。
例如,当待处理任务还包括VM开机任务时,该S71中将该第六VM迁移至第七主机之后,本申请实施例还可以包括:将该第六VM在第七主机进行VM开机任务;当VM开机任务的执行进度达到预设进度阈值时,对第二线程中的下一个第六VM执行确定符合迁移条件的第七主机以及之后的操作。其中,第二线程中VM的处理满足预设条件,具体为:第二线程中的最后一个第六VM在迁移后的第九主机中,进行VM开机任务的执行进度达到预设进度阈值。
作为另一个示例,当待处理任务包括VM开机任务时,步骤203中对第二线程中的VM对应的待处理任务进行处理,例如可以包括:S81,开始对第一线程中的第五VM进行调度时,为第一线程中的其他VM添加排它锁;S82,对第五VM执行VM开机任务;S83,当第五VM的VM开机任务的执行进度达到预设进度阈值时,开始对第一线程中的第六VM进行调度,为第一线程中的其他VM添加排它锁。
其中,S82中对第五VM执行VM开机任务,具体可以包括:当确定配置第五VM的源主机符合开机条件时,将第五VM在源主机上进行VM开机任务;当确定配置第五VM的源主机不符合开机条件时,基于主机集群中除源主机之外的其他主机的剩余可用内存,确定符合迁移条件的至少一个待迁移主机;将至少一个待迁移主机中剩余可用内存最大的主机,确定为目标主机;将第五VM迁移至目标主机,并且将第五VM在目标主机上进行VM开机任务。
这样,通过本申请实施例提供的方法,可以对多个线程依次进行处理,采用多线程排队分批处理的机制,以上一个线程处理到满足预设条件作为触发下一个线程开始对其中包括的VM的待处理任务进行处理的条件,这样,可以避免同时对大量待处理任务进行并行操作导致主机集群中主机的内存超分,从而影响该主机的性能以及其上虚拟机的正常运行的问题。
在另一些可能的场景中,本申请实施例为了确保该主机集群中各主机以及其上配置VM的正常运行,不出现主机内存超分的问题,本申请实施例还包括检测各主机上的运行参数是否满足预设调度条件,基于负载分担机制进行VM调度的方法,其中,运行参数包括主机中实际的内存占用率和中央处理器(英文:central processing unit,简称:CPU)利用率中的至少一个,当运行参数包括主机中实际的内存占用率,则,预设调度条件包括内存占用阈值,当运行参数包括CPU利用率,则,预设调度条件包括CPU利用率阈值。以主机集群中的第五主机为例,本申请实施例具体可以包括:当主机集群中第五主机中的运行参数满足预设调度条件时,对第五主机中的VM进行分布式资源调度DRS。
可见,通过本申请实施例提供的方法,在主机集群中大量VM的并行批量处理(例如:批量迁移和批量开机)时,通过将大量的VM放入多个线程,采用多线程排队分批处理的机制,各线程依次对其中包括的VM的待处理任务进行处理,也就是说,上一个线程处理到一定程度(即,满足预设条件)作为触发下一个线程开始对其中包括的VM的待处理任务进行处理的条件,这样,可以避免同时对大量待处理任务进行并行操作导致主机集群中主机的内存超分,从而影响该主机的性能以及其上虚拟机的正常运行的问题,本申请实施例提供的更加合理的多线程排队分批处理的机制,能够一定程度上有效的避免主机内存超分,确保主机以及其上虚拟机的正常运行。
相应的,本申请实施例还提供了一种虚拟机的调度装置500,如图5所示。该装置500应用于主机集群,所述主机集群包括多台主机,每台主机上配置有多个虚拟机VM,所述装置500包括:
线程设置单元501,用于将所述主机集群中具有待处理任务的VM放入多个线程中,每个所述线程包括预设数量的所述VM,所述多个线程中包括第一线程和第二线程;
第一处理单元502,用于对所述第一线程中的VM对应的待处理任务进行处理;
第二处理单元503,用于当对所述第一线程中VM的处理满足预设条件时,对所述第二线程中的VM对应的待处理任务进行处理。
可选地,所述装置500还包括:
分配单元,用于检测到所述主机集群中的第一主机宕机,则,将所述第一主机上的每个第一VM对应分配所述VM迁移任务。
可选地,所述第一处理单元502,包括:
第一确定子单元,用于基于所述主机集群中除所述第一主机之外的其他主机的剩余可用内存,对所述第一线程中的每个所述第一VM,确定符合迁移条件的第二主机;
更新子单元,用于更新所述第二主机的剩余可用内存为第二剩余可用内存,所述第二剩余可用内存为将所述第二主机的第一剩余可用内存减去该第一VM的配置内存得到的;
第二确定子单元,用于基于所述第二剩余可用内存,确定将该第一VM迁移至所述第二主机。
可选地,所述第一确定子单元,包括:
第三确定子单元,用于基于所述主机集群中除所述第一主机之外的其他主机的剩余可用内存,对所述第一线程中的每个所述第一VM,确定符合迁移条件的至少一个第三主机;
第四确定子单元,用于将所述至少一个第三主机中剩余可用内存最大的主机,确定为所述第二主机。
可选地,所述迁移条件包括:
主机开机条件,存储未挂载,网络连接正常,以及剩余可用内存大于该第一VM的配置内存。
可选地,所述第二确定子单元,包括:
迁移子单元,用于若根据所述第二剩余可用内存确定允许迁移,则,将该第一VM迁移至所述第二主机;
释放子单元,用于若根据所述第二剩余可用内存确定拒绝迁移,则,生成迁移失败消息,并释放所述第二主机为该第一VM分配的配置内存,更新所述第二主机的剩余可用内存为所述第一剩余可用内存。
可选地,所述装置500还包括:
第一开机单元,用于当所述待处理任务还包括VM开机任务时,所述将该第一VM迁移至所述第二主机之后,将该第一VM在所述第二主机进行所述VM开机任务;
第三处理单元,用于当所述VM开机任务的执行进度达到预设进度阈值时,对所述第一线程中的下一个所述第一VM执行所述确定符合迁移条件的第二主机以及之后的操作。
可选地,所述第一线程中VM的处理满足预设条件,具体为:所述第一线程中的最后一个所述第一VM在迁移后的第四主机中,进行所述VM开机任务的执行进度达到所述预设进度阈值。
可选地,当所述待处理任务包括VM开机任务时,所述第一处理单元502,包括:
第一添加子单元,用于开始对所述第一线程中的第五VM进行调度时,为所述第一线程中的其他VM添加排它锁;
第一开机子单元,用于对所述第五VM执行所述VM开机任务;
第二添加子单元,用于当所述第五VM的所述VM开机任务的执行进度达到预设进度阈值时,开始对所述第一线程中的第六VM进行调度,为所述第一线程中的其他VM添加排它锁。
可选地,所述第一开机子单元,包括:
第二开机子单元,用于当确定配置所述第五VM的源主机符合开机条件时,将所述第五VM在所述源主机上进行所述VM开机任务;
第五确定子单元,用于当确定配置所述第五VM的所述源主机不符合开机条件时,基于所述主机集群中除所述源主机之外的其他主机的剩余可用内存,确定符合迁移条件的至少一个待迁移主机;
第六确定子单元,用于将所述至少一个待迁移主机中剩余可用内存最大的主机,确定为目标主机;
迁移开机子单元,用于将所述第五VM迁移至所述目标主机,并且将所述第五VM在所述目标主机上进行所述VM开机任务。
可选地,所述装置500还包括:
DRS单元,用于当所述主机集群中第五主机中的运行参数满足预设调度条件时,对所述第五主机中的VM进行分布式资源调度DRS;
其中,所述运行参数包括所述第五主机中实际的内存占用率和中央处理器CPU利用率中的至少一个,所述预设调度条件包括内存占用阈值和CPU利用率阈值中的至少一个。
上述描述为一种虚拟机的调度装置500的相关描述,其中,具体实现方式以及达到的效果,可以前述的一种虚拟机的调度方法实施例的描述,这里不再赘述。
此外,本申请实施例还提供了一种设备600,如图6所示,所述设备600包括处理器601以及存储器602:
所述存储器602用于存储计算机程序;
所述处理器601用于根据所述计算机程序执行上述任意一种实现方式下的虚拟机的调度方法。
此外,还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机程序,所述计算机程序用于执行上述任意一种实现方式下的虚拟机的调度方法。
本申请实施例中提到的“第一主机”、“第一VM”等名称中的“第一”只是用来做名字标识,并不代表顺序上的第一。该规则同样适用于“第二”等。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到上述实施例方法中的全部或部分步骤可借助软件加通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如只读存储器(英文:read-only memory,ROM)/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者诸如路由器等网络通信设备)执行本申请各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例和设备实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的设备及装置实施例仅仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本申请的优选实施方式,并非用于限定本申请的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (20)
1.一种虚拟机的调度方法,其特征在于,应用于主机集群,所述主机集群包括多台主机,每台主机上配置有多个虚拟机VM,所述方法包括:
将所述主机中具有待处理任务的VM放入多个线程中,每个所述线程包括预设数量的所述VM,所述多个线程中包括第一线程和第二线程,所述待处理任务为批量迁移和/或批量开机;
对所述第一线程中的VM对应的待处理任务进行处理;
当对所述第一线程中VM的处理满足预设条件时,对所述第二线程中的VM对应的待处理任务进行处理;
其中,所述对所述第一线程中的VM对应的待处理任务进行处理,包括:基于所述主机集群中除宕机的第一主机之外的其他主机的剩余可用内存,对所述第一线程中的每个第一VM,确定符合迁移条件的第二主机;更新所述第二主机的剩余可用内存为第二剩余可用内存,所述第二剩余可用内存为将所述第二主机的第一剩余可用内存减去该第一VM的配置内存得到的;基于所述第二剩余可用内存,确定将该第一VM迁移至所述第二主机。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
检测到所述主机集群中的第一主机宕机,则,将所述第一主机上的每个第一VM对应分配VM迁移任务。
3.根据权利要求2所述的方法,其特征在于,所述基于所述主机集群中除宕机的第一主机之外的其他主机的剩余可用内存,对所述第一线程中的每个所述第一VM,确定符合迁移条件的第二主机,包括:
基于所述主机集群中除所述第一主机之外的其他主机的剩余可用内存,对所述第一线程中的每个所述第一VM,确定符合迁移条件的至少一个第三主机;
将所述至少一个第三主机中剩余可用内存最大的主机,确定为所述第二主机。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述迁移条件包括:
主机开机条件,存储未挂载,网络连接正常,以及剩余可用内存大于该第一VM的配置内存。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述基于所述第二剩余可用内存,确定将该第一VM迁移至所述第二主机,包括:
若根据所述第二剩余可用内存确定允许迁移,则,将该第一VM迁移至所述第二主机;
若根据所述第二剩余可用内存确定拒绝迁移,则,生成迁移失败消息,并释放所述第二主机为该第一VM分配的配置内存,更新所述第二主机的剩余可用内存为所述第一剩余可用内存。
6.根据权利要求5所述的方法,其特征在于,当所述待处理任务还包括VM开机任务时,所述将该第一VM迁移至所述第二主机之后,所述方法还包括:
将该第一VM在所述第二主机进行所述VM开机任务;
当所述VM开机任务的执行进度达到预设进度阈值时,对所述第一线程中的下一个所述第一VM执行所述确定符合迁移条件的第二主机以及之后的操作。
7.根据权利要求6所述的方法,其特征在于,所述第一线程中VM的处理满足预设条件,具体为:所述第一线程中的最后一个所述第一VM在迁移后的第四主机中,进行所述VM开机任务的执行进度达到所述预设进度阈值。
8.根据权利要求1所述的方法,其特征在于,当所述待处理任务包括VM开机任务时,所述对所述第一线程中的VM对应的待处理任务进行处理,包括:
开始对所述第一线程中的第五VM进行调度时,为所述第一线程中的其他VM添加排它锁;
对所述第五VM执行所述VM开机任务;
当所述第五VM的所述VM开机任务的执行进度达到预设进度阈值时,开始对所述第一线程中的第六VM进行调度,为所述第一线程中的其他VM添加排它锁。
9.根据权利要求8所述的方法,其特征在于,所述对所述第五VM执行所述VM开机任务,包括:
当确定配置所述第五VM的源主机符合开机条件时,将所述第五VM在所述源主机上进行所述VM开机任务;
当确定配置所述第五VM的所述源主机不符合开机条件时,基于所述主机集群中除所述源主机之外的其他主机的剩余可用内存,确定符合迁移条件的至少一个待迁移主机;
将所述至少一个待迁移主机中剩余可用内存最大的主机,确定为目标主机;
将所述第五VM迁移至所述目标主机,并且将所述第五VM在所述目标主机上进行所述VM开机任务。
10.根据权利要求1所述的方法,其特征在于,当所述主机集群中第五主机中的运行参数满足预设调度条件时,所述方法还包括:
对所述第五主机中的VM进行分布式资源调度DRS;
其中,所述运行参数包括所述第五主机中实际的内存占用率和中央处理器CPU利用率中的至少一个,所述预设调度条件包括内存占用阈值和CPU利用率阈值中的至少一个。
11.一种虚拟机的调度装置,其特征在于,应用于主机集群,所述主机集群包括多台主机,每台主机上配置有多个虚拟机VM,所述装置包括:
线程设置单元,用于将所述主机中具有待处理任务的VM放入多个线程中,每个所述线程包括预设数量的所述VM,所述多个线程中包括第一线程和第二线程,所述待处理任务为批量迁移和/或批量开机;
第一处理单元,用于对所述第一线程中的VM对应的待处理任务进行处理;
第二处理单元,用于当对所述第一线程中VM的处理满足预设条件时,对所述第二线程中的VM对应的待处理任务进行处理;
其中,所述第一处理单元,包括:
第一确定子单元,用于基于所述主机集群中除宕机的第一主机之外的其他主机的剩余可用内存,对所述第一线程中的每个第一VM,确定符合迁移条件的第二主机;
更新子单元,用于更新所述第二主机的剩余可用内存为第二剩余可用内存,所述第二剩余可用内存为将所述第二主机的第一剩余可用内存减去该第一VM的配置内存得到的;
第二确定子单元,用于基于所述第二剩余可用内存,确定将该第一VM迁移至所述第二主机。
12.根据权利要求11所述的装置,其特征在于,所述装置还包括:
分配单元,用于检测到所述主机集群中的第一主机宕机,则,将所述第一主机上的每个第一VM对应分配所述VM迁移任务。
13.根据权利要求12所述的装置,其特征在于,所述第一确定子单元,包括:
第三确定子单元,用于基于所述主机集群中除所述第一主机之外的其他主机的剩余可用内存,对所述第一线程中的每个所述第一VM,确定符合迁移条件的至少一个第三主机;
第四确定子单元,用于将所述至少一个第三主机中剩余可用内存最大的主机,确定为所述第二主机。
14.根据权利要求11-13任一项所述的装置,其特征在于,所述迁移条件包括:
主机开机条件,存储未挂载,网络连接正常,以及剩余可用内存大于该第一VM的配置内存。
15.根据权利要求11-13任一项所述的装置,其特征在于,所述第二确定子单元,包括:
迁移子单元,用于若根据所述第二剩余可用内存确定允许迁移,则,将该第一VM迁移至所述第二主机;
释放子单元,用于若根据所述第二剩余可用内存确定拒绝迁移,则,生成迁移失败消息,并释放所述第二主机为该第一VM分配的配置内存,更新所述第二主机的剩余可用内存为所述第一剩余可用内存。
16.根据权利要求15所述的装置,其特征在于,所述装置还包括:
第一开机单元,用于当所述待处理任务还包括VM开机任务时,所述将该第一VM迁移至所述第二主机之后,将该第一VM在所述第二主机进行所述VM开机任务;
第三处理单元,用于当所述VM开机任务的执行进度达到预设进度阈值时,对所述第一线程中的下一个所述第一VM执行所述确定符合迁移条件的第二主机以及之后的操作。
17.根据权利要求16所述的装置,其特征在于,所述第一线程中VM的处理满足预设条件,具体为:所述第一线程中的最后一个所述第一VM在迁移后的第四主机中,进行所述VM开机任务的执行进度达到所述预设进度阈值。
18.根据权利要求11所述的装置,其特征在于,当所述待处理任务包括VM开机任务时,所述第一处理单元,包括:
第一添加子单元,用于开始对所述第一线程中的第五VM进行调度时,为所述第一线程中的其他VM添加排它锁;
第一开机子单元,用于对所述第五VM执行所述VM开机任务;
第二添加子单元,用于当所述第五VM的所述VM开机任务的执行进度达到预设进度阈值时,开始对所述第一线程中的第六VM进行调度,为所述第一线程中的其他VM添加排它锁。
19.根据权利要求18所述的装置,其特征在于,所述第一开机子单元,包括:
第二开机子单元,用于当确定配置所述第五VM的源主机符合开机条件时,将所述第五VM在所述源主机上进行所述VM开机任务;
第五确定子单元,用于当确定配置所述第五VM的所述源主机不符合开机条件时,基于所述主机集群中除所述源主机之外的其他主机的剩余可用内存,确定符合迁移条件的至少一个待迁移主机;
第六确定子单元,用于将所述至少一个待迁移主机中剩余可用内存最大的主机,确定为目标主机;
迁移开机子单元,用于将所述第五VM迁移至所述目标主机,并且将所述第五VM在所述目标主机上进行所述VM开机任务。
20.根据权利要求11所述的装置,其特征在于,所述装置还包括:
DRS单元,用于当所述主机集群中第五主机中的运行参数满足预设调度条件时,对所述第五主机中的VM进行分布式资源调度DRS;
其中,所述运行参数包括所述第五主机中实际的内存占用率和中央处理器CPU利用率中的至少一个,所述预设调度条件包括内存占用阈值和CPU利用率阈值中的至少一个。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910925514.0A CN110673927B (zh) | 2019-09-27 | 2019-09-27 | 一种虚拟机的调度方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910925514.0A CN110673927B (zh) | 2019-09-27 | 2019-09-27 | 一种虚拟机的调度方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110673927A CN110673927A (zh) | 2020-01-10 |
CN110673927B true CN110673927B (zh) | 2022-03-22 |
Family
ID=69079576
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910925514.0A Active CN110673927B (zh) | 2019-09-27 | 2019-09-27 | 一种虚拟机的调度方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110673927B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312170B (zh) * | 2020-05-29 | 2024-01-23 | 阿里巴巴集团控股有限公司 | 内存管理系统及方法 |
US11755385B2 (en) * | 2020-05-29 | 2023-09-12 | Vmware, Inc. | Cross-cluster load balancer |
CN112948229A (zh) * | 2021-03-16 | 2021-06-11 | 广州虎牙科技有限公司 | 调度集群的性能确定方法、装置、计算机设备及存储介质 |
CN112799790B (zh) * | 2021-04-15 | 2022-03-11 | 北京首都在线科技股份有限公司 | 调度方法、装置、电子设备和计算机存储介质 |
CN115037702B (zh) * | 2022-05-23 | 2024-04-12 | 北京梧桐车联科技有限责任公司 | 报文分发、数据发送方法及设备 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108196942A (zh) * | 2018-02-01 | 2018-06-22 | 成都禾苗云科技有限公司 | 一种内存超分配虚拟机的快速启动方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9183035B2 (en) * | 2013-11-08 | 2015-11-10 | International Business Machines Corporation | Virtual machine migration with swap pages |
-
2019
- 2019-09-27 CN CN201910925514.0A patent/CN110673927B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108196942A (zh) * | 2018-02-01 | 2018-06-22 | 成都禾苗云科技有限公司 | 一种内存超分配虚拟机的快速启动方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110673927A (zh) | 2020-01-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110673927B (zh) | 一种虚拟机的调度方法和装置 | |
US11797327B2 (en) | Dynamic virtual machine sizing | |
US8346933B2 (en) | Virtual machine location system, virtual machine location method, program, virtual machine manager, and server | |
US8635493B2 (en) | High availability system allowing conditionally reserved computing resource use and reclamation upon a failover | |
US9319281B2 (en) | Resource management method, resource management device, and program product | |
US9858101B2 (en) | Virtual machine input/output thread management | |
JP6840099B2 (ja) | サービス提供システム、資源割り当て方法、及び資源割り当てプログラム | |
CN111641515B (zh) | Vnf的生命周期管理方法及装置 | |
US9558082B2 (en) | VM availability during migration and VM network failures in host computing systems | |
CN111352797A (zh) | 用于监视软件应用程序进程的系统和方法 | |
WO2015131542A1 (zh) | 数据处理方法、装置和系统 | |
JP6107801B2 (ja) | 情報処理装置、情報処理システム、タスク処理方法、及び、プログラム | |
CN113886089A (zh) | 一种任务处理方法、装置、系统、设备及介质 | |
EP3109758A1 (en) | Method and apparatus for scaling an application | |
JPWO2011114476A1 (ja) | マルチコアプロセッサシステム、通知プログラム、および通知方法 | |
US8307371B2 (en) | Method for efficient utilization of processors in a virtual shared environment | |
JP2018163389A (ja) | 情報処理システム及び仮想マシン | |
JP5417626B2 (ja) | 管理計算機、ジョブスケジューリング方法及びジョブスケジューリングプログラム | |
WO2016041202A1 (zh) | 一种基于云环境系统的部署方法和装置 | |
JP7000797B2 (ja) | 起動管理装置、起動管理システム、起動管理方法、および、起動管理プログラム | |
CN112231057A (zh) | 信息处理方法、装置及系统 | |
CN113467901A (zh) | 一种任务调度的方法及相关设备 | |
US20160350147A1 (en) | Control method and control device | |
JP6390322B2 (ja) | 情報処理装置、情報処理方法及びプログラム | |
CN112328359B (zh) | 避免容器集群启动拥塞的调度方法和容器集群管理平台 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |