CN103823712A - 一种多cpu虚拟机系统的数据流处理方法和装置 - Google Patents
一种多cpu虚拟机系统的数据流处理方法和装置 Download PDFInfo
- Publication number
- CN103823712A CN103823712A CN201410097861.6A CN201410097861A CN103823712A CN 103823712 A CN103823712 A CN 103823712A CN 201410097861 A CN201410097861 A CN 201410097861A CN 103823712 A CN103823712 A CN 103823712A
- Authority
- CN
- China
- Prior art keywords
- cpu
- forwarding
- data stream
- forwarding cpu
- state
- 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.)
- Granted
Links
Images
Abstract
本发明公开了一种多CPU虚拟机系统的数据流处理方法和装置,该方法包括:虚拟机确定自身转发CPU的CPU占用率,并确定自身转发CPU的运行状态;如果当前不存在超负荷状态的转发CPU,且当前存在至少两个低负荷状态的转发CPU,则所述虚拟机从低负荷状态的转发CPU中选择待转出数据流的转发CPU和待转入数据流的转发CPU;所述虚拟机指示所述待转出数据流的转发CPU转出数据流,释放所述待转出数据流的转发CPU的CPU资源,并指示所述待转入数据流的转发CPU转入数据流。本发明实施例中,可以合理使用CPU资源,避免CPU资源的浪费,提升CPU资源的利用效率。
Description
技术领域
本发明涉及通信技术领域,尤其是涉及一种多CPU虚拟机系统的数据流处理方法和装置。
背景技术
目前物理CPU(Central Processing Unit,中央处理器)通常包括多个处理内核,每个处理内核可以包括多个线程,并且每个线程对业务处理系统来说就是一个CPU,后续的CPU可以指物理CPU的处理内核中包括的线程。
在数据包转发系统(以数据包转发以及相关业务处理为主要业务的系统)中,如果数据包转发系统包含多个CPU,则为了更好的利用CPU资源,将多个CPU划分为接收分流CPU(简称接收CPU)和转发及业务处理CPU(简称转发CPU)。接收CPU从物理接口(Interface)接收数据流(将连续处理的特征比较相似的一组数据包(数据包也可称为数据报文)称为一条数据流,比如将源/目的地址,源/目的端口,协议号都相同的一组数据包称为一条数据流)后,按照一定规则进行分流,并将分流后的数据流分配到不同的处理队列。
以接收CPU按照Hash规则分流为例进行说明,如图1所示,处理队列1用于缓存Hash结果为0的数据流,处理队列2用于缓存Hash结果为1数据流,处理队列3用于缓存Hash结果为2的数据流,处理队列4用于缓存Hash结果为3的数据流,处理队列5用于缓存Hash结果为4的数据流,处理队列6用于缓存Hash结果为5的数据流。例如,接收CPU在接收到数据流之后,通过Hash算法对该数据流进行Hash处理,如果Hash结果为1,则将该数据流缓存到处理队列2。为充分利用CPU资源,由转发CPU1负责处理队列1和处理队列3内缓存的数据流,由转发CPU2负责处理队列2和处理队列4内缓存的数据流,由转发CPU3负责处理队列5内缓存的数据流,由转发CPU4负责处理队列6内缓存的数据流。
如果有多个数据包转发系统共同使用所有的CPU资源(即上述接收CPU以及转发CPU),如:在具体应用中,物理主机上虚拟化出多个虚拟机(VM),且每个虚拟机可以是上述的数据包转发系统,并且各虚拟机均需要使用物理主机上的CPU资源,在此情况下,则:在一个虚拟机使用物理主机上的CPU资源时,其它虚拟机将无法使用该虚拟机所使用的CPU资源,只有当该虚拟机完成处理并释放该CUP资源后,其它虚拟机才能够使用该CPU资源,从而导致无法合理的使用物理主机上的CPU资源,造成CPU资源的浪费。
发明内容
本发明实施例提供一种多CPU虚拟机系统的数据流处理方法和装置,以合理的使用物理主机上的CPU资源,并且避免造成CPU资源的浪费。
为了达到上述目的,本发明实施例提供一种多中央处理器CPU虚拟机系统的数据流处理方法,所述方法包括以下步骤:
虚拟机确定自身转发CPU的CPU占用率,并确定自身转发CPU的运行状态;其中,转发CPU的运行状态具体包括:无负荷状态、或者低负荷状态、或者正常负荷状态、或者超负荷状态;
如果当前不存在运行状态为超负荷状态的转发CPU,且当前存在两个以上运行状态为低负荷状态的转发CPU,所述虚拟机从所述两个以上低负荷状态的转发CPU中选择待转出数据流的转发CPU和待转入数据流的转发CPU;
所述虚拟机指示所述待转出数据流的转发CPU转出自身需要处理的数据流,释放所述待转出数据流的转发CPU的CPU资源,以使所述待转出数据流的转发CPU能够分配给其它虚拟机;以及,所述虚拟机指示所述待转入数据流的转发CPU转入所述待转出数据流的转发CPU转出的数据流。
针对一个CPU占用率计算周期,所述虚拟机确定自身转发CPU的CPU占用率的过程,具体包括:针对转发CPU对应的处理序列内的每个处理队列,所述虚拟机确定每次对该处理队列内缓存的数据流进行处理的时间;
所述虚拟机确定所述CPU占用率计算周期内所有对该处理队列内缓存的数据流进行处理的时间之和为该处理队列的有效消耗时间;
所述虚拟机确定所述转发CPU对应的处理序列内的所有处理队列的有效消耗时间之和为该处理序列内所有处理队列的有效消耗所占时间;
所述虚拟机确定所述转发CPU的CPU占用率具体为:处理序列内所有处理队列的有效消耗所占时间除以所述CPU占用率计算周期。
针对一个CPU占用率计算周期,所述虚拟机确定自身转发CPU的运行状态的过程,具体包括:
当转发CPU的CPU占用率为0时,所述虚拟机确定所述转发CPU的运行状态为无负荷状态;当转发CPU的CPU占用率大于0,且小于等于预设第一阈值时,所述虚拟机确定所述转发CPU的运行状态为低负荷状态;当转发CPU的CPU占用率大于所述预设第一阈值,且小于等于预设第二阈值时,所述虚拟机确定所述转发CPU的运行状态为正常负荷状态;当转发CPU的CPU占用率大于所述预设第二阈值时,所述虚拟机确定所述转发CPU的运行状态为超负荷状态;其中,所述预设第二阈值大于所述预设第一阈值。
所述虚拟机从所述两个以上低负荷状态的转发CPU中选择待转出数据流的转发CPU和待转入数据流的转发CPU的过程,具体包括:
所述虚拟机确定所述两个以上低负荷状态的转发CPU分别对应的处理序列内的处理队列的数量,选择处理序列内的处理队列的数量最少的低负荷状态的转发CPU为所述待转出数据流的转发CPU,选择处理序列内的处理队列的数量最多的低负荷状态的转发CPU为所述待转入数据流的转发CPU。
所述虚拟机指示所述待转出数据流的转发CPU转出自身需要处理的数据流,具体包括:所述虚拟机设置所述待转出数据流的转发CPU的调整状态为转出状态;由所述待转出数据流的转发CPU在获知本转发CPU的调整状态为转出状态时,从对应的处理序列内删除所有处理队列,在待转区域内标记该处理序列内的所有处理队列需要由所述待转入数据流的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态;或者,由所述待转出数据流的转发CPU在获知本转发CPU的调整状态为转出状态时,利用对应的处理序列内的各处理队列的有效消耗时间从该处理序列内选择处理队列,删除该选择的处理队列,并在待转区域内标记该选择的处理队列需要由所述待转入数据流的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态;
虚拟机指示所述待转入数据流的转发CPU转入所述待转出数据流的转发CPU转出的数据流,具体包括:所述虚拟机设置所述待转入数据流的转发CPU的调整状态为转入状态;由待转入数据流的转发CPU在获知本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的处理队列添加到自身对应的处理序列内,并设置本转发CPU的调整状态为无调整状态。
所述虚拟机使所述待转出数据流的转发CPU能够分配给其它虚拟机的过程,具体包括:
在所述待转出数据流的转发CPU的CPU资源均被释放后,所述虚拟机停止所述待转出数据流的转发CPU上的所有线程,以使所述待转出数据流的转发CPU休眠,以使所述待转出数据流的转发CPU能够分配给其它虚拟机。
所述方法进一步包括:如果当前存在运行状态为超负荷状态的转发CPU,且所述超负荷状态的转发CPU对应的处理序列内有多个处理队列,并且当前存在运行状态为低负荷状态或者无负荷状态的转发CPU,所述虚拟机指示所述超负荷状态的转发CPU转出自身需要处理的数据流,指示所述低负荷状态或者无负荷状态的转发CPU转入所述超负荷状态的转发CPU转出的数据流。
所述虚拟机指示所述超负荷状态的转发CPU转出自身需要处理的数据流,具体包括:所述虚拟机设置所述超负荷状态的转发CPU的调整状态为转出状态;由所述超负荷状态的转发CPU在获知本转发CPU的调整状态为转出状态时,利用对应的处理序列内的各处理队列的有效消耗时间从该处理序列内选择处理队列,删除该选择的处理队列,并在待转区域内标记该选择的处理队列需要由所述低负荷状态或者无负荷状态的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态;
所述虚拟机指示所述低负荷状态或者无负荷状态的转发CPU转入所述超负荷状态的转发CPU转出的数据流,具体包括:如果当前存在运行状态为低负荷状态的转发CPU,则所述虚拟机设置所述低负荷状态的转发CPU的调整状态为转入状态,如果当前不存在运行状态为低负荷状态的转发CPU,但是当前存在运行状态为无负荷状态的转发CPU,则所述虚拟机设置所述无负荷状态的转发CPU的调整状态为转入状态;由所述低负荷状态或者无负荷状态的转发CPU在获知本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的处理队列添加到自身对应的处理序列内,并设置本转发CPU的调整状态为无调整状态。
本发明实施例提供一种多中央处理器CPU虚拟机系统的数据流处理装置,所述多CPU虚拟机系统的数据流处理装置包括虚拟机,所述虚拟机包括:
确定模块,用于确定虚拟机自身转发CPU的CPU占用率,并确定虚拟机自身转发CPU的运行状态;其中,转发CPU的运行状态具体包括:无负荷状态、或者低负荷状态、或者正常负荷状态、或者超负荷状态;
选择模块,用于在当前不存在运行状态为超负荷状态的转发CPU,且当前存在两个以上运行状态为低负荷状态的转发CPU时,从两个以上低负荷状态的转发CPU中选择待转出数据流的转发CPU和待转入数据流的转发CPU;
指示模块,用于指示所述待转出数据流的转发CPU转出自身需要处理的数据流,释放所述待转出数据流的转发CPU的CPU资源,以使所述待转出数据流的转发CPU能够分配给其它虚拟机;以及,指示所述待转入数据流的转发CPU转入所述待转出数据流的转发CPU转出的数据流。
所述确定虚拟机自身转发CPU的CPU占用率,具体包括:针对一个CPU占用率计算周期,针对转发CPU对应的处理序列内的每个处理队列,确定每次对该处理队列内缓存的数据流进行处理的时间;以及,确定所述CPU占用率计算周期内所有对该处理队列内缓存的数据流进行处理的时间之和为该处理队列的有效消耗时间;以及,确定所述转发CPU对应的处理序列内的所有处理队列的有效消耗时间之和为该处理序列内所有处理队列的有效消耗所占时间;以及,确定所述转发CPU的CPU占用率具体为:处理序列内所有处理队列的有效消耗所占时间除以所述CPU占用率计算周期。
所述确定虚拟机自身转发CPU的运行状态,具体包括:针对一个CPU占用率计算周期,当转发CPU的CPU占用率为0时,确定所述转发CPU的运行状态为无负荷状态;当转发CPU的CPU占用率大于0,且小于等于预设第一阈值时,确定所述转发CPU的运行状态为低负荷状态;当转发CPU的CPU占用率大于所述预设第一阈值,且小于等于预设第二阈值时,确定所述转发CPU的运行状态为正常负荷状态;当转发CPU的CPU占用率大于所述预设第二阈值时,确定所述转发CPU的运行状态为超负荷状态;其中,所述预设第二阈值大于所述预设第一阈值。
所述从两个以上低负荷状态的转发CPU中选择待转出数据流的转发CPU和待转入数据流的转发CPU,具体包括:确定所述两个以上低负荷状态的转发CPU分别对应的处理序列内的处理队列的数量,选择处理序列内的处理队列的数量最少的低负荷状态的转发CPU为所述待转出数据流的转发CPU,选择处理序列内的处理队列的数量最多的低负荷状态的转发CPU为所述待转入数据流的转发CPU。
所述指示所述待转出数据流的转发CPU转出自身需要处理的数据流,具体包括:设置所述待转出数据流的转发CPU的调整状态为转出状态;由所述待转出数据流的转发CPU在获知本转发CPU的调整状态为转出状态时,从对应的处理序列内删除所有处理队列,在待转区域内标记该处理序列内的所有处理队列需要由所述待转入数据流的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态;或者,由所述待转出数据流的转发CPU在获知本转发CPU的调整状态为转出状态时,利用对应的处理序列内的各处理队列的有效消耗时间从该处理序列内选择处理队列,删除该选择的处理队列,并在待转区域内标记该选择的处理队列需要由所述待转入数据流的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态;
所述指示所述待转入数据流的转发CPU转入所述待转出数据流的转发CPU转出的数据流,具体包括:设置所述待转入数据流的转发CPU的调整状态为转入状态;由待转入数据流的转发CPU在获知本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的处理队列添加到自身对应的处理序列内,并设置本转发CPU的调整状态为无调整状态。
所述使所述待转出数据流的转发CPU能够分配给其它虚拟机,具体包括:在所述待转出数据流的转发CPU的CPU资源均被释放后,停止所述待转出数据流的转发CPU上的所有线程,以使所述待转出数据流的转发CPU休眠,以使所述待转出数据流的转发CPU能够分配给其它虚拟机。
所述指示模块,还用于在当前存在运行状态为超负荷状态的转发CPU,且所述超负荷状态的转发CPU对应的处理序列内有多个处理队列,并且当前存在运行状态为低负荷状态或者无负荷状态的转发CPU时,指示所述超负荷状态的转发CPU转出自身需要处理的数据流,并指示所述低负荷状态或者无负荷状态的转发CPU转入所述超负荷状态的转发CPU转出的数据流。
所述指示超负荷状态的转发CPU转出自身需要处理的数据流,具体包括:设置超负荷状态的转发CPU的调整状态为转出状态;由超负荷状态的转发CPU在获知本转发CPU的调整状态为转出状态时,利用对应的处理序列内的各处理队列的有效消耗时间从该处理序列内选择处理队列,删除该选择的处理队列,在待转区域内标记该选择的处理队列需要由所述低负荷状态或者无负荷状态的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态;
所述指示低负荷状态或者无负荷状态的转发CPU转入所述超负荷状态的转发CPU转出的数据流,具体包括:如果当前存在运行状态为低负荷状态的转发CPU,则设置所述低负荷状态的转发CPU的调整状态为转入状态,如果当前不存在运行状态为低负荷状态的转发CPU,但是当前存在运行状态为无负荷状态的转发CPU,则设置所述无负荷状态的转发CPU的调整状态为转入状态;由低负荷状态或者无负荷状态的转发CPU在获知本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的处理队列添加到自身对应的处理序列内,并设置本转发CPU的调整状态为无调整状态。
与现有技术相比,本发明实施例至少具有以下优点:本发明实施例中,当存在两个以上的运行状态为低负荷状态的转发CPU时,能够释放部分低负荷状态的转发CPU的CPU资源,以使部分低负荷状态的转发CPU能够及时分配给其它虚拟机,从而合理的使用物理主机上的CPU资源,避免造成CPU资源的浪费,并充分利用CPU资源,并提升CPU资源的利用效率。
附图说明
图1是现有技术中按照Hash规则分流的应用示意图;
图2是本发明实施例中的多CPU虚拟机系统的数据流处理方法流程图;
图3是本发明实施例中的多CPU数据流处理装置的结构示意图。
具体实施方式
针对现有技术中存在的问题,本发明实施例提供一种多CPU虚拟机系统的数据流处理方法,该方法应用在包括一个或多个虚拟机的物理主机上。
该物理主机至少包括一个或多个接收CPU以及多个转发CPU;接收CPU负责从物理接口接收数据流,并按照一定规则(如Hash规则,后续过程中以Hash规则为例进行说明)进行分流,并将分流后的数据流分配到不同的处理队列;转发CPU负责处理对应的处理队列内缓存的数据流,该处理过程具体可以为转发对应的处理队列内缓存的数据流,或者,对相应的处理队列内缓存的数据流进行相关业务处理。进一步的,各转发CPU分别对应有处理序列,且处理序列内记录有需要由相应的转发CPU进行处理的处理队列,并且各转发CPU均用于处理本转发CPU对应的处理队列内缓存的数据流。
针对物理主机上虚拟化出的多个虚拟机,各虚拟机均需要使用物理主机上的CPU资源,即上述的接收CPU以及转发CPU。在一个虚拟机使用物理主机上的CPU资源时,其它虚拟机将无法同时使用该虚拟机使用的CPU资源。
以图1为本发明实施例的应用场景,假设虚拟机当前同时占用物理主机上的转发CPU1、转发CPU2、转发CPU3和转发CPU4;该转发CPU1对应的处理序列内记录有处理队列1和处理队列3,即转发CPU1负责处理队列1和处理队列3内缓存的数据流,且处理队列1用于缓存Hash结果为0的数据流,处理队列3用于缓存Hash结果为2的数据流;转发CPU2对应的处理序列内记录有处理队列2和处理队列4,即转发CPU2负责处理队列2和处理队列4内缓存的数据流,且处理队列2用于缓存Hash结果为1数据流,处理队列4用于缓存Hash结果为3的数据流;转发CPU3对应的处理序列内记录有处理队列5,即转发CPU3负责处理队列5内缓存的数据流,且处理队列5用于缓存Hash结果为4的数据流;转发CPU4对应的处理序列内记录有处理队列6,即转发CPU4负责处理队列6内缓存的数据流,且处理队列6用于缓存Hash结果为5的数据流。基于此,接收CPU在接收到数据流之后,通过Hash算法对该数据流进行Hash处理;如果Hash结果为0,则接收CPU将该数据流缓存到处理队列1;如果Hash结果为1,则接收CPU将该数据流缓存到处理队列2;以此类推。对于处理队列1内缓存的数据流,由转发CPU1负责处理;对于处理队列2内缓存的数据流,由转发CPU2负责处理;以此类推。
基于上述应用场景,如图2所示,该数据流处理方法包括以下步骤:
步骤201,虚拟机确定自身转发CPU的CPU占用率。其中,虚拟机自身转发CPU是指虚拟机当前占用的物理主机上的转发CPU。例如,虚拟机当前同时占用物理主机上的转发CPU1、转发CPU2、转发CPU3和转发CPU4时,则虚拟机自身转发CPU为转发CPU1、转发CPU2、转发CPU3和转发CPU4。
本发明实施例中,将转发CPU的CPU占用率(CPUusage)定义为:取某一段时间作为CPU占用率计算周期(或称为数据流调整周期),记为Tcyc;将CPU占用率计算周期时间内,转发CPU对应的处理序列内所有处理队列的有效消耗所占时间记为Tuse;则转发CPU的CPU占用率(CPUusage)=有效消耗所占时间记为Tuse/CPU占用率计算周期Tcyc。
其中,CPU占用率计算周期Tcyc可以根据不同需求进行定制,如CPU占用率计算周期Tcyc为5秒。针对一个CPU占用率计算周期,虚拟机确定自身转发CPU的CPU占用率的过程,具体包括:针对转发CPU对应的处理序列内的每个处理队列,虚拟机确定每次对该处理队列内缓存的数据流进行处理的时间;虚拟机确定CPU占用率计算周期内所有对该处理队列内缓存的数据流进行处理的时间之和为该处理队列的有效消耗时间;虚拟机确定转发CPU对应的处理序列内的所有处理队列的有效消耗时间之和为该处理序列内所有处理队列的有效消耗所占时间;虚拟机确定转发CPU的CPU占用率具体为:处理序列内所有处理队列的有效消耗所占时间除以CPU占用率计算周期。
例如,转发CPU1对应的处理序列内包含处理队列1和处理队列3,虚拟机确定每次对处理队列1内缓存的数据流进行处理的时间,并确定每次对处理队列3内缓存的数据流进行处理的时间。假设CPU占用率计算周期内对处理队列1内缓存的数据流处理5次,且5次的时间分别为A1、B1、C1、D1、E1;CPU占用率计算周期内对处理队列3内缓存的数据流处理4次,且4次的时间分别为A2、B2、C2、D2;则:CPU占用率计算周期内所有对处理队列1内缓存的数据流进行处理的时间之和(A1+B1+C1+D1+E1)为该处理队列1的有效消耗时间;CPU占用率计算周期内所有对处理队列3内缓存的数据流进行处理的时间之和(A2+B2+C2+D2)为该处理队列3的有效消耗时间。虚拟机确定处理队列1的有效消耗时间(A1+B1+C1+D1+E1)与处理队列3的有效消耗时间(A2+B2+C2+D2)之和为有效消耗所占时间;虚拟机确定转发CPU的CPU占用率为:有效消耗所占时间除以CPU占用率计算周期。
在本发明实施例的一种具体实现方式中,将计算周期状态分为如下四种状态:(1)CPU_CYC_START(CPU占用率计算周期开始状态),在计算周期状态为CPU_CYC_START时,则表示能够启动新的CPU占用率计算周期;(2)CPU_CYC_RUNNING(CPU占用率计算周期运行状态),在计算周期状态为CPU_CYC_RUNNING时,则表示新的CPU占用率计算周期当前正在进行;(3)CPU_CYC_END(CPU占用率计算周期停止状态),在计算周期状态为CPU_CYC_END时,表示CPU占用率计算周期结束,可启动新的CPU占用率计算周期;(4)CPU_CYC_SCHEDULING(CPU占用率计算周期调度状态),在计算周期状态为CPU_CYC_SCHEDULING时,表示数据流正在调整中。
基于上述计算周期状态,针对一个CPU占用率计算周期,虚拟机确定自身转发CPU的CPU占用率的过程,具体包括以下步骤:
步骤A、如果当前计算周期状态为CPU_CYC_START,则执行步骤B;否则继续等待,直到计算周期状态为CPU_CYC_START,并执行步骤B。
步骤B、虚拟机启动一个新的CPU占用率计算周期,并设置当前计算周期状态为CPU_CYC_RUNNING;步骤B后等待执行步骤C。在启动新的CPU占用率计算周期时,还需要清除上个CPU占用率计算周期的记录数据,如清除上个CPU占用率计算周期记录的有效消耗所占时间、CPU占用率等数据。
在计算周期状态为CPU_CYC_RUNNING时,针对转发CPU对应的处理序列内的每个处理队列,转发CPU记录每次对该处理队列内缓存的数据流进行处理的时间;其中,该转发CPU记录对该处理队列内缓存的数据流进行处理的开始时间Tstart,并记录对该处理队列内缓存的数据流进行处理的结束时间Tend,且本次对该处理队列内缓存的数据流进行处理的时间为Tend-Tstart。基于转发CPU记录的对处理队列内缓存的数据流进行处理的时间(Tend-Tstart),虚拟机能够确定出每次对该处理队列内缓存的数据流进行处理的时间。
步骤C、如果当前CPU占用率计算周期到期,则虚拟机设置当前计算周期状态为CPU_CYC_END,并执行步骤D;否则继续等待,直到当前CPU占用率计算周期到期,并设置当前计算周期状态为CPU_CYC_END。
步骤D、针对转发CPU对应的处理序列内的每个处理队列,虚拟机确定每次对该处理队列内缓存的数据流进行处理的时间,且CPU占用率计算周期内所有对该处理队列内缓存的数据流进行处理的时间之和为处理队列的有效消耗时间;确定转发CPU对应的处理序列内所有处理队列的有效消耗时间之和为处理序列内所有处理队列的有效消耗所占时间,确定转发CPU的CPU占用率为:处理序列内所有处理队列的有效消耗所占时间/CPU占用率计算周期。
步骤202,虚拟机利用转发CPU的CPU占用率确定转发CPU的运行状态。其中,转发CPU的运行状态具体包括:无负荷状态、或者低负荷状态、或者正常负荷状态、或者超负荷状态。进一步的,在无负荷状态下,表示转发CPU上没有数据流转发和业务处理;此情况下,转发CPU还可以转入数据流,并对转入的数据流进行转发和业务处理。在低负荷状态下,表示转发CPU可以转入数据流,并对转入的数据流进行转发和业务处理;此情况下,转发CPU还可以转出数据流,由其它转发CPU对该转出的数据流进行转发和业务处理。在正常负荷状态下,表示转发CPU不可以转入数据流,也不需要转出数据流;在超负荷状态下,表示转发CPU需要转出数据流,由其它转发CPU对该转出的数据流进行转发和业务处理。
本发明实施例中,虚拟机确定转发CPU的运行状态的,具体包括但不限于:当转发CPU的CPU占用率为0时,虚拟机确定转发CPU的运行状态为无负荷状态;当转发CPU的CPU占用率大于0,且小于等于预设第一阈值时,虚拟机确定转发CPU的运行状态为低负荷状态;当转发CPU的CPU占用率大于预设第一阈值,且小于等于预设第二阈值时,虚拟机确定转发CPU的运行状态为正常负荷状态;当转发CPU的CPU占用率大于预设第二阈值时,虚拟机确定转发CPU的运行状态为超负荷状态。其中,预设第一阈值以及预设第二阈值的设置均可以根据实际需要任意设置,只要保证预设第二阈值大于预设第一阈值即可,如:预设第一阈值为40%,预设第二阈值为60%。
步骤203,如果当前不存在运行状态为超负荷状态的转发CPU,且存在两个以上运行状态为低负荷状态的转发CPU,则虚拟机从两个以上低负荷状态的转发CPU中选择待转出数据流的转发CPU和待转入数据流的转发CPU。
本发明实施例中,虚拟机从两个以上低负荷状态的转发CPU中选择待转出数据流的转发CPU和待转入数据流的转发CPU的过程,具体包括:虚拟机确定所述两个以上低负荷状态的转发CPU分别对应的处理序列内的处理队列的数量,选择处理序列内的处理队列的数量最少的低负荷状态的转发CPU为待转出数据流的转发CPU,选择处理序列内的处理队列的数量最多的低负荷状态的转发CPU为待转入数据流的转发CPU。其中,在处理队列的数量最少的低负荷状态的转发CPU为多个时,可以从中任意选择一个转发CPU为待转出数据流的转发CPU;在处理队列的数量最多的低负荷状态的转发CPU为多个时,可以从中任意选择一个转发CPU为待转入数据流的转发CPU。
步骤204,虚拟机指示待转出数据流的转发CPU转出自身需要处理的数据流,释放该待转出数据流的转发CPU的CPU资源,以使该待转出数据流的转发CPU能够被物理主机分配给其它虚拟机;以及,虚拟机指示待转入数据流的转发CPU转入该待转出数据流的转发CPU转出的数据流。
本发明实施例中,还可以为每个转发CPU设置对应的调整状态,该调整状态为转出状态(CPU_STATUS_OUT)、或转入状态(CPU_STATUS_IN)、或无调整状态(CPU_STATUS_NORMAL)。在转出状态下,表示相应的转发CPU有数据流需要转出;在转入状态下,表示相应的转发CPU有数据流需要转入;在无调整状态下,表示相应的转发CPU没有数据流需要转出和转入。
虚拟机指示待转出数据流的转发CPU转出自身需要处理的数据流,具体包括:虚拟机设置待转出数据流的转发CPU的调整状态为转出状态;由待转出数据流的转发CPU在获知本转发CPU的调整状态为转出状态时,从对应的处理序列内删除所有处理队列,在待转区域内标记该处理序列内的所有处理队列需要由待转入数据流的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态;或者,由待转出数据流的转发CPU在获知本转发CPU的调整状态为转出状态时,利用对应的处理序列内的各处理队列的有效消耗时间从该处理序列内选择处理队列(如选择有效消耗时间最多的处理队列),删除该选择的处理队列,并在待转区域内标记该选择的处理队列需要由待转入数据流的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态。
此外,虚拟机指示待转入数据流的转发CPU转入待转出数据流的转发CPU转出的数据流,具体包括:虚拟机设置待转入数据流的转发CPU的调整状态为转入状态;由待转入数据流的转发CPU在获知本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的处理队列添加到自身对应的处理序列内,并设置本转发CPU的调整状态为无调整状态。
本发明实施例中,虚拟机使待转出数据流的转发CPU能够被物理主机分配给其它虚拟机,具体包括:在待转出数据流的转发CPU的CPU资源均被释放后,虚拟机停止待转出数据流的转发CPU上的所有线程,以使待转出数据流的转发CPU休眠,以使待转出数据流的转发CPU能够分配给其它虚拟机。
具体的,为了提高CPU资源的利用率,需要尽量减少虚拟机占用的CPU资源,因此,在转发CPU的运行状态为无负荷状态时,虚拟机需要及时释放该转发CPU的CPU资源,以使物理主机能够将该转发CPU的CPU资源分配给其它虚拟机。为了使物理主机能够将转发CPU的CPU资源分配给其它虚拟机,当转发CPU已经转出自身需要处理的所有数据流之后,需要释放该转发CPU的所有CPU资源,并停止该转发CPU上的所有线程,以使该转发CPU完全休眠;在该转发CPU完全休眠时,该转发CPU的CPU资源能够被物理主机分配给其它虚拟机。进一步的,在转发CPU完全休眠时,如果需要向该转发CPU分配任务,还需要及时唤醒调用该转发CPU的处理线程。
本发明实施例中,如果当前存在运行状态为超负荷状态的转发CPU,且超负荷状态的转发CPU对应的处理序列内有多个处理队列,并且当前存在运行状态为低负荷状态或者无负荷状态的转发CPU,则:虚拟机指示超负荷状态的转发CPU转出自身需要处理的数据流;以及,虚拟机指示低负荷状态或者无负荷状态的转发CPU转入超负荷状态的转发CPU转出的数据流。
具体的,虚拟机指示超负荷状态的转发CPU转出自身需要处理的数据流,具体包括:虚拟机设置超负荷状态的转发CPU的调整状态为转出状态;由该超负荷状态的转发CPU在获知本转发CPU的调整状态为转出状态时,利用对应的处理序列内的各处理队列的有效消耗时间从该处理序列内选择处理队列(如:选择有效消耗时间最少的处理队列),删除该选择的处理队列,并在待转区域内标记该选择的处理队列需要由低负荷状态或者无负荷状态的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态。
虚拟机指示低负荷状态或者无负荷状态的转发CPU转入超负荷状态的转发CPU转出的数据流,具体包括:如果当前存在运行状态为低负荷状态的转发CPU,则虚拟机设置低负荷状态的转发CPU的调整状态为转入状态,如果当前不存在运行状态为低负荷状态的转发CPU,但是当前存在运行状态为无负荷状态的转发CPU,则虚拟机设置无负荷状态的转发CPU的调整状态为转入状态;由低负荷状态或者无负荷状态的转发CPU在获知本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的处理队列添加到自身对应的处理序列内,并设置本转发CPU的调整状态为无调整状态。
虚拟机利用转发CPU的CPU占用率确定转发CPU的运行状态之后,针对上述步骤203以及步骤204的相关数据流转入和数据流转出等处理流程,在本发明实施例的一种具体实现方式中,相应处理流程包括以下步骤:
步骤A、虚拟机判断当前是否存在运行状态为超负荷状态的转发CPU;如果存在,则执行步骤B;如果不存在,则执行步骤E。
步骤B、如果超负荷状态的转发CPU对应的处理序列内有多个处理队列,则虚拟机判断当前是否存在运行状态为低负荷状态的转发CPU;如果不存在,则执行步骤C;如果存在,则设置超负荷状态的转发CPU的调整状态为转出状态,设置低负荷状态的转发CPU的调整状态为转入状态,并执行步骤D。
步骤C、虚拟机判断当前是否存在运行状态为无负荷状态的转发CPU;如果存在,则设置超负荷状态的转发CPU的调整状态为转出状态,设置无负荷状态的转发CPU的调整状态为转入状态,并执行步骤D;如果不存在,则设置计算周期状态为CPU_CYC_START(CPU占用率计算周期开始状态),计算周期状态为CPU_CYC_START时表示能启动新的CPU占用率计算周期。
步骤D、超负荷状态的转发CPU在获知本转发CPU的调整状态为转出状态时,利用对应的处理序列内的各处理队列的有效消耗时间从该处理序列内选择处理队列(如:选择有效消耗时间最少的处理队列),删除该选择的处理队列,并在待转区域内标记该选择的处理队列需要由低负荷状态或者无负荷状态的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态。此外,低负荷状态或者无负荷状态的转发CPU在获知本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的处理队列添加到自身对应的处理序列内,并设置本转发CPU的调整状态为无调整状态。
为了实现上述过程,超负荷状态的转发CPU从处理序列内选择处理队列(具体选择处理序列内的哪个处理队列可以根据实际情况进行定制,但不建议选择有效消耗时间最多的处理队列,如可以选择有效消耗时间最少的处理队列)之后,设置该选择的处理队列的状态为DATA_STREAM_OUT(在状态为DATA_STREAM_OUT时,表示处理队列内缓存的数据流将被转出到新的转发CPU相关处理)。之后,超负荷状态的转发CPU设置计算周期状态为CPU_CYC_SCHEDULING。
基于此,转发CPU在进行数据流转发和业务处理之前,可以执行如下步骤:步骤1、如果计算周期状态为CPU_CYC_SCHEDULING,则执行步骤2;否则,执行步骤7。步骤2、如果当前调整状态为转出状态,则执行步骤3;否则,执行步骤4。步骤3、找到状态为DATA_STREAM_OUT的处理队列,从对应的处理序列内删除该处理队列,并在待转区域内标记该处理队列需要由低负荷状态或者无负荷状态的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态,并执行步骤7。步骤4、如果当前调整状态为转入状态,则执行步骤5;否则,执行步骤7。步骤5、如果待转区域内有标记需要由自身对处理队列内缓存的数据流进行转入处理,则执行步骤6;否则,执行步骤7。步骤6、将待转区域内标记的需要由自身进行处理的处理队列添加到自身对应的处理序列内,并设置该处理队列的状态为DATA_STREAM_NORMAL(在处理队列的状态为DATA_STREAM_NORMAL时,表示该处理队列不需要进行数据流调整),并设置本转发CPU的调整状态为无调整状态,并将计算周期状态设置为CPU_CYC_START,准备启动新一轮调整。然后,执行步骤7。步骤7、执行正常数据流的转发和业务处理,及其相关处理。
步骤E、虚拟机判断当前是否存在两个以上的运行状态为低负荷状态的转发CPU;如果存在,则执行步骤F;如果不存在,则设置计算周期状态为CPU_CYC_START(CPU占用率计算周期开始状态),启动新一轮调整;计算周期状态为CPU_CYC_START时,表示能启动新的CPU占用率计算周期。
步骤F、虚拟机从两个以上低负荷状态的转发CPU中选择待转出数据流的转发CPU和待转入数据流的转发CPU,设置待转出数据流的转发CPU的调整状态为转出状态,设置待转入数据流的转发CPU的调整状态为转入状态。
步骤G、待转出数据流的转发CPU在获知本转发CPU的调整状态为转出状态时,利用对应的处理序列内的各处理队列的有效消耗时间从该处理序列内选择处理队列(如选择有效消耗时间最多的处理队列),删除该选择的处理队列,并在待转区域内标记该选择的处理队列需要由待转入数据流的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态。
此外,待转入数据流的转发CPU在获知本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的处理队列添加到自身对应的处理序列内,并设置本转发CPU的调整状态为无调整状态。
为了实现上述过程,待转出数据流的转发CPU从处理序列内选择处理队列之后,设置该选择的处理队列的状态为DATA_STREAM_OUT(在状态为DATA_STREAM_OUT时,表示处理队列内缓存的数据流将被转出到新的转发CPU相关处理)。之后,该待转出数据流的转发CPU设置计算周期状态为CPU_CYC_SCHEDULING。
基于此,转发CPU在进行数据流转发和业务处理之前,可以执行如下步骤:步骤1、如果计算周期状态为CPU_CYC_SCHEDULING,则执行步骤2;否则,执行步骤7。步骤2、如果当前调整状态为转出状态,则执行步骤3;否则,执行步骤4。步骤3、找到状态为DATA_STREAM_OUT的处理队列,从对应的处理序列内删除该处理队列,并在待转区域内标记该处理队列需要由低负荷状态或者无负荷状态的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态,并执行步骤7。步骤4、如果当前调整状态为转入状态,则执行步骤5;否则,执行步骤7。步骤5、如果待转区域内有标记需要由自身对处理队列内缓存的数据流进行转入处理,则执行步骤6;否则,执行步骤7。步骤6、将待转区域内标记的需要由自身进行处理的处理队列添加到自身对应的处理序列内,并设置该处理队列的状态为DATA_STREAM_NORMAL(在处理队列的状态为DATA_STREAM_NORMAL时,表示该处理队列不需要进行数据流调整),并设置本转发CPU的调整状态为无调整状态,并将计算周期状态设置为CPU_CYC_START,准备启动新一轮调整。然后,执行步骤7。步骤7、执行正常数据流的转发和业务处理,及其相关处理。
综上所述,本发明实施例中,在虚拟机的数据流压力比较小,只需要少数转发CPU参与处理时,将数据流集中到少数转发CPU上进行数据流转发和业务处理,从而释放其它转发CPU资源,以使部分低负荷状态的转发CPU能够及时分配给其它虚拟机,从而合理的使用物理主机上的CPU资源,避免造成CPU资源的浪费,并充分利用CPU资源,并提升CPU资源的利用效率。在虚拟机的数据流压力比较大,需要多数转发CPU参与处理时,将数据流及时调整到其它空闲或压力小的转发CPU上进行数据流转发和业务处理。
基于与上述方法同样的发明构思,本发明实施例中还提供了一种多中央处理器CPU虚拟机系统的数据流处理装置,所述多CPU虚拟机系统的数据流处理装置包括虚拟机,如图3所示,所述虚拟机包括:
确定模块11,用于确定虚拟机自身转发CPU的CPU占用率,并确定虚拟机自身转发CPU的运行状态;其中,转发CPU的运行状态具体包括:无负荷状态、或者低负荷状态、或者正常负荷状态、或者超负荷状态;
选择模块12,用于在当前不存在运行状态为超负荷状态的转发CPU,且存在两个以上运行状态为低负荷状态的转发CPU时,从两个以上低负荷状态的转发CPU中选择待转出数据流的转发CPU和待转入数据流的转发CPU;
指示模块13,用于指示所述待转出数据流的转发CPU转出自身需要处理的数据流,释放所述待转出数据流的转发CPU的CPU资源,以使所述待转出数据流的转发CPU能够分配给其它虚拟机;以及,指示所述待转入数据流的转发CPU转入所述待转出数据流的转发CPU转出的数据流。
所述确定虚拟机自身转发CPU的CPU占用率,具体包括:针对一个CPU占用率计算周期,针对转发CPU对应的处理序列内的每个处理队列,确定每次对该处理队列内缓存的数据流进行处理的时间;以及,确定所述CPU占用率计算周期内所有对该处理队列内缓存的数据流进行处理的时间之和为该处理队列的有效消耗时间;以及,确定所述转发CPU对应的处理序列内的所有处理队列的有效消耗时间之和为该处理序列内所有处理队列的有效消耗所占时间;以及,确定所述转发CPU的CPU占用率具体为:处理序列内所有处理队列的有效消耗所占时间除以所述CPU占用率计算周期。
所述确定虚拟机自身转发CPU的运行状态,具体包括:针对一个CPU占用率计算周期,当转发CPU的CPU占用率为0时,确定所述转发CPU的运行状态为无负荷状态;当转发CPU的CPU占用率大于0,且小于等于预设第一阈值时,确定所述转发CPU的运行状态为低负荷状态;当转发CPU的CPU占用率大于所述预设第一阈值,且小于等于预设第二阈值时,确定所述转发CPU的运行状态为正常负荷状态;当转发CPU的CPU占用率大于所述预设第二阈值时,确定所述转发CPU的运行状态为超负荷状态;其中,所述预设第二阈值大于所述预设第一阈值。
所述从两个以上低负荷状态的转发CPU中选择待转出数据流的转发CPU和待转入数据流的转发CPU,具体包括:确定所述两个以上低负荷状态的转发CPU分别对应的处理序列内的处理队列的数量,选择处理序列内的处理队列的数量最少的低负荷状态的转发CPU为所述待转出数据流的转发CPU,选择处理序列内的处理队列的数量最多的低负荷状态的转发CPU为所述待转入数据流的转发CPU。
所述指示所述待转出数据流的转发CPU转出自身需要处理的数据流,具体包括:设置所述待转出数据流的转发CPU的调整状态为转出状态;由所述待转出数据流的转发CPU在获知本转发CPU的调整状态为转出状态时,从对应的处理序列内删除所有处理队列,在待转区域内标记该处理序列内的所有处理队列需要由所述待转入数据流的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态;或者,由所述待转出数据流的转发CPU在获知本转发CPU的调整状态为转出状态时,利用对应的处理序列内的各处理队列的有效消耗时间从该处理序列内选择处理队列,删除该选择的处理队列,并在待转区域内标记该选择的处理队列需要由所述待转入数据流的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态;
所述指示所述待转入数据流的转发CPU转入所述待转出数据流的转发CPU转出的数据流,具体包括:设置所述待转入数据流的转发CPU的调整状态为转入状态;由待转入数据流的转发CPU在获知本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的处理队列添加到自身对应的处理序列内,并设置本转发CPU的调整状态为无调整状态。
所述使所述待转出数据流的转发CPU能够分配给其它虚拟机,具体包括:在所述待转出数据流的转发CPU的CPU资源均被释放后,停止所述待转出数据流的转发CPU上的所有线程,以使所述待转出数据流的转发CPU休眠,以使所述待转出数据流的转发CPU能够分配给其它虚拟机。
所述指示模块13,还用于在当前存在运行状态为超负荷状态的转发CPU,且所述超负荷状态的转发CPU对应的处理序列内有多个处理队列,并且当前存在运行状态为低负荷状态或者无负荷状态的转发CPU时,指示所述超负荷状态的转发CPU转出自身需要处理的数据流,并指示所述低负荷状态或者无负荷状态的转发CPU转入所述超负荷状态的转发CPU转出的数据流。
所述指示超负荷状态的转发CPU转出自身需要处理的数据流,具体包括:设置超负荷状态的转发CPU的调整状态为转出状态;由超负荷状态的转发CPU在获知本转发CPU的调整状态为转出状态时,利用对应的处理序列内的各处理队列的有效消耗时间从该处理序列内选择处理队列,删除该选择的处理队列,在待转区域内标记该选择的处理队列需要由所述低负荷状态或者无负荷状态的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态;
所述指示低负荷状态或者无负荷状态的转发CPU转入所述超负荷状态的转发CPU转出的数据流,具体包括:如果当前存在运行状态为低负荷状态的转发CPU,则设置所述低负荷状态的转发CPU的调整状态为转入状态,如果当前不存在运行状态为低负荷状态的转发CPU,但是当前存在运行状态为无负荷状态的转发CPU,则设置所述无负荷状态的转发CPU的调整状态为转入状态;由低负荷状态或者无负荷状态的转发CPU在获知本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的处理队列添加到自身对应的处理序列内,并设置本转发CPU的调整状态为无调整状态。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。
Claims (16)
1.一种多中央处理器CPU虚拟机系统的数据流处理方法,其特征在于,所述方法包括以下步骤:
虚拟机确定自身转发CPU的CPU占用率,并确定自身转发CPU的运行状态;其中,转发CPU的运行状态具体包括:无负荷状态、或者低负荷状态、或者正常负荷状态、或者超负荷状态;
如果当前不存在运行状态为超负荷状态的转发CPU,且当前存在两个以上运行状态为低负荷状态的转发CPU,所述虚拟机从所述两个以上低负荷状态的转发CPU中选择待转出数据流的转发CPU和待转入数据流的转发CPU;
所述虚拟机指示所述待转出数据流的转发CPU转出自身需要处理的数据流,释放所述待转出数据流的转发CPU的CPU资源,以使所述待转出数据流的转发CPU能够分配给其它虚拟机;以及,所述虚拟机指示所述待转入数据流的转发CPU转入所述待转出数据流的转发CPU转出的数据流。
2.如权利要求1所述的方法,其特征在于,针对一个CPU占用率计算周期,所述虚拟机确定自身转发CPU的CPU占用率的过程,具体包括:
针对转发CPU对应的处理序列内的每个处理队列,所述虚拟机确定每次对该处理队列内缓存的数据流进行处理的时间;
所述虚拟机确定所述CPU占用率计算周期内所有对该处理队列内缓存的数据流进行处理的时间之和为该处理队列的有效消耗时间;
所述虚拟机确定所述转发CPU对应的处理序列内的所有处理队列的有效消耗时间之和为该处理序列内所有处理队列的有效消耗所占时间;
所述虚拟机确定所述转发CPU的CPU占用率具体为:处理序列内所有处理队列的有效消耗所占时间除以所述CPU占用率计算周期。
3.如权利要求1所述的方法,其特征在于,针对一个CPU占用率计算周期,所述虚拟机确定自身转发CPU的运行状态的过程,具体包括:
当转发CPU的CPU占用率为0时,所述虚拟机确定所述转发CPU的运行状态为无负荷状态;当转发CPU的CPU占用率大于0,且小于等于预设第一阈值时,所述虚拟机确定所述转发CPU的运行状态为低负荷状态;当转发CPU的CPU占用率大于所述预设第一阈值,且小于等于预设第二阈值时,所述虚拟机确定所述转发CPU的运行状态为正常负荷状态;当转发CPU的CPU占用率大于所述预设第二阈值时,所述虚拟机确定所述转发CPU的运行状态为超负荷状态;其中,所述预设第二阈值大于所述预设第一阈值。
4.如权利要求1所述的方法,其特征在于,
所述虚拟机从所述两个以上低负荷状态的转发CPU中选择待转出数据流的转发CPU和待转入数据流的转发CPU的过程,具体包括:
所述虚拟机确定所述两个以上低负荷状态的转发CPU分别对应的处理序列内的处理队列的数量,选择处理序列内的处理队列的数量最少的低负荷状态的转发CPU为所述待转出数据流的转发CPU,选择处理序列内的处理队列的数量最多的低负荷状态的转发CPU为所述待转入数据流的转发CPU。
5.如权利要求1或4所述的方法,其特征在于,
所述虚拟机指示所述待转出数据流的转发CPU转出自身需要处理的数据流,具体包括:所述虚拟机设置所述待转出数据流的转发CPU的调整状态为转出状态;由所述待转出数据流的转发CPU在获知本转发CPU的调整状态为转出状态时,从对应的处理序列内删除所有处理队列,在待转区域内标记该处理序列内的所有处理队列需要由所述待转入数据流的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态;或者,由所述待转出数据流的转发CPU在获知本转发CPU的调整状态为转出状态时,利用对应的处理序列内的各处理队列的有效消耗时间从该处理序列内选择处理队列,删除该选择的处理队列,并在待转区域内标记该选择的处理队列需要由所述待转入数据流的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态;
虚拟机指示所述待转入数据流的转发CPU转入所述待转出数据流的转发CPU转出的数据流,具体包括:所述虚拟机设置所述待转入数据流的转发CPU的调整状态为转入状态;由待转入数据流的转发CPU在获知本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的处理队列添加到自身对应的处理序列内,并设置本转发CPU的调整状态为无调整状态。
6.如权利要求1所述的方法,其特征在于,所述虚拟机使所述待转出数据流的转发CPU能够分配给其它虚拟机的过程,具体包括:
在所述待转出数据流的转发CPU的CPU资源均被释放后,所述虚拟机停止所述待转出数据流的转发CPU上的所有线程,以使所述待转出数据流的转发CPU休眠,以使所述待转出数据流的转发CPU能够分配给其它虚拟机。
7.如权利要求1所述的方法,其特征在于,所述方法进一步包括:
如果当前存在运行状态为超负荷状态的转发CPU,且所述超负荷状态的转发CPU对应的处理序列内有多个处理队列,并且当前存在运行状态为低负荷状态或者无负荷状态的转发CPU,则所述虚拟机指示所述超负荷状态的转发CPU转出自身需要处理的数据流,并指示所述低负荷状态或者无负荷状态的转发CPU转入所述超负荷状态的转发CPU转出的数据流。
8.如权利要求7所述的方法,其特征在于,
所述虚拟机指示所述超负荷状态的转发CPU转出自身需要处理的数据流,具体包括:所述虚拟机设置所述超负荷状态的转发CPU的调整状态为转出状态;由所述超负荷状态的转发CPU在获知本转发CPU的调整状态为转出状态时,利用对应的处理序列内的各处理队列的有效消耗时间从该处理序列内选择处理队列,删除该选择的处理队列,并在待转区域内标记该选择的处理队列需要由所述低负荷状态或者无负荷状态的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态;
所述虚拟机指示所述低负荷状态或者无负荷状态的转发CPU转入所述超负荷状态的转发CPU转出的数据流,具体包括:如果当前存在运行状态为低负荷状态的转发CPU,则所述虚拟机设置所述低负荷状态的转发CPU的调整状态为转入状态,如果当前不存在运行状态为低负荷状态的转发CPU,但是当前存在运行状态为无负荷状态的转发CPU,则所述虚拟机设置所述无负荷状态的转发CPU的调整状态为转入状态;由所述低负荷状态或者无负荷状态的转发CPU在获知本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的处理队列添加到自身对应的处理序列内,并设置本转发CPU的调整状态为无调整状态。
9.一种多中央处理器CPU虚拟机系统的数据流处理装置,所述多CPU虚拟机系统的数据流处理装置包括虚拟机,其特征在于,所述虚拟机包括:
确定模块,用于确定虚拟机自身转发CPU的CPU占用率,并确定虚拟机自身转发CPU的运行状态;其中,转发CPU的运行状态具体包括:无负荷状态、或者低负荷状态、或者正常负荷状态、或者超负荷状态;
选择模块,用于在当前不存在运行状态为超负荷状态的转发CPU,且当前存在两个以上运行状态为低负荷状态的转发CPU时,从两个以上低负荷状态的转发CPU中选择待转出数据流的转发CPU和待转入数据流的转发CPU;
指示模块,用于指示所述待转出数据流的转发CPU转出自身需要处理的数据流,释放所述待转出数据流的转发CPU的CPU资源,以使所述待转出数据流的转发CPU能够分配给其它虚拟机;以及,指示所述待转入数据流的转发CPU转入所述待转出数据流的转发CPU转出的数据流。
10.如权利要求9所述的装置,其特征在于,
所述确定虚拟机自身转发CPU的CPU占用率,具体包括:针对一个CPU占用率计算周期,针对转发CPU对应的处理序列内的每个处理队列,确定每次对该处理队列内缓存的数据流进行处理的时间;以及,确定所述CPU占用率计算周期内所有对该处理队列内缓存的数据流进行处理的时间之和为该处理队列的有效消耗时间;以及,确定所述转发CPU对应的处理序列内的所有处理队列的有效消耗时间之和为该处理序列内所有处理队列的有效消耗所占时间;以及,确定所述转发CPU的CPU占用率具体为:处理序列内所有处理队列的有效消耗所占时间除以所述CPU占用率计算周期。
11.如权利要求9所述的装置,其特征在于,
所述确定虚拟机自身转发CPU的运行状态,具体包括:针对一个CPU占用率计算周期,当转发CPU的CPU占用率为0时,确定所述转发CPU的运行状态为无负荷状态;当转发CPU的CPU占用率大于0,且小于等于预设第一阈值时,确定所述转发CPU的运行状态为低负荷状态;当转发CPU的CPU占用率大于所述预设第一阈值,且小于等于预设第二阈值时,确定所述转发CPU的运行状态为正常负荷状态;当转发CPU的CPU占用率大于所述预设第二阈值时,确定所述转发CPU的运行状态为超负荷状态;其中,所述预设第二阈值大于所述预设第一阈值。
12.如权利要求9所述的装置,其特征在于,所述从两个以上低负荷状态的转发CPU中选择待转出数据流的转发CPU和待转入数据流的转发CPU,具体包括:确定所述两个以上低负荷状态的转发CPU分别对应的处理序列内的处理队列的数量,选择处理序列内的处理队列的数量最少的低负荷状态的转发CPU为所述待转出数据流的转发CPU,选择处理序列内的处理队列的数量最多的低负荷状态的转发CPU为所述待转入数据流的转发CPU。
13.如权利要求9或12所述的装置,其特征在于,
所述指示所述待转出数据流的转发CPU转出自身需要处理的数据流,具体包括:设置所述待转出数据流的转发CPU的调整状态为转出状态;由所述待转出数据流的转发CPU在获知本转发CPU的调整状态为转出状态时,从对应的处理序列内删除所有处理队列,在待转区域内标记该处理序列内的所有处理队列需要由所述待转入数据流的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态;或者,由所述待转出数据流的转发CPU在获知本转发CPU的调整状态为转出状态时,利用对应的处理序列内的各处理队列的有效消耗时间从该处理序列内选择处理队列,删除该选择的处理队列,并在待转区域内标记该选择的处理队列需要由所述待转入数据流的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态;
所述指示所述待转入数据流的转发CPU转入所述待转出数据流的转发CPU转出的数据流,具体包括:设置所述待转入数据流的转发CPU的调整状态为转入状态;由待转入数据流的转发CPU在获知本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的处理队列添加到自身对应的处理序列内,并设置本转发CPU的调整状态为无调整状态。
14.如权利要求9所述的装置,其特征在于,
所述使所述待转出数据流的转发CPU能够分配给其它虚拟机,具体包括:在所述待转出数据流的转发CPU的CPU资源均被释放后,停止所述待转出数据流的转发CPU上的所有线程,以使所述待转出数据流的转发CPU休眠,以使所述待转出数据流的转发CPU能够分配给其它虚拟机。
15.如权利要求9所述的装置,其特征在于,
所述指示模块,还用于在当前存在运行状态为超负荷状态的转发CPU,且所述超负荷状态的转发CPU对应的处理序列内有多个处理队列,并且当前存在运行状态为低负荷状态或者无负荷状态的转发CPU时,指示所述超负荷状态的转发CPU转出自身需要处理的数据流,并指示所述低负荷状态或者无负荷状态的转发CPU转入所述超负荷状态的转发CPU转出的数据流。
16.如权利要求15所述的装置,其特征在于,
所述指示超负荷状态的转发CPU转出自身需要处理的数据流,具体包括:设置超负荷状态的转发CPU的调整状态为转出状态;由超负荷状态的转发CPU在获知本转发CPU的调整状态为转出状态时,利用对应的处理序列内的各处理队列的有效消耗时间从该处理序列内选择处理队列,删除该选择的处理队列,在待转区域内标记该选择的处理队列需要由所述低负荷状态或者无负荷状态的转发CPU进行处理,并设置本转发CPU的调整状态为无调整状态;
所述指示低负荷状态或者无负荷状态的转发CPU转入所述超负荷状态的转发CPU转出的数据流,具体包括:如果当前存在运行状态为低负荷状态的转发CPU,则设置所述低负荷状态的转发CPU的调整状态为转入状态,如果当前不存在运行状态为低负荷状态的转发CPU,但是当前存在运行状态为无负荷状态的转发CPU,则设置所述无负荷状态的转发CPU的调整状态为转入状态;由低负荷状态或者无负荷状态的转发CPU在获知本转发CPU的调整状态为转入状态时,将待转区域内标记的需要由自身进行处理的处理队列添加到自身对应的处理序列内,并设置本转发CPU的调整状态为无调整状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410097861.6A CN103823712B (zh) | 2014-03-17 | 2014-03-17 | 一种多cpu虚拟机系统的数据流处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410097861.6A CN103823712B (zh) | 2014-03-17 | 2014-03-17 | 一种多cpu虚拟机系统的数据流处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103823712A true CN103823712A (zh) | 2014-05-28 |
CN103823712B CN103823712B (zh) | 2017-05-10 |
Family
ID=50758797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410097861.6A Active CN103823712B (zh) | 2014-03-17 | 2014-03-17 | 一种多cpu虚拟机系统的数据流处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103823712B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104391736A (zh) * | 2014-11-25 | 2015-03-04 | 杭州华为数字技术有限公司 | 虚拟机的休眠模式设置方法和装置 |
CN104899097A (zh) * | 2015-04-17 | 2015-09-09 | 杭州华三通信技术有限公司 | 线程分配数量计算方法以及装置 |
CN106230649A (zh) * | 2016-09-20 | 2016-12-14 | 杭州迪普科技有限公司 | 会话资源管理方法及装置 |
CN107526668A (zh) * | 2017-08-01 | 2017-12-29 | 广东欧珀移动通信有限公司 | Cpu监控方法和装置、计算机设备、计算机可读存储介质 |
CN107678838A (zh) * | 2017-10-19 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种跟踪虚拟机操作的方法、装置及虚拟机管理平台 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010009288A (ja) * | 2008-06-26 | 2010-01-14 | Mitsubishi Electric Corp | マルチプロセッサシステム及びプログラム実行方法 |
CN101840356A (zh) * | 2009-12-25 | 2010-09-22 | 北京网康科技有限公司 | 一种基于ring的多核CPU负载均衡方法及系统 |
CN103336722A (zh) * | 2013-07-16 | 2013-10-02 | 上海大学 | 一种虚拟机cpu资源监控和动态分配方法 |
CN103389961A (zh) * | 2012-05-08 | 2013-11-13 | 三星电子株式会社 | 多cpu系统以及具有多cpu系统的计算系统 |
-
2014
- 2014-03-17 CN CN201410097861.6A patent/CN103823712B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2010009288A (ja) * | 2008-06-26 | 2010-01-14 | Mitsubishi Electric Corp | マルチプロセッサシステム及びプログラム実行方法 |
CN101840356A (zh) * | 2009-12-25 | 2010-09-22 | 北京网康科技有限公司 | 一种基于ring的多核CPU负载均衡方法及系统 |
CN103389961A (zh) * | 2012-05-08 | 2013-11-13 | 三星电子株式会社 | 多cpu系统以及具有多cpu系统的计算系统 |
CN103336722A (zh) * | 2013-07-16 | 2013-10-02 | 上海大学 | 一种虚拟机cpu资源监控和动态分配方法 |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104391736A (zh) * | 2014-11-25 | 2015-03-04 | 杭州华为数字技术有限公司 | 虚拟机的休眠模式设置方法和装置 |
CN104391736B (zh) * | 2014-11-25 | 2018-04-10 | 杭州华为数字技术有限公司 | 虚拟机的休眠模式设置方法和装置 |
CN104899097A (zh) * | 2015-04-17 | 2015-09-09 | 杭州华三通信技术有限公司 | 线程分配数量计算方法以及装置 |
CN106230649A (zh) * | 2016-09-20 | 2016-12-14 | 杭州迪普科技有限公司 | 会话资源管理方法及装置 |
CN106230649B (zh) * | 2016-09-20 | 2019-07-09 | 杭州迪普科技股份有限公司 | 会话资源管理方法及装置 |
CN107526668A (zh) * | 2017-08-01 | 2017-12-29 | 广东欧珀移动通信有限公司 | Cpu监控方法和装置、计算机设备、计算机可读存储介质 |
CN107678838A (zh) * | 2017-10-19 | 2018-02-09 | 郑州云海信息技术有限公司 | 一种跟踪虚拟机操作的方法、装置及虚拟机管理平台 |
CN107678838B (zh) * | 2017-10-19 | 2021-07-02 | 郑州云海信息技术有限公司 | 一种跟踪虚拟机操作的方法、装置及虚拟机管理平台 |
Also Published As
Publication number | Publication date |
---|---|
CN103823712B (zh) | 2017-05-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107360206B (zh) | 一种区块链共识方法、设备及系统 | |
US20160378570A1 (en) | Techniques for Offloading Computational Tasks between Nodes | |
CN108647104B (zh) | 请求处理方法、服务器及计算机可读存储介质 | |
CN107515786B (zh) | 资源分配方法、主装置、从装置和分布式计算系统 | |
US10242420B2 (en) | Preemptive context switching of processes on an accelerated processing device (APD) based on time quanta | |
CN105511954A (zh) | 一种报文处理方法及装置 | |
WO2019223596A1 (zh) | 事件处理方法、装置、设备及存储介质 | |
CN103823712A (zh) | 一种多cpu虚拟机系统的数据流处理方法和装置 | |
CN103377092A (zh) | 用于动态资源管理的两级动态资源管理方法和装置 | |
CN104102548A (zh) | 任务资源调度处理方法和系统 | |
US9378047B1 (en) | Efficient communication of interrupts from kernel space to user space using event queues | |
US10614542B2 (en) | High granularity level GPU resource allocation method and system | |
CN107818012B (zh) | 一种数据处理方法、装置及电子设备 | |
CN111061570B (zh) | 一种图像计算请求处理方法、装置及终端设备 | |
US9417924B2 (en) | Scheduling in job execution | |
CN112486642B (zh) | 资源调度方法、装置、电子设备及计算机可读存储介质 | |
CN111586140A (zh) | 一种数据交互的方法及服务器 | |
CN107132903B (zh) | 一种节能管理实现方法、装置及网络设备 | |
US11301255B2 (en) | Method, apparatus, device, and storage medium for performing processing task | |
CN111835809B (zh) | 工单消息分配方法、装置、服务器及存储介质 | |
CN116048756A (zh) | 一种队列调度方法、装置及相关设备 | |
CN107689979B (zh) | 一种下载请求处理方法和处理设备 | |
CN110716805A (zh) | 图形处理器的任务分配方法、装置、电子设备及存储介质 | |
CN108984105B (zh) | 对网络存储设备中的复制任务进行分配的方法和设备 | |
CN111857992B (zh) | 一种Radosgw模块中线程资源分配方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP03 | Change of name, title or address |
Address after: 310052 Binjiang District Changhe Road, Zhejiang, China, No. 466, No. Patentee after: Xinhua three Technology Co., Ltd. Address before: 310053 Hangzhou hi tech Industrial Development Zone, Zhejiang province science and Technology Industrial Park, No. 310 and No. six road, HUAWEI, Hangzhou production base Patentee before: Huasan Communication Technology Co., Ltd. |
|
CP03 | Change of name, title or address |