一種多cpu虛擬機(jī)系統(tǒng)的數(shù)據(jù)流處理方法和裝置制造方法
【專利摘要】本發(fā)明公開了一種多CPU虛擬機(jī)系統(tǒng)的數(shù)據(jù)流處理方法和裝置,該方法包括:虛擬機(jī)確定自身轉(zhuǎn)發(fā)CPU的CPU占用率,并確定自身轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài);如果當(dāng)前不存在超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,且當(dāng)前存在至少兩個(gè)低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,則所述虛擬機(jī)從低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU中選擇待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU和待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU;所述虛擬機(jī)指示所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出數(shù)據(jù)流,釋放所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的CPU資源,并指示所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入數(shù)據(jù)流。本發(fā)明實(shí)施例中,可以合理使用CPU資源,避免CPU資源的浪費(fèi),提升CPU資源的利用效率。
【專利說(shuō)明】一種多CPU虛擬機(jī)系統(tǒng)的數(shù)據(jù)流處理方法和裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,尤其是涉及一種多CPU虛擬機(jī)系統(tǒng)的數(shù)據(jù)流處理方法和裝置。
【背景技術(shù)】
[0002]目前物理CPU (Central Processing Unit,中央處理器)通常包括多個(gè)處理內(nèi)核,每個(gè)處理內(nèi)核可以包括多個(gè)線程,并且每個(gè)線程對(duì)業(yè)務(wù)處理系統(tǒng)來(lái)說(shuō)就是一個(gè)CPU,后續(xù)的CPU可以指物理CPU的處理內(nèi)核中包括的線程。
[0003]在數(shù)據(jù)包轉(zhuǎn)發(fā)系統(tǒng)(以數(shù)據(jù)包轉(zhuǎn)發(fā)以及相關(guān)業(yè)務(wù)處理為主要業(yè)務(wù)的系統(tǒng))中,如果數(shù)據(jù)包轉(zhuǎn)發(fā)系統(tǒng)包含多個(gè)CPU,則為了更好的利用CPU資源,將多個(gè)CPU劃分為接收分流CPU (簡(jiǎn)稱接收CPU)和轉(zhuǎn)發(fā)及業(yè)務(wù)處理CPU (簡(jiǎn)稱轉(zhuǎn)發(fā)CPU)。接收CPU從物理接口(Interface)接收數(shù)據(jù)流(將連續(xù)處理的特征比較相似的一組數(shù)據(jù)包(數(shù)據(jù)包也可稱為數(shù)據(jù)報(bào)文)稱為一條數(shù)據(jù)流,比如將源/目的地址,源/目的端口,協(xié)議號(hào)都相同的一組數(shù)據(jù)包稱為一條數(shù)據(jù)流)后,按照一定規(guī)則進(jìn)行分流,并將分流后的數(shù)據(jù)流分配到不同的處理隊(duì)列。
[0004]以接收CPU按照Hash規(guī)則分流為例進(jìn)行說(shuō)明,如圖1所示,處理隊(duì)列I用于緩存Hash結(jié)果為O的數(shù)據(jù)流,處理隊(duì)列2用于緩存Hash結(jié)果為I數(shù)據(jù)流,處理隊(duì)列3用于緩存Hash結(jié)果為2的數(shù)據(jù)流,處理隊(duì)列4用于緩存Hash結(jié)果為3的數(shù)據(jù)流,處理隊(duì)列5用于緩存Hash結(jié)果為4的數(shù)據(jù)流,處理隊(duì)列6用于緩存Hash結(jié)果為5的數(shù)據(jù)流。例如,接收CPU在接收到數(shù)據(jù)流之后,通過(guò)Hash算法對(duì)該數(shù)據(jù)流進(jìn)行Hash處理,如果Hash結(jié)果為1,則將該數(shù)據(jù)流緩存到處理隊(duì)列2。為充分利用CPU資源,由轉(zhuǎn)發(fā)CPUl負(fù)責(zé)處理隊(duì)列I和處理隊(duì)列3內(nèi)緩存的數(shù)據(jù)流,由轉(zhuǎn)發(fā)CPU2負(fù)責(zé)處理隊(duì)列2和處理隊(duì)列4內(nèi)緩存的數(shù)據(jù)流,由轉(zhuǎn)發(fā)CPU3負(fù)責(zé)處理隊(duì)列5內(nèi)緩存的數(shù)據(jù)流,由轉(zhuǎn)發(fā)CPU4負(fù)責(zé)處理隊(duì)列6內(nèi)緩存的數(shù)據(jù)流。
[0005]如果有多個(gè)數(shù)據(jù)包轉(zhuǎn)發(fā)系統(tǒng)共同使用所有的CPU資源(即上述接收CPU以及轉(zhuǎn)發(fā)CPU),如:在具體應(yīng)用中,物理主機(jī)上虛擬化出多個(gè)虛擬機(jī)(VM),且每個(gè)虛擬機(jī)可以是上述的數(shù)據(jù)包轉(zhuǎn)發(fā)系統(tǒng),并且各虛擬機(jī)均需要使用物理主機(jī)上的CPU資源,在此情況下,則:在一個(gè)虛擬機(jī)使用物理主機(jī)上的CPU資源時(shí),其它虛擬機(jī)將無(wú)法使用該虛擬機(jī)所使用的CPU資源,只有當(dāng)該虛擬機(jī)完成處理并釋放該CUP資源后,其它虛擬機(jī)才能夠使用該CPU資源,從而導(dǎo)致無(wú)法合理的使用物理主機(jī)上的CPU資源,造成CPU資源的浪費(fèi)。
【發(fā)明內(nèi)容】
[0006]本發(fā)明實(shí)施例提供一種多CPU虛擬機(jī)系統(tǒng)的數(shù)據(jù)流處理方法和裝置,以合理的使用物理主機(jī)上的CPU資源,并且避免造成CPU資源的浪費(fèi)。
[0007]為了達(dá)到上述目的,本發(fā)明實(shí)施例提供一種多中央處理器CPU虛擬機(jī)系統(tǒng)的數(shù)據(jù)流處理方法,所述方法包括以下步驟:
[0008]虛擬機(jī)確定自身轉(zhuǎn)發(fā)CPU的CPU占用率,并確定自身轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài);其中,轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)具體包括:無(wú)負(fù)荷狀態(tài)、或者低負(fù)荷狀態(tài)、或者正常負(fù)荷狀態(tài)、或者超負(fù)荷狀態(tài);
[0009]如果當(dāng)前不存在運(yùn)行狀態(tài)為超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,且當(dāng)前存在兩個(gè)以上運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,所述虛擬機(jī)從所述兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU中選擇待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU和待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU ;
[0010]所述虛擬機(jī)指示所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,釋放所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的CPU資源,以使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠分配給其它虛擬機(jī);以及,所述虛擬機(jī)指示所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流。
[0011]針對(duì)一個(gè)CPU占用率計(jì)算周期,所述虛擬機(jī)確定自身轉(zhuǎn)發(fā)CPU的CPU占用率的過(guò)程,具體包括:針對(duì)轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)的每個(gè)處理隊(duì)列,所述虛擬機(jī)確定每次對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間;
[0012]所述虛擬機(jī)確定所述CPU占用率計(jì)算周期內(nèi)所有對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間之和為該處理隊(duì)列的有效消耗時(shí)間;
[0013]所述虛擬機(jī)確定所述轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)的所有處理隊(duì)列的有效消耗時(shí)間之和為該處理序列內(nèi)所有處理隊(duì)列的有效消耗所占時(shí)間;
[0014]所述虛擬機(jī)確定所述轉(zhuǎn)發(fā)CPU的CPU占用率具體為:處理序列內(nèi)所有處理隊(duì)列的有效消耗所占時(shí)間除以所述CPU占用率計(jì)算周期。
[0015]針對(duì)一個(gè)CPU占用率計(jì)算周期,所述虛擬機(jī)確定自身轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)的過(guò)程,具體包括:
[0016]當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率為O時(shí),所述虛擬機(jī)確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為無(wú)負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于0,且小于等于預(yù)設(shè)第一閾值時(shí),所述虛擬機(jī)確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為低負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于所述預(yù)設(shè)第一閾值,且小于等于預(yù)設(shè)第二閾值時(shí),所述虛擬機(jī)確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為正常負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于所述預(yù)設(shè)第二閾值時(shí),所述虛擬機(jī)確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為超負(fù)荷狀態(tài);其中,所述預(yù)設(shè)第二閾值大于所述預(yù)設(shè)第一閾值。
[0017]所述虛擬機(jī)從所述兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU中選擇待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU和待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的過(guò)程,具體包括:
[0018]所述虛擬機(jī)確定所述兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU分別對(duì)應(yīng)的處理序列內(nèi)的處理隊(duì)列的數(shù)量,選擇處理序列內(nèi)的處理隊(duì)列的數(shù)量最少的低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU為所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU,選擇處理序列內(nèi)的處理隊(duì)列的數(shù)量最多的低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU為所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU。
[0019]所述虛擬機(jī)指示所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,具體包括:所述虛擬機(jī)設(shè)置所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài);由所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),從對(duì)應(yīng)的處理序列內(nèi)刪除所有處理隊(duì)列,在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該處理序列內(nèi)的所有處理隊(duì)列需要由所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài);或者,由所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),利用對(duì)應(yīng)的處理序列內(nèi)的各處理隊(duì)列的有效消耗時(shí)間從該處理序列內(nèi)選擇處理隊(duì)列,刪除該選擇的處理隊(duì)列,并在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該選擇的處理隊(duì)列需要由所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài);
[0020]虛擬機(jī)指示所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流,具體包括:所述虛擬機(jī)設(shè)置所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài);由待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài)時(shí),將待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記的需要由自身進(jìn)行處理的處理隊(duì)列添加到自身對(duì)應(yīng)的處理序列內(nèi),并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。
[0021]所述虛擬機(jī)使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠分配給其它虛擬機(jī)的過(guò)程,具體包括:
[0022]在所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的CPU資源均被釋放后,所述虛擬機(jī)停止所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU上的所有線程,以使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU休眠,以使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠分配給其它虛擬機(jī)。
[0023]所述方法進(jìn)一步包括:如果當(dāng)前存在運(yùn)行狀態(tài)為超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,且所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)有多個(gè)處理隊(duì)列,并且當(dāng)前存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,所述虛擬機(jī)指示所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,指示所述低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流。
[0024]所述虛擬機(jī)指示所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,具體包括:所述虛擬機(jī)設(shè)置所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài);由所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),利用對(duì)應(yīng)的處理序列內(nèi)的各處理隊(duì)列的有效消耗時(shí)間從該處理序列內(nèi)選擇處理隊(duì)列,刪除該選擇的處理隊(duì)列,并在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該選擇的處理隊(duì)列需要由所述低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài);
[0025]所述虛擬機(jī)指示所述低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流,具體包括:如果當(dāng)前存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,則所述虛擬機(jī)設(shè)置所述低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài),如果當(dāng)前不存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,但是當(dāng)前存在運(yùn)行狀態(tài)為無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,則所述虛擬機(jī)設(shè)置所述無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài);由所述低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài)時(shí),將待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記的需要由自身進(jìn)行處理的處理隊(duì)列添加到自身對(duì)應(yīng)的處理序列內(nèi),并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。
[0026]本發(fā)明實(shí)施例提供一種多中央處理器CPU虛擬機(jī)系統(tǒng)的數(shù)據(jù)流處理裝置,所述多CPU虛擬機(jī)系統(tǒng)的數(shù)據(jù)流處理裝置包括虛擬機(jī),所述虛擬機(jī)包括:
[0027]確定模塊,用于確定虛擬機(jī)自身轉(zhuǎn)發(fā)CPU的CPU占用率,并確定虛擬機(jī)自身轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài);其中,轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)具體包括:無(wú)負(fù)荷狀態(tài)、或者低負(fù)荷狀態(tài)、或者正常負(fù)荷狀態(tài)、或者超負(fù)荷狀態(tài);
[0028]選擇模塊,用于在當(dāng)前不存在運(yùn)行狀態(tài)為超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,且當(dāng)前存在兩個(gè)以上運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU時(shí),從兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU中選擇待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU和待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU ;
[0029]指示模塊,用于指示所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,釋放所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的CPU資源,以使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠分配給其它虛擬機(jī);以及,指示所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流。
[0030]所述確定虛擬機(jī)自身轉(zhuǎn)發(fā)CPU的CPU占用率,具體包括:針對(duì)一個(gè)CPU占用率計(jì)算周期,針對(duì)轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)的每個(gè)處理隊(duì)列,確定每次對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間;以及,確定所述CPU占用率計(jì)算周期內(nèi)所有對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間之和為該處理隊(duì)列的有效消耗時(shí)間;以及,確定所述轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)的所有處理隊(duì)列的有效消耗時(shí)間之和為該處理序列內(nèi)所有處理隊(duì)列的有效消耗所占時(shí)間;以及,確定所述轉(zhuǎn)發(fā)CPU的CPU占用率具體為:處理序列內(nèi)所有處理隊(duì)列的有效消耗所占時(shí)間除以所述CPU占用率計(jì)算周期。
[0031]所述確定虛擬機(jī)自身轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài),具體包括:針對(duì)一個(gè)CPU占用率計(jì)算周期,當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率為O時(shí),確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為無(wú)負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于0,且小于等于預(yù)設(shè)第一閾值時(shí),確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為低負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于所述預(yù)設(shè)第一閾值,且小于等于預(yù)設(shè)第二閾值時(shí),確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為正常負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于所述預(yù)設(shè)第二閾值時(shí),確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為超負(fù)荷狀態(tài);其中,所述預(yù)設(shè)第二閾值大于所述預(yù)設(shè)第一閾值。
[0032]所述從兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU中選擇待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU和待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU,具體包括:確定所述兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU分別對(duì)應(yīng)的處理序列內(nèi)的處理隊(duì)列的數(shù)量,選擇處理序列內(nèi)的處理隊(duì)列的數(shù)量最少的低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU為所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU,選擇處理序列內(nèi)的處理隊(duì)列的數(shù)量最多的低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU為所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU。
[0033]所述指示所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,具體包括:設(shè)置所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài);由所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),從對(duì)應(yīng)的處理序列內(nèi)刪除所有處理隊(duì)列,在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該處理序列內(nèi)的所有處理隊(duì)列需要由所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài);或者,由所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),利用對(duì)應(yīng)的處理序列內(nèi)的各處理隊(duì)列的有效消耗時(shí)間從該處理序列內(nèi)選擇處理隊(duì)列,刪除該選擇的處理隊(duì)列,并在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該選擇的處理隊(duì)列需要由所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài);
[0034]所述指示所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流,具體包括:設(shè)置所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài);由待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài)時(shí),將待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記的需要由自身進(jìn)行處理的處理隊(duì)列添加到自身對(duì)應(yīng)的處理序列內(nèi),并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。
[0035]所述使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠分配給其它虛擬機(jī),具體包括:在所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的CPU資源均被釋放后,停止所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU上的所有線程,以使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU休眠,以使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠分配給其它虛擬機(jī)。
[0036]所述指示模塊,還用于在當(dāng)前存在運(yùn)行狀態(tài)為超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,且所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)有多個(gè)處理隊(duì)列,并且當(dāng)前存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU時(shí),指示所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,并指示所述低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流。
[0037]所述指示超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,具體包括:設(shè)置超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài);由超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),利用對(duì)應(yīng)的處理序列內(nèi)的各處理隊(duì)列的有效消耗時(shí)間從該處理序列內(nèi)選擇處理隊(duì)列,刪除該選擇的處理隊(duì)列,在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該選擇的處理隊(duì)列需要由所述低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài);
[0038]所述指示低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流,具體包括:如果當(dāng)前存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,則設(shè)置所述低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài),如果當(dāng)前不存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,但是當(dāng)前存在運(yùn)行狀態(tài)為無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,則設(shè)置所述無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài);由低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài)時(shí),將待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記的需要由自身進(jìn)行處理的處理隊(duì)列添加到自身對(duì)應(yīng)的處理序列內(nèi),并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。
[0039]與現(xiàn)有技術(shù)相比,本發(fā)明實(shí)施例至少具有以下優(yōu)點(diǎn):本發(fā)明實(shí)施例中,當(dāng)存在兩個(gè)以上的運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU時(shí),能夠釋放部分低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的CPU資源,以使部分低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU能夠及時(shí)分配給其它虛擬機(jī),從而合理的使用物理主機(jī)上的CPU資源,避免造成CPU資源的浪費(fèi),并充分利用CPU資源,并提升CPU資源的利用效率。
【專利附圖】
【附圖說(shuō)明】
[0040]圖1是現(xiàn)有技術(shù)中按照Hash規(guī)則分流的應(yīng)用示意圖;
[0041]圖2是本發(fā)明實(shí)施例中的多CPU虛擬機(jī)系統(tǒng)的數(shù)據(jù)流處理方法流程圖;
[0042]圖3是本發(fā)明實(shí)施例中的多CPU數(shù)據(jù)流處理裝置的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0043]針對(duì)現(xiàn)有技術(shù)中存在的問(wèn)題,本發(fā)明實(shí)施例提供一種多CPU虛擬機(jī)系統(tǒng)的數(shù)據(jù)流處理方法,該方法應(yīng)用在包括一個(gè)或多個(gè)虛擬機(jī)的物理主機(jī)上。
[0044]該物理主機(jī)至少包括一個(gè)或多個(gè)接收CPU以及多個(gè)轉(zhuǎn)發(fā)CPU ;接收CPU負(fù)責(zé)從物理接口接收數(shù)據(jù)流,并按照一定規(guī)則(如Hash規(guī)則,后續(xù)過(guò)程中以Hash規(guī)則為例進(jìn)行說(shuō)明)進(jìn)行分流,并將分流后的數(shù)據(jù)流分配到不同的處理隊(duì)列;轉(zhuǎn)發(fā)CPU負(fù)責(zé)處理對(duì)應(yīng)的處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流,該處理過(guò)程具體可以為轉(zhuǎn)發(fā)對(duì)應(yīng)的處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流,或者,對(duì)相應(yīng)的處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行相關(guān)業(yè)務(wù)處理。進(jìn)一步的,各轉(zhuǎn)發(fā)CPU分別對(duì)應(yīng)有處理序列,且處理序列內(nèi)記錄有需要由相應(yīng)的轉(zhuǎn)發(fā)CPU進(jìn)行處理的處理隊(duì)列,并且各轉(zhuǎn)發(fā)CPU均用于處理本轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流。
[0045]針對(duì)物理主機(jī)上虛擬化出的多個(gè)虛擬機(jī),各虛擬機(jī)均需要使用物理主機(jī)上的CPU資源,即上述的接收CPU以及轉(zhuǎn)發(fā)CPU。在一個(gè)虛擬機(jī)使用物理主機(jī)上的CPU資源時(shí),其它虛擬機(jī)將無(wú)法同時(shí)使用該虛擬機(jī)使用的CPU資源。
[0046]以圖1為本發(fā)明實(shí)施例的應(yīng)用場(chǎng)景,假設(shè)虛擬機(jī)當(dāng)前同時(shí)占用物理主機(jī)上的轉(zhuǎn)發(fā)CPU1、轉(zhuǎn)發(fā)CPU2、轉(zhuǎn)發(fā)CPU3和轉(zhuǎn)發(fā)CPU4 ;該轉(zhuǎn)發(fā)CPUl對(duì)應(yīng)的處理序列內(nèi)記錄有處理隊(duì)列I和處理隊(duì)列3,即轉(zhuǎn)發(fā)CPUl負(fù)責(zé)處理隊(duì)列I和處理隊(duì)列3內(nèi)緩存的數(shù)據(jù)流,且處理隊(duì)列I用于緩存Hash結(jié)果為O的數(shù)據(jù)流,處理隊(duì)列3用于緩存Hash結(jié)果為2的數(shù)據(jù)流;轉(zhuǎn)發(fā)CPU2對(duì)應(yīng)的處理序列內(nèi)記錄有處理隊(duì)列2和處理隊(duì)列4,即轉(zhuǎn)發(fā)CPU2負(fù)責(zé)處理隊(duì)列2和處理隊(duì)列4內(nèi)緩存的數(shù)據(jù)流,且處理隊(duì)列2用于緩存Hash結(jié)果為I數(shù)據(jù)流,處理隊(duì)列4用于緩存Hash結(jié)果為3的數(shù)據(jù)流;轉(zhuǎn)發(fā)CPU3對(duì)應(yīng)的處理序列內(nèi)記錄有處理隊(duì)列5,即轉(zhuǎn)發(fā)CPU3負(fù)責(zé)處理隊(duì)列5內(nèi)緩存的數(shù)據(jù)流,且處理隊(duì)列5用于緩存Hash結(jié)果為4的數(shù)據(jù)流;轉(zhuǎn)發(fā)CPU4對(duì)應(yīng)的處理序列內(nèi)記錄有處理隊(duì)列6,即轉(zhuǎn)發(fā)CPU4負(fù)責(zé)處理隊(duì)列6內(nèi)緩存的數(shù)據(jù)流,且處理隊(duì)列6用于緩存Hash結(jié)果為5的數(shù)據(jù)流。基于此,接收CPU在接收到數(shù)據(jù)流之后,通過(guò)Hash算法對(duì)該數(shù)據(jù)流進(jìn)行Hash處理;如果Hash結(jié)果為0,則接收CPU將該數(shù)據(jù)流緩存到處理隊(duì)列I ;如果Hash結(jié)果為1,則接收CPU將該數(shù)據(jù)流緩存到處理隊(duì)列2 ;以此類推。對(duì)于處理隊(duì)列I內(nèi)緩存的數(shù)據(jù)流,由轉(zhuǎn)發(fā)CPUl負(fù)責(zé)處理;對(duì)于處理隊(duì)列2內(nèi)緩存的數(shù)據(jù)流,由轉(zhuǎn)發(fā)CPU2負(fù)責(zé)處理;以此類推。
[0047]基于上述應(yīng)用場(chǎng)景,如圖2所示,該數(shù)據(jù)流處理方法包括以下步驟:
[0048]步驟201,虛擬機(jī)確定自身轉(zhuǎn)發(fā)CPU的CPU占用率。其中,虛擬機(jī)自身轉(zhuǎn)發(fā)CPU是指虛擬機(jī)當(dāng)前占用的物理主機(jī)上的轉(zhuǎn)發(fā)CPU。例如,虛擬機(jī)當(dāng)前同時(shí)占用物理主機(jī)上的轉(zhuǎn)發(fā)CPUl、轉(zhuǎn)發(fā)CPU2、轉(zhuǎn)發(fā)CPU3和轉(zhuǎn)發(fā)CPU4時(shí),則虛擬機(jī)自身轉(zhuǎn)發(fā)CPU為轉(zhuǎn)發(fā)CPUl、轉(zhuǎn)發(fā)CPU2、轉(zhuǎn)發(fā)CPU3和轉(zhuǎn)發(fā)CPU4。
[0049]本發(fā)明實(shí)施例中,將轉(zhuǎn)發(fā)CPU的CPU占用率(CPUusage)定義為:取某一段時(shí)間作為CPU占用率計(jì)算周期(或稱為數(shù)據(jù)流調(diào)整周期),記為Tq。JfCPU占用率計(jì)算周期時(shí)間內(nèi),轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)所有處理隊(duì)列的有效消耗所占時(shí)間記為Tuse ;則轉(zhuǎn)發(fā)CPU的CPU占用率(CPUu胃)=有效消耗所占時(shí)間記為T-/CPU占用率計(jì)算周期Tm。
[0050]其中,CPU占用率計(jì)算周期Tct??梢愿鶕?jù)不同需求進(jìn)行定制,如CPU占用率計(jì)算周期Tq。為5秒。針對(duì)一個(gè)CPU占用率計(jì)算周期,虛擬機(jī)確定自身轉(zhuǎn)發(fā)CPU的CPU占用率的過(guò)程,具體包括:針對(duì)轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)的每個(gè)處理隊(duì)列,虛擬機(jī)確定每次對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間;虛擬機(jī)確定CPU占用率計(jì)算周期內(nèi)所有對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間之和為該處理隊(duì)列的有效消耗時(shí)間;虛擬機(jī)確定轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)的所有處理隊(duì)列的有效消耗時(shí)間之和為該處理序列內(nèi)所有處理隊(duì)列的有效消耗所占時(shí)間;虛擬機(jī)確定轉(zhuǎn)發(fā)CPU的CPU占用率具體為:處理序列內(nèi)所有處理隊(duì)列的有效消耗所占時(shí)間除以CPU占用率計(jì)算周期。
[0051]例如,轉(zhuǎn)發(fā)CPUl對(duì)應(yīng)的處理序列內(nèi)包含處理隊(duì)列I和處理隊(duì)列3,虛擬機(jī)確定每次對(duì)處理隊(duì)列I內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間,并確定每次對(duì)處理隊(duì)列3內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間。假設(shè)CPU占用率計(jì)算周期內(nèi)對(duì)處理隊(duì)列I內(nèi)緩存的數(shù)據(jù)流處理5次,且5次的時(shí)間分別為Al、B1、Cl、DU El ;CPU占用率計(jì)算周期內(nèi)對(duì)處理隊(duì)列3內(nèi)緩存的數(shù)據(jù)流處理4次,且4次的時(shí)間分別為A2、B2、C2、D2 ;則:CPU占用率計(jì)算周期內(nèi)所有對(duì)處理隊(duì)列I內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間之和(A1+B1+C1+D1+E1)為該處理隊(duì)列I的有效消耗時(shí)間;CPU占用率計(jì)算周期內(nèi)所有對(duì)處理隊(duì)列3內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間之和(A2+B2+C2+D2)為該處理隊(duì)列3的有效消耗時(shí)間。虛擬機(jī)確定處理隊(duì)列I的有效消耗時(shí)間(A1+B1+C1+D1+E1)與處理隊(duì)列3的有效消耗時(shí)間(A2+B2+C2+D2)之和為有效消耗所占時(shí)間;虛擬機(jī)確定轉(zhuǎn)發(fā)CPU的CPU占用率為:有效消耗所占時(shí)間除以CPU占用率計(jì)算周期。
[0052]在本發(fā)明實(shí)施例的一種具體實(shí)現(xiàn)方式中,將計(jì)算周期狀態(tài)分為如下四種狀態(tài):
(1)CPU_CYC_START (CPU占用率計(jì)算周期開始狀態(tài)),在計(jì)算周期狀態(tài)為CPU_CYC_START時(shí),則表示能夠啟動(dòng)新的CPU占用率計(jì)算周期;(2)CPU_CYC_RUNNING (CPU占用率計(jì)算周期運(yùn)行狀態(tài)),在計(jì)算周期狀態(tài)為CPU_CYC_RUNNING時(shí),則表示新的CPU占用率計(jì)算周期當(dāng)前正在進(jìn)行;(3) CPU_CYC_END (CPU占用率計(jì)算周期停止?fàn)顟B(tài)),在計(jì)算周期狀態(tài)為CPU_CYC_END時(shí),表示CPU占用率計(jì)算周期結(jié)束,可啟動(dòng)新的CPU占用率計(jì)算周期;(4)CPU_CYC_SCHEDULING (CPU占用率計(jì)算周期調(diào)度狀態(tài)),在計(jì)算周期狀態(tài)為CPU_CYC_SCHEDULING時(shí),表示數(shù)據(jù)流正在調(diào)整中。
[0053]基于上述計(jì)算周期狀態(tài),針對(duì)一個(gè)CPU占用率計(jì)算周期,虛擬機(jī)確定自身轉(zhuǎn)發(fā)CPU的CPU占用率的過(guò)程,具體包括以下步驟:
[0054]步驟A、如果當(dāng)前計(jì)算周期狀態(tài)為CPU_CYC_START,則執(zhí)行步驟B ;否則繼續(xù)等待,直到計(jì)算周期狀態(tài)為CPU_CYC_START,并執(zhí)行步驟B。
[0055]步驟B、虛擬機(jī)啟動(dòng)一個(gè)新的CPU占用率計(jì)算周期,并設(shè)置當(dāng)前計(jì)算周期狀態(tài)為CPU_CYC_RUNNING ;步驟B后等待執(zhí)行步驟C。在啟動(dòng)新的CPU占用率計(jì)算周期時(shí),還需要清除上個(gè)CPU占用率計(jì)算周期的記錄數(shù)據(jù),如清除上個(gè)CPU占用率計(jì)算周期記錄的有效消耗所占時(shí)間、CPU占用率等數(shù)據(jù)。
[0056]在計(jì)算周期狀態(tài)為CPU_CYC_RUNNING時(shí),針對(duì)轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)的每個(gè)處理隊(duì)列,轉(zhuǎn)發(fā)CPU記錄每次對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間;其中,該轉(zhuǎn)發(fā)CPU記錄對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的開始時(shí)間Tstart,并記錄對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的結(jié)束時(shí)間Tmd,且本次對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間為Tmd-Tstart?;谵D(zhuǎn)發(fā)CPU記錄的對(duì)處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間(Tend-Tstart),虛擬機(jī)能夠確定出每次對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間。
[0057]步驟C、如果當(dāng)前CPU占用率計(jì)算周期到期,則虛擬機(jī)設(shè)置當(dāng)前計(jì)算周期狀態(tài)為CPU_CYC_END,并執(zhí)行步驟D ;否則繼續(xù)等待,直到當(dāng)前CPU占用率計(jì)算周期到期,并設(shè)置當(dāng)前計(jì)算周期狀態(tài)為CPU_CYC_END。
[0058]步驟D、針對(duì)轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)的每個(gè)處理隊(duì)列,虛擬機(jī)確定每次對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間,且CPU占用率計(jì)算周期內(nèi)所有對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間之和為處理隊(duì)列的有效消耗時(shí)間;確定轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)所有處理隊(duì)列的有效消耗時(shí)間之和為處理序列內(nèi)所有處理隊(duì)列的有效消耗所占時(shí)間,確定轉(zhuǎn)發(fā)CPU的CPU占用率為:處理序列內(nèi)所有處理隊(duì)列的有效消耗所占時(shí)間/CPU占用率計(jì)算周期。
[0059]步驟202,虛擬機(jī)利用轉(zhuǎn)發(fā)CPU的CPU占用率確定轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)。其中,轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)具體包括:無(wú)負(fù)荷狀態(tài)、或者低負(fù)荷狀態(tài)、或者正常負(fù)荷狀態(tài)、或者超負(fù)荷狀態(tài)。進(jìn)一步的,在無(wú)負(fù)荷狀態(tài)下,表示轉(zhuǎn)發(fā)CPU上沒有數(shù)據(jù)流轉(zhuǎn)發(fā)和業(yè)務(wù)處理;此情況下,轉(zhuǎn)發(fā)CPU還可以轉(zhuǎn)入數(shù)據(jù)流,并對(duì)轉(zhuǎn)入的數(shù)據(jù)流進(jìn)行轉(zhuǎn)發(fā)和業(yè)務(wù)處理。在低負(fù)荷狀態(tài)下,表示轉(zhuǎn)發(fā)CPU可以轉(zhuǎn)入數(shù)據(jù)流,并對(duì)轉(zhuǎn)入的數(shù)據(jù)流進(jìn)行轉(zhuǎn)發(fā)和業(yè)務(wù)處理;此情況下,轉(zhuǎn)發(fā)CPU還可以轉(zhuǎn)出數(shù)據(jù)流,由其它轉(zhuǎn)發(fā)CPU對(duì)該轉(zhuǎn)出的數(shù)據(jù)流進(jìn)行轉(zhuǎn)發(fā)和業(yè)務(wù)處理。在正常負(fù)荷狀態(tài)下,表示轉(zhuǎn)發(fā)CPU不可以轉(zhuǎn)入數(shù)據(jù)流,也不需要轉(zhuǎn)出數(shù)據(jù)流;在超負(fù)荷狀態(tài)下,表示轉(zhuǎn)發(fā)CPU需要轉(zhuǎn)出數(shù)據(jù)流,由其它轉(zhuǎn)發(fā)CPU對(duì)該轉(zhuǎn)出的數(shù)據(jù)流進(jìn)行轉(zhuǎn)發(fā)和業(yè)務(wù)處理。
[0060]本發(fā)明實(shí)施例中,虛擬機(jī)確定轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)的,具體包括但不限于:當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率為O時(shí),虛擬機(jī)確定轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為無(wú)負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于0,且小于等于預(yù)設(shè)第一閾值時(shí),虛擬機(jī)確定轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為低負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于預(yù)設(shè)第一閾值,且小于等于預(yù)設(shè)第二閾值時(shí),虛擬機(jī)確定轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為正常負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于預(yù)設(shè)第二閾值時(shí),虛擬機(jī)確定轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為超負(fù)荷狀態(tài)。其中,預(yù)設(shè)第一閾值以及預(yù)設(shè)第二閾值的設(shè)置均可以根據(jù)實(shí)際需要任意設(shè)置,只要保證預(yù)設(shè)第二閾值大于預(yù)設(shè)第一閾值即可,如:預(yù)設(shè)第一閾值為40%,預(yù)設(shè)第二閾值為60%。
[0061]步驟203,如果當(dāng)前不存在運(yùn)行狀態(tài)為超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,且存在兩個(gè)以上運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,則虛擬機(jī)從兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU中選擇待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU和待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU。
[0062]本發(fā)明實(shí)施例中,虛擬機(jī)從兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU中選擇待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU和待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的過(guò)程,具體包括:虛擬機(jī)確定所述兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU分別對(duì)應(yīng)的處理序列內(nèi)的處理隊(duì)列的數(shù)量,選擇處理序列內(nèi)的處理隊(duì)列的數(shù)量最少的低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU為待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU,選擇處理序列內(nèi)的處理隊(duì)列的數(shù)量最多的低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU為待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU。其中,在處理隊(duì)列的數(shù)量最少的低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU為多個(gè)時(shí),可以從中任意選擇一個(gè)轉(zhuǎn)發(fā)CPU為待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU;在處理隊(duì)列的數(shù)量最多的低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU為多個(gè)時(shí),可以從中任意選擇一個(gè)轉(zhuǎn)發(fā)CPU為待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU。
[0063]步驟204,虛擬機(jī)指示待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,釋放該待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的CPU資源,以使該待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠被物理主機(jī)分配給其它虛擬機(jī);以及,虛擬機(jī)指示待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入該待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流。
[0064]本發(fā)明實(shí)施例中,還可以為每個(gè)轉(zhuǎn)發(fā)CPU設(shè)置對(duì)應(yīng)的調(diào)整狀態(tài),該調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)(CPU_STATUS_0UT )、或轉(zhuǎn)入狀態(tài)(CPU_STATUS_I N )、或無(wú)調(diào)整狀態(tài)(CPU_STATUS_NORMAL)。在轉(zhuǎn)出狀態(tài)下,表示相應(yīng)的轉(zhuǎn)發(fā)CPU有數(shù)據(jù)流需要轉(zhuǎn)出;在轉(zhuǎn)入狀態(tài)下,表示相應(yīng)的轉(zhuǎn)發(fā)CPU有數(shù)據(jù)流需要轉(zhuǎn)入;在無(wú)調(diào)整狀態(tài)下,表示相應(yīng)的轉(zhuǎn)發(fā)CPU沒有數(shù)據(jù)流需要轉(zhuǎn)出和轉(zhuǎn)入。
[0065]虛擬機(jī)指示待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,具體包括:虛擬機(jī)設(shè)置待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài);由待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),從對(duì)應(yīng)的處理序列內(nèi)刪除所有處理隊(duì)列,在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該處理序列內(nèi)的所有處理隊(duì)列需要由待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài);或者,由待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),利用對(duì)應(yīng)的處理序列內(nèi)的各處理隊(duì)列的有效消耗時(shí)間從該處理序列內(nèi)選擇處理隊(duì)列(如選擇有效消耗時(shí)間最多的處理隊(duì)列),刪除該選擇的處理隊(duì)列,并在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該選擇的處理隊(duì)列需要由待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。
[0066]此外,虛擬機(jī)指示待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流,具體包括:虛擬機(jī)設(shè)置待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài);由待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài)時(shí),將待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記的需要由自身進(jìn)行處理的處理隊(duì)列添加到自身對(duì)應(yīng)的處理序列內(nèi),并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。
[0067]本發(fā)明實(shí)施例中,虛擬機(jī)使待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠被物理主機(jī)分配給其它虛擬機(jī),具體包括:在待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的CPU資源均被釋放后,虛擬機(jī)停止待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU上的所有線程,以使待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU休眠,以使待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠分配給其它虛擬機(jī)。
[0068]具體的,為了提高CPU資源的利用率,需要盡量減少虛擬機(jī)占用的CPU資源,因此,在轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為無(wú)負(fù)荷狀態(tài)時(shí),虛擬機(jī)需要及時(shí)釋放該轉(zhuǎn)發(fā)CPU的CPU資源,以使物理主機(jī)能夠?qū)⒃撧D(zhuǎn)發(fā)CPU的CPU資源分配給其它虛擬機(jī)。為了使物理主機(jī)能夠?qū)⑥D(zhuǎn)發(fā)CPU的CPU資源分配給其它虛擬機(jī),當(dāng)轉(zhuǎn)發(fā)CPU已經(jīng)轉(zhuǎn)出自身需要處理的所有數(shù)據(jù)流之后,需要釋放該轉(zhuǎn)發(fā)CPU的所有CPU資源,并停止該轉(zhuǎn)發(fā)CPU上的所有線程,以使該轉(zhuǎn)發(fā)CPU完全休眠;在該轉(zhuǎn)發(fā)CPU完全休眠時(shí),該轉(zhuǎn)發(fā)CPU的CPU資源能夠被物理主機(jī)分配給其它虛擬機(jī)。進(jìn)一步的,在轉(zhuǎn)發(fā)CPU完全休眠時(shí),如果需要向該轉(zhuǎn)發(fā)CPU分配任務(wù),還需要及時(shí)喚醒調(diào)用該轉(zhuǎn)發(fā)CPU的處理線程。
[0069]本發(fā)明實(shí)施例中,如果當(dāng)前存在運(yùn)行狀態(tài)為超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,且超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)有多個(gè)處理隊(duì)列,并且當(dāng)前存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,則:虛擬機(jī)指示超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流;以及,虛擬機(jī)指示低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流。
[0070]具體的,虛擬機(jī)指示超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,具體包括:虛擬機(jī)設(shè)置超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài);由該超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),利用對(duì)應(yīng)的處理序列內(nèi)的各處理隊(duì)列的有效消耗時(shí)間從該處理序列內(nèi)選擇處理隊(duì)列(如:選擇有效消耗時(shí)間最少的處理隊(duì)列),刪除該選擇的處理隊(duì)列,并在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該選擇的處理隊(duì)列需要由低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。
[0071]虛擬機(jī)指示低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流,具體包括:如果當(dāng)前存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,則虛擬機(jī)設(shè)置低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài),如果當(dāng)前不存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,但是當(dāng)前存在運(yùn)行狀態(tài)為無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,則虛擬機(jī)設(shè)置無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài);由低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài)時(shí),將待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記的需要由自身進(jìn)行處理的處理隊(duì)列添加到自身對(duì)應(yīng)的處理序列內(nèi),并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。[0072]虛擬機(jī)利用轉(zhuǎn)發(fā)CPU的CPU占用率確定轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)之后,針對(duì)上述步驟203以及步驟204的相關(guān)數(shù)據(jù)流轉(zhuǎn)入和數(shù)據(jù)流轉(zhuǎn)出等處理流程,在本發(fā)明實(shí)施例的一種具體實(shí)現(xiàn)方式中,相應(yīng)處理流程包括以下步驟:
[0073]步驟A、虛擬機(jī)判斷當(dāng)前是否存在運(yùn)行狀態(tài)為超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU ;如果存在,則執(zhí)行步驟B ;如果不存在,則執(zhí)行步驟E。
[0074]步驟B、如果超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)有多個(gè)處理隊(duì)列,則虛擬機(jī)判斷當(dāng)前是否存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU ;如果不存在,則執(zhí)行步驟C ;如果存在,則設(shè)置超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài),設(shè)置低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài),并執(zhí)行步驟D。
[0075]步驟C、虛擬機(jī)判斷當(dāng)前是否存在運(yùn)行狀態(tài)為無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU ;如果存在,則設(shè)置超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài),設(shè)置無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài),并執(zhí)行步驟D ;如果不存在,則設(shè)置計(jì)算周期狀態(tài)為CPU_CYC_START (CPU占用率計(jì)算周期開始狀態(tài)),計(jì)算周期狀態(tài)為CPU_CYC_START時(shí)表示能啟動(dòng)新的CPU占用率計(jì)算周期。
[0076]步驟D、超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),利用對(duì)應(yīng)的處理序列內(nèi)的各處理隊(duì)列的有效消耗時(shí)間從該處理序列內(nèi)選擇處理隊(duì)列(如:選擇有效消耗時(shí)間最少的處理隊(duì)列),刪除該選擇的處理隊(duì)列,并在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該選擇的處理隊(duì)列需要由低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。此外,低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài)時(shí),將待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記的需要由自身進(jìn)行處理的處理隊(duì)列添加到自身對(duì)應(yīng)的處理序列內(nèi),并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。
[0077]為了實(shí)現(xiàn)上述過(guò)程,超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU從處理序列內(nèi)選擇處理隊(duì)列(具體選擇處理序列內(nèi)的哪個(gè)處理隊(duì)列可以根據(jù)實(shí)際情況進(jìn)行定制,但不建議選擇有效消耗時(shí)間最多的處理隊(duì)列,如可以選擇有效消耗時(shí)間最少的處理隊(duì)列)之后,設(shè)置該選擇的處理隊(duì)列的狀態(tài)為DATA_STREAM_OUT(在狀態(tài)為DATA_STREAM_OUT時(shí),表示處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流將被轉(zhuǎn)出到新的轉(zhuǎn)發(fā)CPU相關(guān)處理)。之后,超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU設(shè)置計(jì)算周期狀態(tài)為CPU_CYC_SCHEDULING。
[0078]基于此,轉(zhuǎn)發(fā)CPU在進(jìn)行數(shù)據(jù)流轉(zhuǎn)發(fā)和業(yè)務(wù)處理之前,可以執(zhí)行如下步驟:步驟1、如果計(jì)算周期狀態(tài)為CPU_CYC_SCHEDULING,則執(zhí)行步驟2 ;否則,執(zhí)行步驟7。步驟2、如果當(dāng)前調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài),則執(zhí)行步驟3 ;否則,執(zhí)行步驟4。步驟3、找到狀態(tài)為DATA_STREAM_OUT的處理隊(duì)列,從對(duì)應(yīng)的處理序列內(nèi)刪除該處理隊(duì)列,并在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該處理隊(duì)列需要由低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài),并執(zhí)行步驟7。步驟4、如果當(dāng)前調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài),則執(zhí)行步驟5 ;否則,執(zhí)行步驟7。步驟5、如果待轉(zhuǎn)區(qū)域內(nèi)有標(biāo)記需要由自身對(duì)處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行轉(zhuǎn)入處理,則執(zhí)行步驟6 ;否則,執(zhí)行步驟7。步驟6、將待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記的需要由自身進(jìn)行處理的處理隊(duì)列添加到自身對(duì)應(yīng)的處理序列內(nèi),并設(shè)置該處理隊(duì)列的狀態(tài)為DATA_STREAM_NORMAL(在處理隊(duì)列的狀態(tài)為DATA_STREAM_NORMAL時(shí),表示該處理隊(duì)列不需要進(jìn)行數(shù)據(jù)流調(diào)整),并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài),并將計(jì)算周期狀態(tài)設(shè)置為CPU_CYC_START,準(zhǔn)備啟動(dòng)新一輪調(diào)整。然后,執(zhí)行步驟7。步驟7、執(zhí)行正常數(shù)據(jù)流的轉(zhuǎn)發(fā)和業(yè)務(wù)處理,及其相關(guān)處理。
[0079]步驟E、虛擬機(jī)判斷當(dāng)前是否存在兩個(gè)以上的運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU ;如果存在,則執(zhí)行步驟F ;如果不存在,則設(shè)置計(jì)算周期狀態(tài)為CPU_CYC_START (CPU占用率計(jì)算周期開始狀態(tài)),啟動(dòng)新一輪調(diào)整;計(jì)算周期狀態(tài)為CPU_CYC_START時(shí),表示能啟動(dòng)新的CPU占用率計(jì)算周期。
[0080]步驟F、虛擬機(jī)從兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU中選擇待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU和待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU,設(shè)置待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài),設(shè)置待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài)。
[0081]步驟G、待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),利用對(duì)應(yīng)的處理序列內(nèi)的各處理隊(duì)列的有效消耗時(shí)間從該處理序列內(nèi)選擇處理隊(duì)列(如選擇有效消耗時(shí)間最多的處理隊(duì)列),刪除該選擇的處理隊(duì)列,并在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該選擇的處理隊(duì)列需要由待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。
[0082]此外,待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài)時(shí),將待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記的需要由自身進(jìn)行處理的處理隊(duì)列添加到自身對(duì)應(yīng)的處理序列內(nèi),并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。
[0083]為了實(shí)現(xiàn)上述過(guò)程,待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU從處理序列內(nèi)選擇處理隊(duì)列之后,設(shè)置該選擇的處理隊(duì)列的狀態(tài)為DATA_STREAM_OUT(在狀態(tài)為DATA_STREAM_OUT時(shí),表示處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流將被轉(zhuǎn)出到新的轉(zhuǎn)發(fā)CPU相關(guān)處理)。之后,該待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU設(shè)置計(jì)算周期狀態(tài)為CPU_CYC_SCHEDULING。
[0084]基于此,轉(zhuǎn)發(fā)CPU在進(jìn)行數(shù)據(jù)流轉(zhuǎn)發(fā)和業(yè)務(wù)處理之前,可以執(zhí)行如下步驟:步驟1、如果計(jì)算周期狀態(tài)為CPU_CYC_SCHEDULING,則執(zhí)行步驟2 ;否則,執(zhí)行步驟7。步驟2、如果當(dāng)前調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài),則執(zhí)行步驟3 ;否則,執(zhí)行步驟4。步驟3、找到狀態(tài)為DATA_STREAM_OUT的處理隊(duì)列,從對(duì)應(yīng)的處理序列內(nèi)刪除該處理隊(duì)列,并在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該處理隊(duì)列需要由低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài),并執(zhí)行步驟7。步驟4、如果當(dāng)前調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài),則執(zhí)行步驟5 ;否則,執(zhí)行步驟7。步驟5、如果待轉(zhuǎn)區(qū)域內(nèi)有標(biāo)記需要由自身對(duì)處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行轉(zhuǎn)入處理,則執(zhí)行步驟6 ;否則,執(zhí)行步驟7。步驟6、將待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記的需要由自身進(jìn)行處理的處理隊(duì)列添加到自身對(duì)應(yīng)的處理序列內(nèi),并設(shè)置該處理隊(duì)列的狀態(tài)為DATA_STREAM_NORMAL(在處理隊(duì)列的狀態(tài)為DATA_STREAM_NORMAL時(shí),表示該處理隊(duì)列不需要進(jìn)行數(shù)據(jù)流調(diào)整),并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài),并將計(jì)算周期狀態(tài)設(shè)置為CPU_CYC_START,準(zhǔn)備啟動(dòng)新一輪調(diào)整。然后,執(zhí)行步驟7。步驟7、執(zhí)行正常數(shù)據(jù)流的轉(zhuǎn)發(fā)和業(yè)務(wù)處理,及其相關(guān)處理。
[0085]綜上所述,本發(fā)明實(shí)施例中,在虛擬機(jī)的數(shù)據(jù)流壓力比較小,只需要少數(shù)轉(zhuǎn)發(fā)CPU參與處理時(shí),將數(shù)據(jù)流集中到少數(shù)轉(zhuǎn)發(fā)CPU上進(jìn)行數(shù)據(jù)流轉(zhuǎn)發(fā)和業(yè)務(wù)處理,從而釋放其它轉(zhuǎn)發(fā)CPU資源,以使部分低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU能夠及時(shí)分配給其它虛擬機(jī),從而合理的使用物理主機(jī)上的CPU資源,避免造成CPU資源的浪費(fèi),并充分利用CPU資源,并提升CPU資源的利用效率。在虛擬機(jī)的數(shù)據(jù)流壓力比較大,需要多數(shù)轉(zhuǎn)發(fā)CPU參與處理時(shí),將數(shù)據(jù)流及時(shí)調(diào)整到其它空閑或壓力小的轉(zhuǎn)發(fā)CPU上進(jìn)行數(shù)據(jù)流轉(zhuǎn)發(fā)和業(yè)務(wù)處理。[0086]基于與上述方法同樣的發(fā)明構(gòu)思,本發(fā)明實(shí)施例中還提供了一種多中央處理器CPU虛擬機(jī)系統(tǒng)的數(shù)據(jù)流處理裝置,所述多CPU虛擬機(jī)系統(tǒng)的數(shù)據(jù)流處理裝置包括虛擬機(jī),如圖3所示,所述虛擬機(jī)包括:
[0087]確定模塊11,用于確定虛擬機(jī)自身轉(zhuǎn)發(fā)CPU的CPU占用率,并確定虛擬機(jī)自身轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài);其中,轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)具體包括:無(wú)負(fù)荷狀態(tài)、或者低負(fù)荷狀態(tài)、或者正常負(fù)荷狀態(tài)、或者超負(fù)荷狀態(tài);
[0088]選擇模塊12,用于在當(dāng)前不存在運(yùn)行狀態(tài)為超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,且存在兩個(gè)以上運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU時(shí),從兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU中選擇待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU和待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU ;
[0089]指示模塊13,用于指示所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,釋放所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的CPU資源,以使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠分配給其它虛擬機(jī);以及,指示所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流。
[0090]所述確定虛擬機(jī)自身轉(zhuǎn)發(fā)CPU的CPU占用率,具體包括:針對(duì)一個(gè)CPU占用率計(jì)算周期,針對(duì)轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)的每個(gè)處理隊(duì)列,確定每次對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間;以及,確定所述CPU占用率計(jì)算周期內(nèi)所有對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間之和為該處理隊(duì)列的有效消耗時(shí)間;以及,確定所述轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)的所有處理隊(duì)列的有效消耗時(shí)間之和為該處理序列內(nèi)所有處理隊(duì)列的有效消耗所占時(shí)間;以及,確定所述轉(zhuǎn)發(fā)CPU的CPU占用率具體為:處理序列內(nèi)所有處理隊(duì)列的有效消耗所占時(shí)間除以所述CPU占用率計(jì)算周期。
[0091]所述確定虛擬機(jī)自身轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài),具體包括:針對(duì)一個(gè)CPU占用率計(jì)算周期,當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率為O時(shí),確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為無(wú)負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于0,且小于等于預(yù)設(shè)第一閾值時(shí),確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為低負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于所述預(yù)設(shè)第一閾值,且小于等于預(yù)設(shè)第二閾值時(shí),確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為正常負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于所述預(yù)設(shè)第二閾值時(shí),確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為超負(fù)荷狀態(tài);其中,所述預(yù)設(shè)第二閾值大于所述預(yù)設(shè)第一閾值。
[0092]所述從兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU中選擇待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU和待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU,具體包括:確定所述兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU分別對(duì)應(yīng)的處理序列內(nèi)的處理隊(duì)列的數(shù)量,選擇處理序列內(nèi)的處理隊(duì)列的數(shù)量最少的低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU為所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU,選擇處理序列內(nèi)的處理隊(duì)列的數(shù)量最多的低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU為所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU。
[0093]所述指示所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,具體包括:設(shè)置所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài);由所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),從對(duì)應(yīng)的處理序列內(nèi)刪除所有處理隊(duì)列,在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該處理序列內(nèi)的所有處理隊(duì)列需要由所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài);或者,由所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),利用對(duì)應(yīng)的處理序列內(nèi)的各處理隊(duì)列的有效消耗時(shí)間從該處理序列內(nèi)選擇處理隊(duì)列,刪除該選擇的處理隊(duì)列,并在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該選擇的處理隊(duì)列需要由所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài);
[0094]所述指示所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流,具體包括:設(shè)置所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài);由待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài)時(shí),將待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記的需要由自身進(jìn)行處理的處理隊(duì)列添加到自身對(duì)應(yīng)的處理序列內(nèi),并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。
[0095]所述使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠分配給其它虛擬機(jī),具體包括:在所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的CPU資源均被釋放后,停止所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU上的所有線程,以使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU休眠,以使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠分配給其它虛擬機(jī)。
[0096]所述指示模塊13,還用于在當(dāng)前存在運(yùn)行狀態(tài)為超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,且所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)有多個(gè)處理隊(duì)列,并且當(dāng)前存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU時(shí),指示所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,并指示所述低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流。
[0097]所述指示超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,具體包括:設(shè)置超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài);由超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),利用對(duì)應(yīng)的處理序列內(nèi)的各處理隊(duì)列的有效消耗時(shí)間從該處理序列內(nèi)選擇處理隊(duì)列,刪除該選擇的處理隊(duì)列,在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該選擇的處理隊(duì)列需要由所述低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài);
[0098]所述指示低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流,具體包括:如果當(dāng)前存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,則設(shè)置所述低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài),如果當(dāng)前不存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,但是當(dāng)前存在運(yùn)行狀態(tài)為無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,則設(shè)置所述無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài);由低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài)時(shí),將待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記的需要由自身進(jìn)行處理的處理隊(duì)列添加到自身對(duì)應(yīng)的處理序列內(nèi),并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。
[0099]其中,本發(fā)明裝置的各個(gè)模塊可以集成于一體,也可以分離部署。上述模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。
[0100]通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
[0101]本領(lǐng)域技術(shù)人員可以理解附圖只是一個(gè)優(yōu)選實(shí)施例的示意圖,附圖中的模塊或流程并不一定是實(shí)施本發(fā)明所必須的。[0102]本領(lǐng)域技術(shù)人員可以理解實(shí)施例中的裝置中的模塊可以按照實(shí)施例描述進(jìn)行分布于實(shí)施例的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施例的一個(gè)或多個(gè)裝置中。上述實(shí)施例的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。
[0103]上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
[0104]以上公開的僅為本發(fā)明的幾個(gè)具體實(shí)施例,但是,本發(fā)明并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種多中央處理器CPU虛擬機(jī)系統(tǒng)的數(shù)據(jù)流處理方法,其特征在于,所述方法包括以下步驟: 虛擬機(jī)確定自身轉(zhuǎn)發(fā)CPU的CPU占用率,并確定自身轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài);其中,轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)具體包括:無(wú)負(fù)荷狀態(tài)、或者低負(fù)荷狀態(tài)、或者正常負(fù)荷狀態(tài)、或者超負(fù)荷狀態(tài); 如果當(dāng)前不存在運(yùn)行狀態(tài)為超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,且當(dāng)前存在兩個(gè)以上運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,所述虛擬機(jī)從所述兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU中選擇待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU和待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU ; 所述虛擬機(jī)指示所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,釋放所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的CPU資源,以使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠分配給其它虛擬機(jī);以及,所述虛擬機(jī)指示所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流。
2.如權(quán)利要求1所述的方法,其特征在于,針對(duì)一個(gè)CPU占用率計(jì)算周期,所述虛擬機(jī)確定自身轉(zhuǎn)發(fā)CPU的CPU占用率的過(guò)程,具體包括: 針對(duì)轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)的每個(gè)處理隊(duì)列,所述虛擬機(jī)確定每次對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間; 所述虛擬機(jī)確定所述CPU占用率計(jì)算周期內(nèi)所有對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間之和為該處理隊(duì)列的有效消耗時(shí)間; 所述虛擬機(jī)確定所述轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)的所有處理隊(duì)列的有效消耗時(shí)間之和為該處理序列內(nèi)所有處理隊(duì)列的有效消耗所占時(shí)間; 所述虛擬機(jī)確定所述轉(zhuǎn)發(fā)CPU的CPU占用率具體為:處理序列內(nèi)所有處理隊(duì)列的有效消耗所占時(shí)間除以所述CPU占用率計(jì)`算周期。
3.如權(quán)利要求1所述的方法,其特征在于,針對(duì)一個(gè)CPU占用率計(jì)算周期,所述虛擬機(jī)確定自身轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)的過(guò)程,具體包括: 當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率為O時(shí),所述虛擬機(jī)確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為無(wú)負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于O,且小于等于預(yù)設(shè)第一閾值時(shí),所述虛擬機(jī)確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為低負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于所述預(yù)設(shè)第一閾值,且小于等于預(yù)設(shè)第二閾值時(shí),所述虛擬機(jī)確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為正常負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于所述預(yù)設(shè)第二閾值時(shí),所述虛擬機(jī)確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為超負(fù)荷狀態(tài);其中,所述預(yù)設(shè)第二閾值大于所述預(yù)設(shè)第一閾值。
4.如權(quán)利要求1所述的方法,其特征在于, 所述虛擬機(jī)從所述兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU中選擇待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU和待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的過(guò)程,具體包括: 所述虛擬機(jī)確定所述兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU分別對(duì)應(yīng)的處理序列內(nèi)的處理隊(duì)列的數(shù)量,選擇處理序列內(nèi)的處理隊(duì)列的數(shù)量最少的低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU為所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU,選擇處理序列內(nèi)的處理隊(duì)列的數(shù)量最多的低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU為所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU。
5.如權(quán)利要求1或4所述的方法,其特征在于, 所述虛擬機(jī)指示所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,具體包括:所述虛擬機(jī)設(shè)置所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài);由所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),從對(duì)應(yīng)的處理序列內(nèi)刪除所有處理隊(duì)列,在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該處理序列內(nèi)的所有處理隊(duì)列需要由所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài);或者,由所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),利用對(duì)應(yīng)的處理序列內(nèi)的各處理隊(duì)列的有效消耗時(shí)間從該處理序列內(nèi)選擇處理隊(duì)列,刪除該選擇的處理隊(duì)列,并在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該選擇的處理隊(duì)列需要由所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài); 虛擬機(jī)指示所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流,具體包括:所述虛擬機(jī)設(shè)置所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài);由待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài)時(shí),將待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記的需要由自身進(jìn)行處理的處理隊(duì)列添加到自身對(duì)應(yīng)的處理序列內(nèi),并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。
6.如權(quán)利要求1所述的方法,其特征在于,所述虛擬機(jī)使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠分配給其它虛擬機(jī)的過(guò)程,具體包括: 在所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的CPU資源均被釋放后,所述虛擬機(jī)停止所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU上的所有線程,以使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU休眠,以使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠分配給其它虛擬機(jī)。
7.如權(quán)利要求1所述的方法,其特征在于,所述方法進(jìn)一步包括: 如果當(dāng)前存在運(yùn)行狀態(tài)為超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,且所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)有多個(gè)處理隊(duì)列,并且當(dāng)前存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,則所述虛擬機(jī)指示 所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,并指示所述低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流。
8.如權(quán)利要求7所述的方法,其特征在于, 所述虛擬機(jī)指示所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,具體包括:所述虛擬機(jī)設(shè)置所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài);由所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),利用對(duì)應(yīng)的處理序列內(nèi)的各處理隊(duì)列的有效消耗時(shí)間從該處理序列內(nèi)選擇處理隊(duì)列,刪除該選擇的處理隊(duì)列,并在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該選擇的處理隊(duì)列需要由所述低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài); 所述虛擬機(jī)指示所述低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流,具體包括:如果當(dāng)前存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,則所述虛擬機(jī)設(shè)置所述低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài),如果當(dāng)前不存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,但是當(dāng)前存在運(yùn)行狀態(tài)為無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,則所述虛擬機(jī)設(shè)置所述無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài);由所述低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài)時(shí),將待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記的需要由自身進(jìn)行處理的處理隊(duì)列添加到自身對(duì)應(yīng)的處理序列內(nèi),并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。
9.一種多中央處理器CPU虛擬機(jī)系統(tǒng)的數(shù)據(jù)流處理裝置,所述多CPU虛擬機(jī)系統(tǒng)的數(shù)據(jù)流處理裝置包括虛擬機(jī),其特征在于,所述虛擬機(jī)包括: 確定模塊,用于確定虛擬機(jī)自身轉(zhuǎn)發(fā)CPU的CPU占用率,并確定虛擬機(jī)自身轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài);其中,轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)具體包括:無(wú)負(fù)荷狀態(tài)、或者低負(fù)荷狀態(tài)、或者正常負(fù)荷狀態(tài)、或者超負(fù)荷狀態(tài); 選擇模塊,用于在當(dāng)前不存在運(yùn)行狀態(tài)為超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,且當(dāng)前存在兩個(gè)以上運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU時(shí),從兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU中選擇待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU和待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU ; 指示模塊,用于指示所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,釋放所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的CPU資源,以使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠分配給其它虛擬機(jī);以及,指示所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流。
10.如權(quán)利要求9所述的裝置,其特征在于, 所述確定虛擬機(jī)自身轉(zhuǎn)發(fā)CPU的CPU占用率,具體包括:針對(duì)一個(gè)CPU占用率計(jì)算周期,針對(duì)轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)的每個(gè)處理隊(duì)列,確定每次對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間;以及,確定所述CPU占用率計(jì)算周期內(nèi)所有對(duì)該處理隊(duì)列內(nèi)緩存的數(shù)據(jù)流進(jìn)行處理的時(shí)間之和為該處理隊(duì)列的有效消耗時(shí)間;以及,確定所述轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)的所有處理隊(duì)列的有效消耗時(shí)間之和為該處理序列內(nèi)所有處理隊(duì)列的有效消耗所占時(shí)間;以及,確定所述轉(zhuǎn)發(fā)CPU的CPU占用率具體為:處理序列內(nèi)所有處理隊(duì)列的有效消耗所占時(shí)間除以所述CPU占用率計(jì)算周期。
11.如權(quán)利要 求9所述的裝置,其特征在于, 所述確定虛擬機(jī)自身轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài),具體包括:針對(duì)一個(gè)CPU占用率計(jì)算周期,當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率為O時(shí),確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為無(wú)負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于0,且小于等于預(yù)設(shè)第一閾值時(shí),確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為低負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于所述預(yù)設(shè)第一閾值,且小于等于預(yù)設(shè)第二閾值時(shí),確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為正常負(fù)荷狀態(tài);當(dāng)轉(zhuǎn)發(fā)CPU的CPU占用率大于所述預(yù)設(shè)第二閾值時(shí),確定所述轉(zhuǎn)發(fā)CPU的運(yùn)行狀態(tài)為超負(fù)荷狀態(tài);其中,所述預(yù)設(shè)第二閾值大于所述預(yù)設(shè)第一閾值。
12.如權(quán)利要求9所述的裝置,其特征在于,所述從兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU中選擇待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU和待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU,具體包括:確定所述兩個(gè)以上低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU分別對(duì)應(yīng)的處理序列內(nèi)的處理隊(duì)列的數(shù)量,選擇處理序列內(nèi)的處理隊(duì)列的數(shù)量最少的低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU為所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU,選擇處理序列內(nèi)的處理隊(duì)列的數(shù)量最多的低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU為所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU。
13.如權(quán)利要求9或12所述的裝置,其特征在于, 所述指示所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,具體包括:設(shè)置所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài);由所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),從對(duì)應(yīng)的處理序列內(nèi)刪除所有處理隊(duì)列,在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該處理序列內(nèi)的所有處理隊(duì)列需要由所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài);或者,由所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),利用對(duì)應(yīng)的處理序列內(nèi)的各處理隊(duì)列的有效消耗時(shí)間從該處理序列內(nèi)選擇處理隊(duì)列,刪除該選擇的處理隊(duì)列,并在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該選擇的處理隊(duì)列需要由所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài); 所述指示所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流,具體包括:設(shè)置所述待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài);由待轉(zhuǎn)入數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài)時(shí),將待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記的需要由自身進(jìn)行處理的處理隊(duì)列添加到自身對(duì)應(yīng)的處理序列內(nèi),并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。
14.如權(quán)利要求9所述的裝置,其特征在于, 所述使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠分配給其它虛擬機(jī),具體包括:在所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU的CPU資源均被釋放后,停止所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU上的所有線程,以使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU休眠,以使所述待轉(zhuǎn)出數(shù)據(jù)流的轉(zhuǎn)發(fā)CPU能夠分配給其它虛擬機(jī)。
15.如權(quán)利要求9所述的裝置,其特征在于, 所述指示模塊,還用于在當(dāng)前存在運(yùn)行狀態(tài)為超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,且所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU對(duì)應(yīng)的處理序列內(nèi)有多個(gè)處理隊(duì)列,并且當(dāng)前存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU時(shí),指示所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,并指示所述低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流。
16.如權(quán)利要求15所述的裝置,其特征在于,` 所述指示超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出自身需要處理的數(shù)據(jù)流,具體包括:設(shè)置超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài);由超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)出狀態(tài)時(shí),利用對(duì)應(yīng)的處理序列內(nèi)的各處理隊(duì)列的有效消耗時(shí)間從該處理序列內(nèi)選擇處理隊(duì)列,刪除該選擇的處理隊(duì)列,在待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記該選擇的處理隊(duì)列需要由所述低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU進(jìn)行處理,并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài); 所述指示低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)入所述超負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU轉(zhuǎn)出的數(shù)據(jù)流,具體包括:如果當(dāng)前存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,則設(shè)置所述低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài),如果當(dāng)前不存在運(yùn)行狀態(tài)為低負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,但是當(dāng)前存在運(yùn)行狀態(tài)為無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU,則設(shè)置所述無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài);由低負(fù)荷狀態(tài)或者無(wú)負(fù)荷狀態(tài)的轉(zhuǎn)發(fā)CPU在獲知本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為轉(zhuǎn)入狀態(tài)時(shí),將待轉(zhuǎn)區(qū)域內(nèi)標(biāo)記的需要由自身進(jìn)行處理的處理隊(duì)列添加到自身對(duì)應(yīng)的處理序列內(nèi),并設(shè)置本轉(zhuǎn)發(fā)CPU的調(diào)整狀態(tài)為無(wú)調(diào)整狀態(tài)。
【文檔編號(hào)】G06F9/50GK103823712SQ201410097861
【公開日】2014年5月28日 申請(qǐng)日期:2014年3月17日 優(yōu)先權(quán)日:2014年3月17日
【發(fā)明者】黃灝 申請(qǐng)人:杭州華三通信技術(shù)有限公司