一种虚拟机调度的方法、系统、设备和存储介质技术方案

技术编号:34350665 阅读:54 留言:0更新日期:2022-07-31 05:39
本发明专利技术提供一种虚拟机调度的方法、系统、设备和存储介质,方法包括:根据虚拟机申请的锁的不同在宿主机上创建不同的锁队列,并将持有相同锁等待解锁的业务进程设置在同一锁队列中;通过虚拟机业务进程在宿主机上判断当前队列是否存在虚拟CPU线程;响应于当前队列不存在虚拟CPU线程,获取锁并执行所述业务进程;以及响应于当前队列存在虚拟CPU线程,根据所述业务进程的信息创建新的虚拟CPU线程并挂载到队列的尾部,并暂停所述业务进程。本发明专利技术使得物理主机能够感知到虚拟机是否处于自旋锁未获得锁的状态,从而协调虚拟机的虚拟CPU线程的运行,提升物理服务器的调度能力和服务能力。力。力。

A method, system, device and storage medium for virtual machine scheduling

【技术实现步骤摘要】
一种虚拟机调度的方法、系统、设备和存储介质


[0001]本专利技术涉及服务器领域,更具体地,特别是指一种虚拟机调度的方法、系统、设备和存储介质。

技术介绍

[0002]云计算已经成为国家新型基础设施建设的基础设施。虚拟化技术是云计算的重要技术支撑手段和关键支撑技术。当前虚拟化主要有物理服务器虚拟化、存储虚拟化、网络虚拟化、设备虚拟化等技术,通过这些技术实现了硬件的虚拟化、操作系统的虚拟化和上层业务的虚拟化。有效保证了云计算的高可靠性、弹性扩展计算资源的特点。通过对服务器的资源的弹性管理,提升了服务器资源利用率和降低了资源损耗。
[0003]根据虚拟化程度的不同,虚拟技术分为全虚拟化和半虚拟化。全虚拟化最直观的体现就是可以在虚拟的服务器上安装任何类型的操作系统。当前虚拟机安装的操作系统独立的运行在各自的虚拟服务器上,操作系统之间无感知。自旋锁是一种获取资源在得不到满足的情况下就进行等待的锁机制,主要用在多处理器工作环境中。由于其死等的特性,即使这段时间内系统上有其它要执行的任务(进程),也不会让出CPU资源,给其它进程业务使用。为提升自旋锁的性能,自旋锁目前已经发展出原始自旋锁(raw spinlock)、ticket spinlock、mcs spinlock、queue spinlock等不同设计的自旋锁。但是在虚拟化场景下,物理CPU被虚拟化为VCPU,每个CPU被线程化。在这种情况下一旦虚拟操作系统进入spinlock(自旋锁)状态,意味着线程在不断的等待,浪费CPU的资源,产生Lock Holder Preemption(LHP,锁持有先占)使虚拟机中的锁持有线程被抢占,导致锁等待线程忙等,直到锁持有者线程再次被调度并释放锁后,锁等待线程才能获取到锁。从锁持有线程被抢占到其再次被调度运行这段时间,其余锁等待线程的等待其实是在浪费CPU算力。和Lock Waiter Preemption(LWP,锁等待先占)虚拟机中的下一个锁等待线程被抢占,直到其下一次再次被调度并获取锁后,其余锁等待线程的盲等其实锁在浪费CPU算力。因此一旦陷入盲等的虚拟CPU(线程),主机完全可以将该线程暂停运行,而去执行其他任务。在这种情况下自旋锁又产生了paravirt spinlock。该自旋锁是基于虚拟化场景而设计,对虚拟化场景下的spinlock进行优化,通过修改guest kernel,让其感知到自己处于虚拟化场景中,使用halt vcpu的方式而非让vcpu自旋,可以在一定程度上减轻LHP和LWP问题。
[0004]当前spinlock仅是考虑一个操作系统范围内部的锁的使用,无法去感知不同虚拟机下的业务同步问题。

技术实现思路

[0005]有鉴于此,本专利技术实施例的目的在于提出一种虚拟机调度的方法、系统、计算机设备及计算机可读存储介质,本专利技术使得物理主机能够感知到虚拟机是否处于自旋锁未获得锁的状态,从而协调虚拟机的虚拟CPU线程的运行,提升物理服务器的调度能力和服务能力。
[0006]基于上述目的,本专利技术实施例的一方面提供了一种虚拟机调度的方法,包括如下步骤:根据虚拟机申请的锁的不同在宿主机上创建不同的锁队列,并将持有相同锁等待解锁的业务进程设置在同一锁队列中;通过虚拟机业务进程在宿主机上判断当前队列是否存在虚拟CPU线程;响应于当前队列不存在虚拟CPU线程,获取锁并执行所述业务进程;以及响应于当前队列存在虚拟CPU线程,根据所述业务进程的信息创建新的虚拟CPU线程并挂载到队列的尾部,并暂停所述业务进程。
[0007]在一些实施方式中,所述根据虚拟机申请的锁的不同在宿主机上创建不同的锁队列包括:对锁进行初始化,并将锁的名称供所述宿主机上所有的虚拟机访问所述锁使用。
[0008]在一些实施方式中,所述方法还包括:响应于持有锁的业务进程完成工作,释放当前虚拟CPU线程,并唤醒队列中下一个虚拟CPU线程。
[0009]在一些实施方式中,所述方法还包括:响应于关闭虚拟机,清空所述虚拟机所有锁的虚拟CPU线程信息。
[0010]本专利技术实施例的另一方面,提供了一种虚拟机调度的系统,包括:创建模块,配置用于根据虚拟机申请的锁的不同在宿主机上创建不同的锁队列,并将持有相同锁等待解锁的业务进程设置在同一锁队列中;判断模块,配置用于通过虚拟机业务进程在宿主机上判断当前队列是否存在虚拟CPU线程;执行模块,配置用于响应于当前队列不存在虚拟CPU线程,获取锁并执行所述业务进程;以及挂载模块,配置用于响应于当前队列存在虚拟CPU线程,根据所述业务进程的信息创建新的虚拟CPU线程并挂载到队列的尾部,并暂停所述业务进程。
[0011]在一些实施方式中,所述创建模块配置用于:对锁进行初始化,并将锁的名称供所述宿主机上所有的虚拟机访问所述锁使用。
[0012]在一些实施方式中,所述系统还包括解锁模块,配置用于:响应于持有锁的业务进程完成工作,释放当前虚拟CPU线程,并唤醒队列中下一个虚拟CPU线程。
[0013]在一些实施方式中,所述系统还包括清空模块,配置用于:响应于关闭虚拟机,清空所述虚拟机所有锁的虚拟CPU线程信息。
[0014]本专利技术实施例的又一方面,还提供了一种计算机设备,包括:至少一个处理器;以及存储器,所述存储器存储有可在所述处理器上运行的计算机指令,所述指令由所述处理器执行时实现如上方法的步骤。
[0015]本专利技术实施例的再一方面,还提供了一种计算机可读存储介质,计算机可读存储介质存储有被处理器执行时实现如上方法步骤的计算机程序。
[0016]本专利技术具有以下有益技术效果:使得物理主机能够感知到虚拟机是否处于自旋锁未获得锁的状态,从而协调虚拟机的虚拟CPU线程的运行,提升物理服务器的调度能力和服务能力。
附图说明
[0017]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
[0018]图1为本专利技术提供的虚拟机调度的方法的实施例的示意图;
[0019]图2为本专利技术提供的锁的排队机制的示意图;
[0020]图3为本专利技术提供的虚拟CPU线程的内容示意图;
[0021]图4为本专利技术提供的虚拟机调度的系统的实施例的示意图;
[0022]图5为本专利技术提供的虚拟机调度的计算机设备的实施例的硬件结构示意图;
[0023]图6为本专利技术提供的虚拟机调度的计算机存储介质的实施例的示意图。
具体实施方式
[0024]为使本专利技术的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本专利技术实施例进一步详细说明。
[0025]需要说明的是,本专利技术实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种虚拟机调度的方法,其特征在于,包括如下步骤:根据虚拟机申请的锁的不同在宿主机上创建不同的锁队列,并将持有相同锁等待解锁的业务进程设置在同一锁队列中;通过虚拟机业务进程在宿主机上判断当前队列是否存在虚拟CPU线程;响应于当前队列不存在虚拟CPU线程,获取锁并执行所述业务进程;以及响应于当前队列存在虚拟CPU线程,根据所述业务进程的信息创建新的虚拟CPU线程并挂载到队列的尾部,并暂停所述业务进程。2.根据权利要求1所述的方法,其特征在于,所述根据虚拟机申请的锁的不同在宿主机上创建不同的锁队列包括:对锁进行初始化,并将锁的名称供所述宿主机上所有的虚拟机访问所述锁使用。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:响应于持有锁的业务进程完成工作,释放当前虚拟CPU线程,并唤醒队列中下一个虚拟CPU线程。4.根据权利要求1所述的方法,其特征在于,所述方法还包括:响应于关闭虚拟机,清空所述虚拟机所有锁的虚拟CPU线程信息。5.一种虚拟机调度的系统,其特征在于,包括:创建模块,配置用于根据虚拟机申请的锁的不同在宿主机上创建不同的锁队列,并将持有相同锁等待解锁的业务进程设置在同一锁队列中;判断模块,配置用于通过虚拟机业务进程在宿主机上判断当前队列是否存在虚...

【专利技术属性】
技术研发人员:戴纯兴
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1