一种自旋锁抢占调度算法选择方法及装置制造方法

文档序号:6524587阅读:156来源:国知局
一种自旋锁抢占调度算法选择方法及装置制造方法
【专利摘要】本发明公开了一种自旋锁抢占调度算法选择方法及装置,该方法包括:采集物理中央处理器的实时信息,该实时信息包括:虚拟机管理器管理的目标虚拟机上处于非休眠状态的虚拟中央处理器的数量,该虚拟机管理器为物理中央处理器上运行的虚拟机管理器;根据实时信息分析目标虚拟机竞争自旋锁的竞争场景;根据竞争场景计算目标虚拟机针对自旋锁的等待阈值;从存储的等待阈值与调度算法的关系集中选择等待阈值对应的调度算法;执行选择的调度算法调度目标虚拟机上的虚拟中央处理器运行。实施本发明实施例,可以提高虚拟机管理器的整体性能。
【专利说明】一种自旋锁抢占调度算法选择方法及装置
【技术领域】
[0001 ] 本发明涉及通信【技术领域】,具体涉及一种自旋锁抢占调度算法选择方法及装置。【背景技术】
[0002]自旋锁是为保护共享资源而提出的一种锁机制,在任何时刻,自旋锁最多只能有一个保持者,即在任何时刻最多只能有一个执行单元获得自旋锁,因自旋锁能够快速响应且支持多核处理器等优点而被广泛采用。在虚拟化环境下,为了最大化利用系统资源,会开启多个虚拟机,如果虚拟中央处理器(virtual central processing unit, VCPU)的数量大于物理中央处理器(physical central processing unit, PCPU)的数量,将会出现多个VCPU竞争同一个PCPU的情况,因此持有自旋锁并处于运行状态的VCPU可能会被竞争同一个PCPU的另一个VCPU抢占,当持有自旋锁的VCPU被抢占后,竞争同一自旋锁的其它VCPU将一直等待下去。目前,主要有两种解决自旋锁抢占的方式,方式一是:在做自旋等待的循环代码中插入暂停指令(如=PAUSE指令),当持有自旋锁的VCPU被抢占后,运行暂停指令使竞争同一自旋锁的其它VCPU进入忙等状态,当检测到暂停指令的循环时间超过等待阈值时,将这些VCPU重新放入等待队列中进行等待;方式二是:当持有自旋锁的VCPU被抢占后,调用调度算法调度虚拟机上的VCPU运行,如协同调度(C0-SCheduling)算法,该算法可以将出现锁抢占问题的虚拟机上的各个VCPU都调度到不同的PCPU上立刻运行。
[0003]在方式一中,由于自旋锁的等待阈值是固定的,因此无法随虚拟机管理器(virtual machine monitor,VMM)负载运行的变化而动态的调整等待阈值。上述方式二中,由于目前一个VMM只有一种调度算法,因此,当出现锁抢占时只能调用一种调度算法,但这种算法有可能不能解决此时出现的锁抢占问题。可见,VMM的整体性能比较低。

【发明内容】

[0004]本发明公开了 一种自旋锁抢占调度算法选择方法及装置,用于提高虚拟机管理器的整体性能。
[0005]本发明第一方面提供一种自旋锁抢占调度算法选择方法,包括:
[0006]采集PCPU的实时信息,所述实时信息包括:VMM管理的目标虚拟机上处于非休眠状态的VCPU的数量,所述VMM为所述PCPU上运行的VMM ;
[0007]根据所述实时信息分析所述目标虚拟机竞争自旋锁的竞争场景;
[0008]根据所述竞争场景计算所述目标虚拟机针对所述自旋锁的等待阈值;
[0009]从存储的等待阈值与调度算法的关系集中选择所述等待阈值对应的调度算法;
[0010]执行选择的所述调度算法调度所述目标虚拟机上的VCPU。
[0011]结合本发明第一方面,在本发明第一方面的第一种可能的实现方式中,所述采集PCPU的实时信息之前,所述方法还包括:
[0012]将自旋锁的等待阈值划分为多个阈值区间,每个阈值区间分配一种调度算法;
[0013]存储所述多个阈值区间与对应的调度算法,得到等待阈值与调度算法的关系集。[0014]结合本发明第一方面,在本发明第一方面的第二种可能的实现方式中,所述实时信息还包括:
[0015]所述PCPU运行队列中的进程数量和所述PCPU中处于运行状态的PCPU的数量;
[0016]所述根据所述实时信息分析所述目标虚拟机竞争自旋锁的竞争场景,包括:
[0017]根据所述实时信息计算所述目标虚拟机竞争自旋锁的竞争指数;
[0018]根据所述竞争指数分析所述目标虚拟机竞争所述自旋锁的竞争场景。
[0019]结合本发明第一方面的第二种可能的实现方式,在本发明第一方面的第三种可能的实现方式中,所述根据所述竞争指数分析所述目标虚拟机竞争所述自旋锁的竞争场景,包括:
[0020]判断所述目标虚拟机竞争所述自旋锁的竞争指数是否小于或等于预设最小指数,若是,则将所述目标虚拟机竞争所述自旋锁的竞争场景的级别识别为低;
[0021]若否,则判断所述目标虚拟机竞争所述自旋锁的竞争指数是否小于或等于预设最大指数,若是,则将所述目标虚拟机竞争所述自旋锁的所述竞争场景的级别识别为中;
[0022]若否,则将所述目标虚拟机竞争所述自旋锁的所述竞争场景的级别识别为高。
[0023]结合本发明第一方面的第三种可能的实现方式,在本发明第一方面的第四种可能的实现方式中,所述根据所述竞争场景计算所述目标虚拟机针对所述自旋锁的等待阈值,包括:
[0024]判断所述竞争场景的级别是否为低,若是,则减小所述目标虚拟机针对所述自旋锁的等待阈值;
[0025]若否,则判断所述竞争场景的级别是否为中,若是,则保持所述目标虚拟机针对所述自旋锁的等待阈值不变;
[0026]若否,则增加所述目标虚拟机针对所述自旋锁的等待阈值。
[0027]本发明第二方面提供一种自旋锁抢占调度算法选择装置,包括:
[0028]采集模块,用于采集PCPU的实时信息,所述实时信息包括:VMM管理的目标虚拟机上处于非休眠状态的VCPU的数量,所述VMM为所述PCPU上运行的VMM ;
[0029]分析模块,用于根据所述采集模块采集的所述实时信息分析所述目标虚拟机竞争自旋锁的竞争场景;
[0030]计算模块,用于根据所述分析模块分析的所述竞争场景计算所述目标虚拟机针对所述自旋锁的等待阈值;
[0031]选择模块,用于从存储的等待阈值与调度算法的关系集中选择所述等待阈值对应的调度算法;
[0032]执行模块,用于执行所述选择模块选择的所述调度算法调度所述目标虚拟机上的VCPU运行。
[0033]结合本发明第二方面,在本发明第二方面的第一种可能的实现方式中,所述装置还包括:
[0034]分配模块,用于将自旋锁的等待阈值划分为多个阈值区间,每个阈值区间分配一种调度算法;
[0035]存储模块,用于存储所述分配模块获得的所述多个阈值区间与对应的调度算法,得到等待阈值与调度算法的关系集。[0036]结合本发明第二方面,在本发明第二方面的第二种可能的实现方式中,所述实时信息还包括:
[0037]所述PCPU运行队列中的进程数量和所述PCPU中处于运行状态的PCPU的数量;
[0038]所述分析模块包括:
[0039]第一计算单元,用于根据所述采集模块采集的所述实时信息计算所述目标虚拟机竞争自旋锁的竞争指数;
[0040]分析单元,用于根据所述第一计算单元计算的所述竞争指数分析所述目标虚拟机竞争所述自旋锁的竞争场景。
[0041]结合本发明第二方面的第二种可能的实现方式,在本发明第二方面的第三种可能的实现方式中,所述分析单元包括:
[0042]第一判断子单元,用于判断所述第一计算单元计算的所述目标虚拟机竞争所述自旋锁的竞争指数是否小于或等于预设最小指数;
[0043]识别子单元,用于当所述第一判断子单元的判断结果为是时,将所述目标虚拟机竞争所述自旋锁的竞争场景的级别识别为低;
[0044]第二判断子单元,用于当所述第一判断子单元的判断结果为否时,判断所述目标虚拟机竞争所述自旋锁的竞争指数是否小于或等于预设最大指数;
[0045]识别子单元,还用于当所述第二判断子单元的判断结果为是时,将所述目标虚拟机竞争所述自旋锁的所述竞争场景的级别识别为中;
[0046]识别子单元,还用于当所述第二判断子单元的判断结果为否时,将所述目标虚拟机竞争所述自旋锁的所述竞争场景的级别识别为高。
[0047]结合本发明第二方面的第三种可能的实现方式,在本发明第二方面的第四种可能的实现方式中,所述计算模块包括:
[0048]第一判断单元,用于判断所述识别子单元识别的所述竞争场景的级别是否为低;
[0049]第二计算单元,用于当所述第一判断单元的判断结果为是时,减小所述目标虚拟机针对所述自旋锁的等待阈值;
[0050]第二判断单元,用于当所述第一判断单元的判断结果为否时,判断所述识别子单元识别的所述竞争场景的级别是否为中;
[0051]第二计算单元,还用于当所述第二判断单元的判断结果为是时,保持所述目标虚拟机针对所述自旋锁的等待阈值不变;
[0052]第二计算单元,还用于当所述第二判断单元的判断结果为否时,则增加所述目标虚拟机针对所述自旋锁的等待阈值。
[0053]本发明实施例,与现有技术相比,不仅可以根据PCPU的实时信息,计算目标虚拟机针对自旋锁的等待阈值,还可以根据计算得到的等待阈值从存储的等待阈值与调度算法的关系集中选择相应的调度算法,以便调度目标虚拟机上的VCPU运行,因此,可以提高VMM的整体性能。
【专利附图】

【附图说明】
[0054]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0055]图1是本发明实施例公开的一种自旋锁抢占调度算法选择方法的流程图;
[0056]图2是本发明实施例公开的另一种自旋锁抢占调度算法选择方法的流程图;
[0057]图3是本发明实施例公开的一种自旋锁抢占调度算法选择装置的结构图;
[0058]图4是本发明实施例公开的另一种自旋锁抢占调度算法选择装置的结构图。
【具体实施方式】
[0059]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0060]本发明实施例中提供了 一种自旋锁抢占调度算法选择方法及装置,用于提高VMM的整体性能。以下分别进行详细说明。
[0061]请参阅图1,图1是本发明实施例公开的一种自旋锁抢占调度算法选择方法的流程图。图1所示的自旋锁抢占调度算法选择方法适用于各种虚拟化操作平台。如图1所示,该自旋锁抢占调度算法选择方法可以包括以下步骤。
[0062]SlOl、采集PCPU的实时信息,该实时信息包括:VMM管理的目标虚拟机上处于非休眠状态的VCPU的数量,该VMM为PCPU上运行的VMM。
[0063]优选地,VMM可以采集PCPU的实时信息,该实时信息包括:VMM管理的目标虚拟机上处于非休眠状态的VCPU的数量,该VMM为PCPU上运行的VMM。
[0064]可选地,不同时间的PCPU的信息不同,例如,目标虚拟机上的一个VCPU前一刻可能处于休眠状态,而下一刻有可能在PCPU等待队列中处于等待状态、也有可能在PCPU上运行处于运行状态,因此,为了 了解某一时刻的所有PCPU的信息,需要采集此时所有PCPU的实时信息。但具体什么时间采集PCPU的实时信息,可以预先设置一个周期,当预先设置的周期到达时采集PCPU的实时信息,这个预先设置的周期的时间长短可以根据需要设置;也可以在两个采集周期之间,当硬件统计到某一个VCPU的自旋锁的等待时间超过自旋锁的等待阈值时,触发硬件识别机制工作,以触发VMM采集此时PCPU的实时信息。因此,具体采用周期性采集,还是采用触发式采集,根据需要而定,本发明实施例不作限定。其中,自旋锁的等待阈值定义为在VCPU竞争的自旋锁被抢占后,VCPU将处于忙等状态,当VCPU处于忙等状态的时间超过等待阈值时,该VCPU将被重新放入之前的PCPU等待队列中进行等待。非休眠状态为除休眠状态外的其它任何状态,如等待状态、运行状态等。
[0065]S102、根据实时信息分析目标虚拟机竞争自旋锁的竞争场景。
[0066]优选地,VMM可以根据实时信息分析目标虚拟机竞争自旋锁的竞争场景。
[0067]可选地,可以根据采集的实时信息分析目标虚拟机竞争自旋锁的竞争场景,以便了解目标虚拟机竞争自旋锁的环境为宽松、适中或激烈。
[0068]S103、根据竞争场景计算目标虚拟机针对自旋锁的等待阈值。
[0069]优选地,VMM可以根据竞争场景计算目标虚拟机针对自旋锁的等待阈值。
[0070]可选地,为了得到满足此时竞争场景的自旋锁的等待阈值,可以根据目标虚拟机竞争自旋锁的环境为宽松、适中或激烈的状态,适当的调整当前自旋锁的等待阈值。
[0071]S104、从存储的等待阈值与调度算法的关系集中选择等待阈值对应的调度算法。
[0072]优选地,VMM可以从存储的等待阈值与调度算法的关系集中选择等待阈值对应的调度算法。
[0073]可选地,从存储有等待阈值与调度算法的关系集中,查找新的目标虚拟机针对自旋锁的等待阈值对应存储的等待阈值,并根据该等待阈值查找到对应的调度算法。
[0074]S105、执行选择的调度算法调度目标虚拟机上的VCPU运行。
[0075]优选地,VMM可以执行选择的调度算法调度目标虚拟机上的VCPU运行。
[0076]可选地,VMM执行选择的调度算法调度目标虚拟机上的VCPU运行。当选择的是协同调度(co-scheduling,CS)算法时,步骤S105将出现锁抢占问题的虚拟机各个VCPU都调度到不同的PCPU上立刻运行;当选择的是完全公平调度(completely fair schedular,CFS)时,步骤S105将消耗时间过长的VCPU调离PCPU等待队列。
[0077]图1所描述的自旋锁抢占调度算法选择方法中,不仅可以根据PCPU的实时信息,计算目标虚拟机针对自旋锁的等待阈值,还可以根据计算得到的等待阈值从存储的等待阈值与调度算法的关系集中选择相应的调度算法,以便调度目标虚拟机上的VCPU运行,因此,可以提高VMM的整体性能。
[0078]请参阅图2,图2是本发明实施例公开的另一种自旋锁抢占调度算法选择方法的流程图。图2所示的自旋锁抢占调度算法选择方法适用于各种虚拟化操作平台。如图2所示,该自旋锁抢占调度算法选择方法可以包括以下步骤。
[0079]S201、将自旋锁的等待阈值划分为多个阈值区间,每个阈值区间分配一种调度算法。
[0080]可选地,不同的自旋锁的等待阈值意味着竞争自旋锁的环境不同,不同的竞争自旋锁的环境需要不同的调度算法。但为了保证VMM的整体性能,自旋锁的等待阈值不应太大,也不应太小,因此,自旋锁的等待阈值需要预先设置一个最小等待阈值和一个最大等待阈值。将预设最小等待阈值与预设最大等待阈值之间的自旋锁的等待阈值划分为多个阈值区间,每个阈值区间需要的调度算法不同,因此,给每个阈值区间分配一种调度算法。
[0081]举例说明,假设预设最小等待阈值为a,预设最大等待阈值为C,将a与c之间的等待阈值划分为(a,b)和(b,c)两个阈值区间,给(a,b)阈值区间分配CFS算法、(b,c)阈值区间分配CS算法。
[0082]S202、存储多个阈值区间与对应的调度算法,得到等待阈值与调度算法的关系集。
[0083]举例说明,将阈值区间(a,b)与它对应的CFS调度算法,以及阈值区间(b,c)与它对应的CS调度算法进行存储,得到等待阈值与调度算法的关系集。
[0084]S203、采集PCPU的实时信息,该实时信息包括:VMM管理的目标虚拟机上处于非休眠状态的VCPU的数量,该VMM为PCPU上运行的VMM。
[0085]可选地,不同时间的PCPU的信息不同,例如,目标虚拟机上的一个VCPU前一刻可能处于休眠状态,而下一刻有可能在PCPU等待队列中处于等待状态、也有可能在PCPU上运行处于运行状态,因此,为了 了解某一时刻的所有PCPU的信息,需要采集此时所有PCPU的实时信息。但具体什么时间采集PCPU的实时信息,可以预先设置一个周期,当预先设置的周期到达时采集PCPU的实时信息,这个预先设置的周期的时间长短可以根据需要设置;也可以在两个采集周期之间,当硬件统计到某一个VCPU的自旋锁的等待时间超过自旋锁的等待阈值时,触发硬件识别机制工作,以触发VMM采集此时CPU的实时信息。因此,具体采用周期性采集,还是采用触发式采集,根据需要而定,本发明实施例不作限定。其中,自旋锁的等待阈值定义为在VCPU竞争的自旋锁被抢占后,VCPU将处于忙等状态,当VCPU处于忙等状态的时间超过等待阈值时,该VCPU将被重新放入之前的PCPU等待队列中进行等待。非休眠状态为除休眠状态外的其它任何状态,如等待状态、运行状态等。
[0086]S204、根据实时信息分析目标虚拟机竞争自旋锁的竞争场景。
[0087]作为一种可能的实施方式,采集的PCPU的实时信息还可以包括:PCPU运行队列中的进程数量和PCPU中处于运行状态的PCPU的数量。根据实时信息分析目标虚拟机竞争自旋锁的竞争场景,可以包括以下步骤。
[0088]A、根据实时信息计算目标虚拟机竞争自旋锁的竞争指数。
[0089]可选地,可以通过多种计算方法得到目标虚拟机竞争自旋锁的竞争指数。举例说明,假设PCPU运行队列中的进程数量为NT,VMM管理的目标虚拟机上处于非休眠状态的VCPU的数量为NVi, PCPU中处于运行状态的PCPU的数量为NCL,则VMM的平均负载长度AL可以由PCPU运行队列中的进程数量NT除以PCPU中处于运行状态的PCPU的数量NCL,再向下取整得到,即
[0090]AL = [NT/NCL]
[0091]其中,[]表示向下取整;目标虚拟机内最长锁等待VCPU数量VLi比VMM管理的目标虚拟机上处于非休眠状态的VCPU的数量NVi少一,即
[0092]VLi = NV1-1
[0093]目标虚拟机竞争自旋锁的竞争指数LCi可以由VMM的平均负载长度AL乘以目标虚拟机内最长锁等待VCPU数量VLi得到`,即
[0094]LCi = AL^VLi
[0095]其中,下标i表示是第i个目标虚拟机。上述方法是计算自旋锁的竞争指数的其中一种算法,不同的计算方法可能计算得到的竞争指数的数值不相。但不管用什么方法计算目标虚拟机竞争自旋锁的竞争指数、也不管计算的数值是多少,只要能够正确表达出目标虚拟机竞争自旋锁的竞争指数即可。
[0096]B、根据竞争指数分析目标虚拟机竞争自旋锁的竞争场景。
[0097]作为一种可能的实施方式,根据竞争指数分析目标虚拟机竞争自旋锁的竞争场景,可以包括以下步骤。
[0098]B1、判断目标虚拟机竞争自旋锁的竞争指数是否小于或等于预设最小指数,若是,则将目标虚拟机竞争自旋锁的竞争场景的级别识别为低。
[0099]可选地,得到目标虚拟机竞争自旋锁的竞争指数后,将需要根据竞争指数的大小判断目前目标虚拟机竞争自旋锁的竞争场景的级别的高低。当目标虚拟机竞争自旋锁的竞争指数小于或等于预设最小指数时,认为此时目标虚拟机竞争自旋锁的环境比较宽松,将目标虚拟机竞争自旋锁的竞争场景的级别识别为低。
[0100]B2、若否,则判断目标虚拟机竞争自旋锁的竞争指数是否小于或等于预设最大指数,若是,则将目标虚拟机竞争自旋锁的竞争场景的级别识别为中。
[0101]可选地,当目标虚拟机竞争自旋锁的竞争指数大于预设最小指数时,将继续判断目标虚拟机竞争自旋锁的竞争指数是否小于或等于预设最大指数,当目标虚拟机竞争自旋锁的竞争指数大于预设最小指数、且小于或等于预设最大指数时,认为此时目标虚拟机竞争自旋锁的环境比较适中,将目标虚拟机竞争自旋锁的竞争场景的级别识别为中。
[0102]B3、若否,则将目标虚拟机竞争自旋锁的竞争场景的级别识别为高。
[0103]可选地,当目标虚拟机竞争自旋锁的竞争指数大于预设最大指数时,认为此时目标虚拟机竞争自旋锁的环境比较激烈,将目标虚拟机竞争自旋锁的竞争场景的级别识别为高。其中,预设最小指数与预设最大指数是将计算得到的目标虚拟机竞争自旋锁的竞争指数进行标准化处理得到的,如果采用的是0-1标准化处理,则预设最小指数为O、预设最大指数为1,如果采用采用的是0-2标准化处理,则预设最小指数为O、预设最大指数为2。因此,预设最小指数与预设最大指数将根据不同的标准化处理得到不同的值,具体采用那种标准化处理方式,以及最小指数与预设最大指数为多少,可以根据需要而定,本发明实施例不作限定。
[0104]S205、根据竞争场景计算目标虚拟机针对自旋锁的等待阈值。
[0105]作为一种可能的实施方式,根据竞争场景计算目标虚拟机针对自旋锁的等待阈值,可以包括以下步骤。
[0106]A、判断竞争场景的级别是否为低,若是,则减小目标虚拟机针对自旋锁的等待阈值。
[0107]可选地,当判断目标虚拟机竞争自旋锁的竞争场景的级别为低时,认为当前竞争自旋锁的环境比较宽松,可以适当的减小目标虚拟机针对自旋锁的等待阈值,提高目标虚拟机的竞争强度。
[0108]B、若否,则判断竞争场景的级别是否为中,若是,则保持目标虚拟机针对自旋锁的等待阈值不变。
[0109]可选地,当判断目标虚拟机竞争自旋锁的竞争场景的级别不为低时,将继续判断目标虚拟机竞争自旋锁的竞争场景是否为中,当目标虚拟机竞争自旋锁的竞争场景的级别为中时,认为当前竞争自旋锁的环境比较适中,目标虚拟机针对自旋锁的等待阈值可以保持不变。
[0110]C、若否,则增大目标虚拟机针对自旋锁的等待阈值。
[0111]可选地,当目标虚拟机竞争自旋锁的竞争场景的级别为高时,认为当前竞争自旋锁的环境比较激烈,可以适当的增加目标虚拟机针对自旋锁的等待阈值,适当降低目标虚拟机的竞争强度。
[0112]本实施例中,可以有多种计算目标虚拟机针对自旋锁的等待阈值的方法,举例说明,假设预设最小等待阈值为Min,预设最大阈值为Max,当前目标虚拟机针对自旋锁的等待阈值为W,新的目标虚拟机针对自旋锁的等待阈值为W1,当前自旋锁的等待阀值调整的步长为delta,当目标虚拟机竞争自旋锁的竞争场景的级别为低时,新的目标虚拟机针对自旋锁的等待阈值为W1可以由以下公式得到:`[0113]W1 = max (ff-delta, Min)
[0114]delta! = delta/2
[0115]当目标虚拟机竞争自旋锁的竞争场景的级别识别为中时,新的目标虚拟机针对自旋锁的等待阈值为W1可以由以下公式得到:[0116]W1 = W
[0117]Cielta1 = delta
[0118]当目标虚拟机竞争自旋锁的竞争场景的级别为高时,新的目标虚拟机针对自旋锁的等待阈值为W1可以由以下公式得到:
[0119]W1 = min (W+delta, Max)
[0120]Cielta1 = delta*2
[0121]初始化的自旋锁的等待阀值调整的步长为delta/4,其中,Clelta1为新的自旋锁的等待阀值调整的步长。不仅可以用当前的等待阈值,计算新的等待阈值,还可以用多次历史数据和二分迭代法计算新的等待阈值,具体用那一次的等待阈值和那种计算方法计算新的等待阈值,本发明实施例不作限定。
[0122]S206、从存储的等待阈值与调度算法的关系集中选择等待阈值对应的调度算法。
[0123]可选地,从存储有等待阈值与调度算法的关系集中,查找新的目标虚拟机针对自旋锁的等待阈值对应存储的那个阈值区间,并根据该阈值区间查找到对应的调度算法。举例说明,当新的等待阈值落在阈值区间(a,b)里面时,将选择CFS调度算法;当新的等待阈值落在阈值区间(b,c)里面时,将选择CS调度算法。
[0124]S207、执行选择的调度算法调度目标虚拟机上的VCPU运行。
[0125]可选地,VMM可以执行选择的调度算法调度目标虚拟机上的VCPU运行。当选择的是CS调度算法时,步骤S207将出现锁抢占问题的虚拟机各个VCPU都调度到不同的PCPU上立刻运行;当选择的是CFS调度算法时,步骤S207将消耗时间过长的VCPU调离PCPU等待队列。
[0126]图2所描述的自旋锁抢占调度算法选择方法中,不仅可以根据PCPU的实时信息,计算目标虚拟机针对自旋锁的等待阈值,还可以根据计算得到的等待阈值从存储的等待阈值与调度算法的关系集中选择相应的调度算法,以便调度目标虚拟机上的VCPU运行,因此,可以提高VMM的整体性能。
[0127]请参阅图3,图3是本发明实施例公开的一种自旋锁抢占调度算法选择装置的结构图。图3所示的自旋锁抢占调度算法选择装置适用于各种虚拟化操作平台。如图3所示,该自旋锁抢占调度算法选择装置300可以包括:
[0128]采集模块301,用于采集PCPU的实时信息,该实时信息包括:VMM管理的目标虚拟机上处于非休眠状态的VCPU的数量,该VMM为PCPU上运行的VMM ;
[0129]分析模块302,用于根据采集模块301采集的实时信息分析目标虚拟机竞争自旋锁的竞争场景;
[0130]计算模块303,用于根据分析模块302分析的竞争场景计算目标虚拟机针自旋锁的等待阈值;
[0131]选择模块304,用于从存储的等待阈值与调度算法的关系集中选择等待阈值对应的调度算法;
[0132]执行模块305,用于执行选择模块304选择的调度算法调度目标虚拟机上的VCPU运行。
[0133]作为一种可能的实施方式,该自旋锁抢占调度算法选择装置300还可以包括:
[0134]分配模块306,用于将自旋锁的等待阈值划分为多个阈值区间,每个阈值区间分配一种调度算法;
[0135]存储模块307,用于存储分配模块306获得的多个阈值区间与对应的调度算法,得到等待阈值与调度算法的关系集。
[0136]作为一种可能的实施方式,实时信息还可以包括:
[0137]PCPU运行队列中的进程数量和PCPU中处于运行状态的PCPU的数量;
[0138]分析模块302可以包括:
[0139]第一计算单元3021,用于根据采集模块301采集的实时信息计算目标虚拟机竞争自旋锁的竞争指数;
[0140]分析单元3022,用于根据第一计算单元3021计算的竞争指数分析目标虚拟机竞争自旋锁的竞争场景。
[0141]作为一种可能的实施方式,分析单元3022可以包括:
[0142]第一判断子单元30221,用于判断第一计算单元3021计算的目标虚拟机竞争自旋锁的竞争指数是否小于或等于预设最小指数;
[0143]识别子单元30222,用于当第一判断子单元30221的判断结果为是时,将目标虚拟机竞争自旋锁的竞争场景的级别识别为低;
[0144]第二判断子单元30223,用于当第一判断子单元30221的判断结果为否时,判断目标虚拟机竞争自旋锁的竞争指数是否小于或等于预设最大指数;
[0145]识别子单元30222,还用于当第二判断子单元30223的判断结果为是时,将目标虚拟机竞争自旋锁的竞争场景的级别识别为中;
[0146]识别子单元30222,还用于当第二判断子单元30223的判断结果为否时,将目标虚拟机竞争自旋锁的竞争场景的级别识别为高。
[0147]作为一种可能的实施方式,计算模块303可以包括:
[0148]第一判断单元3031,用于判断识别子单元30222识别的竞争场景的级别是否为低;
[0149]第二计算单元3032,用于当第一判断单元3031的判断结果为是时,减小目标虚拟机针对自旋锁的等待阈值;
[0150]第二判断单元3033,用于当第一判断单元3031的判断结果为否时,判断识别子单元识别的竞争场景的级别是否为中;
[0151]第二计算单元3032,还用于当第二判断单元3033的判断结果为是时,保持目标虚拟机针对自旋锁的等待阈值不变;
[0152]第二计算单元3032,还用于当第二判断单元3033的判断结果为否时,则增加目标虚拟机针对自旋锁的等待阈值。
[0153]本实施例中,选择模块304具体用于从存储模块307存储的等待阈值与调度算法的关系集中选择等待阈值对应的调度算法。
[0154]图3所描述的自旋锁抢占调度算法选择装置中,不仅可以根据PCPU的实时信息,计算目标虚拟机针对自旋锁的等待阈值,还可以根据计算得到的等待阈值从存储的等待阈值与调度算法的关系集中选择相应的调度算法,以便调度目标虚拟机上的VCPU运行,因此,可以提高VMM的整体性能。
[0155]请参阅图4,图4是本发明实施例公开的另一种自旋锁抢占调度算法选择装置的结构图,用于执行本发明实施例公开的自旋锁抢占调度算法选择方法。如图4所示,该自旋锁抢占调度算法选择装置400可以包括输入模块401、输出模块402和处理器403。在本发明的一些实施例中,输入装置401和处理器403之间、输出装置402和处理器403之间可以通过总线或其他方式连接,其中,图4中以通过总线连接为例。
[0156]其中,处理器403可以执行如下步骤:
[0157]采集PCPU的实时信息,该实时信息包括:VMM管理的目标虚拟机上处于非休眠状态的VCPU的数量,该VMM为PCPU上运行的VMM ;
[0158]根据实时信息分析目标虚拟机竞争自旋锁的竞争场景;
[0159]根据竞争场景计算目标虚拟机针对自旋锁的等待阈值;
[0160]从存储的等待阈值与调度算法的关系集中选择等待阈值对应的调度算法;
[0161]执行选择的调度算法调度目标虚拟机上的VCPU运行。
[0162]作为一种可能的实施方式,处理器403还可以执行如下步骤:
[0163]将自旋锁的等待阈值划分为多个阈值区间,每个阈值区间分配一种调度算法;
[0164]存储多个阈值区间与对应的调度算法,得到等待阈值与调度算法的关系集。
[0165]作为一种可能的实施方式,该实时信息还可以包括:
[0166]PCPU运行队列中的进程数量和PCPU中处于运行状态的PCPU的数量;
[0167]处理器403根据实时信息分析目标虚拟机竞争自旋锁的竞争场景的方式具体为:
[0168]根据实时信息计算目标虚拟机竞争自旋锁的竞争指数;
[0169]根据竞争指数分析目标虚拟机竞争自旋锁的竞争场景。
[0170]作为一种可能的实施方式,处理器403根据竞争指数分析目标虚拟机竞争自旋锁的竞争场景的方式具体为:
[0171]判断目标虚拟机竞争自旋锁的竞争指数是否小于或等于预设最小指数,若是,则将目标虚拟机竞争自旋锁的竞争场景的级别识别为低;
[0172]若否,则判断目标虚拟机竞争自旋锁的竞争指数是否小于或等于预设最大指数,若是,则将目标虚拟机竞争自旋锁的竞争场景的级别识别为中;
[0173]若否,则将目标虚拟机竞争自旋锁的竞争场景的级别识别为高。
[0174]作为一种可能的实施方式,处理器403根据竞争场景计算目标虚拟机针对自旋锁的等待阈值的方式具体为:
[0175]判断竞争场景的级别是否为低,若是,则减小目标虚拟机针对自旋锁的等待阈值;
[0176]若否,则判断竞争场景的级别是否为中,若是,则保持目标虚拟机针对自旋锁的等待阈值不变;
[0177]若否,增加目标虚拟机针对自旋锁的等待阈值。
[0178]图4所描述的自旋锁抢占调度算法选择装置中,不仅可以根据PCPU的实时信息,计算目标虚拟机针对自旋锁的等待阈值,还可以根据计算得到的等待阈值从存储的等待阈值与调度算法的关系集中选择相应的调度算法,以便调度目标虚拟机上的VCPU运行,因此,可以提高VMM的整体性能。
[0179]—个实施例中,本发明实施例进一步公开一种计算机存储介质,该计算机存储介质存储有计算机程序,当计算机存储介质中的计算机程序被读取到计算机时,能够使得计算机完成本发明实施例公开的自旋锁抢占调度算法选择方法的全部步骤。
[0180]本领域普通技术人员可以理解上述实施例的各种方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:闪存盘、只读存储器(Read-Only Memory,ROM)、随机存取器(Random AccessMemory, RAM)、磁盘或光盘等。
[0181]以上对本发明实施例所提供的自旋锁抢占调度算法选择方法及装置进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在【具体实施方式】及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
【权利要求】
1.一种自旋锁抢占调度算法选择方法,其特征在于,包括: 采集物理中央处理器的实时信息,所述实时信息包括:虚拟机管理器管理的目标虚拟机上处于非休眠状态的虚拟中央处理器的数量,所述虚拟机管理器为所述物理中央处理器上运行的虚拟机管理器; 根据所述实时信息分析所述目标虚拟机竞争自旋锁的竞争场景; 根据所述竞争场景计算所述目标虚拟机针对所述自旋锁的等待阈值; 从存储的等待阈值与调度算法的关系集中选择所述等待阈值对应的调度算法; 执行选择的所述调度算法调度所述目标虚拟机上的虚拟中央处理器运行。
2.如权利要求1所述的方法,其特征在于,所述采集物理中央处理器的实时信息之前,所述方法还包括: 将自旋锁的等待阈值划分为多个阈值区间,每个阈值区间分配一种调度算法; 存储所述多个阈值区间与对应的调度算法,得到等待阈值与调度算法的关系集。
3.如权利要求1所述的方法,其特征在于,所述实时信息还包括: 所述物理中央处理器 运行队列中的进程数量和所述物理中央处理器中处于运行状态的物理中央处理器的数量; 所述根据所述实时信息分析所述目标虚拟机竞争自旋锁的竞争场景,包括: 根据所述实时信息计算所述目标虚拟机竞争自旋锁的竞争指数; 根据所述竞争指数分析所述目标虚拟机竞争所述自旋锁的竞争场景。
4.如权利要求3所述的方法,其特征在于,所述根据所述竞争指数分析所述目标虚拟机竞争所述自旋锁的竞争场景,包括: 判断所述目标虚拟机竞争所述自旋锁的竞争指数是否小于或等于预设最小指数,若是,则将所述目标虚拟机竞争所述自旋锁的竞争场景的级别识别为低; 若否,则判断所述目标虚拟机竞争所述自旋锁的竞争指数是否小于或等于预设最大指数,若是,则将所述目标虚拟机竞争所述自旋锁的所述竞争场景的级别识别为中; 若否,则将所述目标虚拟机竞争所述自旋锁的所述竞争场景的级别识别为高。
5.如权利要求4所述的方法,其特征在于,所述根据所述竞争场景计算所述目标虚拟机针对所述自旋锁的等待阈值,包括: 判断所述竞争场景的级别是否为低,若是,则减小所述目标虚拟机针对所述自旋锁的等待阈值; 若否,则判断所述竞争场景的级别是否为中,若是,则保持所述目标虚拟机针对所述自旋锁的等待阈值不变; 若否,则增加所述目标虚拟机针对所述自旋锁的等待阈值。
6.一种自旋锁抢占调度算法选择装置,其特征在于,包括: 采集模块,用于采集物理中央处理器的实时信息,所述实时信息包括:虚拟机管理器管理的目标虚拟机上处于非休眠状态的虚拟中央处理器的数量,所述虚拟机管理器为所述物理中央处理器上运行的虚拟机管理器; 分析模块,用于根据所述采集模块采集的所述实时信息分析所述目标虚拟机竞争自旋锁的竞争场景; 计算模块,用于根据所述分析模块分析的所述竞争场景计算所述目标虚拟机针对所述自旋锁的等待阈值; 选择模块,用于从存储的等待阈值与调度算法的关系集中选择所述等待阈值对应的调度算法; 执行模块,用于执行所述选择模块选择的所述调度算法调度所述目标虚拟机上的虚拟中央处理器运行。
7.如权利要求6所述的装置,其特征在于,所述装置还包括: 分配模块,用于将自旋锁的等待阈值划分为多个阈值区间,每个阈值区间分配一种调度算法; 存储模块,用于存储所述分配模块获得的所述多个阈值区间与对应的调度算法,得到等待阈值与调度算法的关系集。
8.如权利要求6所述的装置,其特征在于,所述实时信息还包括: 所述物理中央处理器运行队列中的进程数量和所述物理中央处理器中处于运行状态的物理中央处理器的数量; 所述分析模块包括: 第一计算单元,用于根据所述采集模块采集的所述实时信息计算所述目标虚拟机竞争自旋锁的竞争指数; 分析单元,用于根据所述第一计算单元计算的所述竞争指数分析所述目标虚拟机竞争所述自旋锁的竞争场景。
9.如权利要求8所述的装置,其特征在于,所述分析单元包括: 第一判断子单元,用于判断所述第一计算单元计算的所述目标虚拟机竞争所述自旋锁的竞争指数是否小于或等于预设最小指数; 识别子单元,用于当所述第一判断子单元的判断结果为是时,将所述目标虚拟机竞争所述自旋锁的竞争场景的级别识别为低; 第二判断子单元,用于当所述第一判断子单元的判断结果为否时,判断所述目标虚拟机竞争所述自旋锁的竞争指数是否小于或等于预设最大指数; 识别子单元,还用于当所述第二判断子单元的判断结果为是时,将所述目标虚拟机竞争所述自旋锁的所述竞争场景的级别识别为中; 识别子单元,还用于当所述第二判断子单元的判断结果为否时,将所述目标虚拟机竞争所述自旋锁的所述竞争场景的级别识别为高。
10.如权利要求9所述的装置,其特征在于,所述计算模块包括: 第一判断单元,用于判断所述识别子单元识别的所述竞争场景的级别是否为低;第二计算单元,用于当所述第一判断单元的判断结果为是时,减小所述目标虚拟机针对所述自旋锁的等待阈值; 第二判断单元,用于当所述第一判断单元的判断结果为否时,判断所述识别子单元识别的所述竞争场景的级别是否为中; 第二计算单元,还用于当所述第二判断单元的判断结果为是时,保持所述目标虚拟机针对所述自旋锁的等待阈值不变; 第二计算单元,还用于当所述第二判断单元的判断结果为否时,则增加所述目标虚拟机针对所述自旋锁的等待阈值。
【文档编号】G06F9/46GK103729242SQ201310705505
【公开日】2014年4月16日 申请日期:2013年12月19日 优先权日:2013年12月19日
【发明者】于璠, 王振国 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1