<listing id="vjp15"></listing><menuitem id="vjp15"></menuitem><var id="vjp15"></var><cite id="vjp15"></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><menuitem id="vjp15"></menuitem></video></cite>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<var id="vjp15"><strike id="vjp15"><listing id="vjp15"></listing></strike></var>
<menuitem id="vjp15"><strike id="vjp15"></strike></menuitem>
<cite id="vjp15"></cite>
<var id="vjp15"><strike id="vjp15"></strike></var>
<var id="vjp15"></var>
<var id="vjp15"></var>
<var id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></var>
<menuitem id="vjp15"></menuitem><cite id="vjp15"><video id="vjp15"></video></cite>
<var id="vjp15"></var><cite id="vjp15"><video id="vjp15"><thead id="vjp15"></thead></video></cite>
<var id="vjp15"></var>
<var id="vjp15"></var>
<menuitem id="vjp15"><span id="vjp15"><thead id="vjp15"></thead></span></menuitem>
<cite id="vjp15"><video id="vjp15"></video></cite>
<menuitem id="vjp15"></menuitem>

云計算環境下IO密集型應用識別方法及裝置與流程

文檔序號:11133706閱讀:809來源:國知局
云計算環境下IO密集型應用識別方法及裝置與制造工藝

本發明涉及云計算技術領域,尤其涉及一種云計算環境下IO密集型應用識別方法及裝置。



背景技術:

云計算是IT(Information Technology,信息技術)領域的一次重大技術變革,云計算強大的計算能力和海量的存儲能力,以及通過虛擬化技術為用戶為用戶提供按需服務的特性使得它將改變人們IT資源的使用方式和使用習慣。云計算對人們的不僅僅限于技術領域內的改變和影響,在未來也可能影響到社會生活的各個領域。它對傳統產業帶來的不僅是沖擊,而且也是便捷與機遇。

然而,云計算在帶來技術革命和應用便捷的同時,本身也帶來了不可回避的問題,如能耗問題,特別是在云數據中心,由于大量的服務器及其他各種IT設備的聚集,導致云數據中心的能耗非常巨大,甚至有可能影響到周邊的環境。此外,數據中心在為用戶請求的應用分配資源時,針對所有類型的應用采用通用的資源分配策略進行資源分配,不僅導致云數據中心的資源利用率較低,還進一步加重了云數據中心的能耗問題。



技術實現要素:

本發明的主要目的在于提供一種云計算環境下IO密集型應用識別方法及裝置,旨在提升云數據中心的資源利用率,以降低云數據中心的能耗。

為實現上述目的,本發明提供一種云計算環境下IO密集型應用識別方法,所述云計算環境下IO密集型應用識別方法包括:

確定虛擬機運行的當前應用的應用類型;

在確定所述虛擬機當前應用的應用類型時,獲取確定的應用類型所對應的資源分配策略;

根據獲取的所述資源分配策略調整所述虛擬機的資源。

可選地,所述確定虛擬機運行的當前應用的應用類型的步驟包括;

采集所述虛擬機運行當前應用時的運行信息;

分析獲取的運行信息是否滿足預存的I/O密集型應用所對應的判定條件;

在所述運行信息滿足所述判定條件時,確定所述虛擬機當前運行I/O密集型應用。

可選地,所述運行信息包括所述虛擬機的上下文切換數量、虛擬內存占用值、阻塞隊列的單位任務數、硬盤讀寫速率、網絡傳輸速率以及其在CPUiowait、CPUuser和CPUsystem狀態下的CPU占用值。

可選地,所述判定條件包括:

所述虛擬機的上下文的單位切換數量、虛擬內存占用值、阻塞隊列的單位任務數、硬盤讀寫速率、網絡傳輸速率以及其在CPUiowait狀態下的CPU占用值分別大于各自對應的第一預設閾值,且虛擬機在CPUuser和CPUsystem狀態下的CPU占用值均小于第二預設閾值。

可選地,在根據獲取的所述資源分配策略調整所述虛擬機的資源的同時,還執行以下步驟:

將所述虛擬機當前的應用調度策略更新為預存的I/O密集型應用所對應的應用調度策略。

此外,為實現上述目的,本發明還提供了一種云計算環境下IO密集型應用識別裝置,所述云計算環境下IO密集型應用識別裝置包括:

確定模塊,用于確定虛擬機運行的當前應用的應用類型;

獲取模塊,用于在確定所述虛擬機當前應用的應用類型時,獲取確定的應用類型所對應的資源分配策略;

調整模塊,用于根據獲取的所述資源分配策略調整所述虛擬機的資源。

可選地,所述確定模塊還用于,

采集所述虛擬機運行當前應用時的運行信息;

分析獲取的運行信息是否滿足預存的I/O密集型應用所對應的判定條件;以及

在所述運行信息滿足所述判定條件時,確定所述虛擬機當前運行I/O密 集型應用。

可選地,所述運行信息包括所述虛擬機的上下文切換數量、虛擬內存占用值、阻塞隊列的單位任務數、硬盤讀寫速率、網絡傳輸速率以及其在CPUiowait、CPUuser和CPUsystem狀態下的CPU占用值。

可選地,所述判定條件包括:

所述虛擬機的上下文的單位切換數量、虛擬內存占用值、阻塞隊列的單位任務數、硬盤讀寫速率、網絡傳輸速率以及其在CPUiowait狀態下的CPU占用值分別大于各自對應的第一預設閾值,且虛擬機在CPUuser和CPUsystem狀態下的CPU占用值均小于第二預設閾值。

可選地,所述調整模塊還用于將所述虛擬機當前的應用調度策略更新為預存的I/O密集型應用所對應的應用調度策略。

本發明提出的云計算環境下IO密集型應用識別方法及裝置,在應用于云數據中心時,能夠對用戶請求的不同類型的應用針對性的進行計算資源的分配,使得分配的計算資源能夠有效滿足不同類型應用對計算資源的需求,相較于現有技術采用通用的資源分配策略進行資源分配,本發明能夠有效提升云數據中心的資源利用率,達到節能降耗的目的。

附圖說明

圖1為本發明云計算環境下IO密集型應用識別方法第一實施例的流程示意圖;

圖2為圖1中確定虛擬機運行的當前應用的應用類型的細化流程示例圖;

圖3為本發明云計算環境下IO密集型應用識別方法第一實施例中分析當前應用是否為I/O密集型應用的流程示例圖;

圖4為實驗一中CPUiowait所占CPU的百分比示意圖;

圖5為實驗一中上下文切換每秒數量示意圖;

圖6為實驗一中虛擬內存使用情況示意圖;

圖7為實驗一中進程阻塞隊列數示意圖;

圖8為實驗一中硬盤每秒寫文件速度示意圖;

圖9為實驗一中網絡每秒接收速度示意圖;

圖10為實驗二中CPUiowait所占CPU的百分比示意圖;

圖11為實驗二中上下文切換每秒數量示意圖;

圖12為實驗二中虛擬內存使用情況示意圖;

圖13為實驗二中進程阻塞隊列數示意圖;

圖14為實驗二中硬盤每秒寫文件速度示意圖;

圖15為實驗二中網絡每秒接收速度示意圖;

圖16為本發明云計算環境下IO密集型應用識別裝置第一實施例的功能模塊示意圖。

本發明目的的實現、功能特點及優點將結合實施例,參照附圖做進一步說明。

具體實施方式

應當理解,此處所描述的具體實施例僅僅用以解釋本發明,并不用于限定本發明。

本發明提供一種云計算環境下IO密集型應用識別方法,參照圖1,在本發明云計算環境下IO密集型應用識別方法的第一實施例中,所述云計算環境下IO密集型應用識別方法包括:

步驟S10,確定虛擬機運行的當前應用的應用類型;

需要說明的是,本實施例提出的云計算環境下IO密集型應用識別方法應用于云數據中心中,由云計算環境下IO密集型應用識別裝置執行,具體通過云計算環境下IO密集型應用識別裝置對用戶請求的不同類型的應用針對性的進行計算資源的分配,以提高云計算中心的資源利用率,達到節能降耗的目的。

具體的,在本實施例中,將應用分為兩類,分別為I/O密集型應用和CPU密集型應用。其中,操作系統在運行I/O密集型應用時,其CPU效能相對硬盤/內存的效能要好很多,此時,系統運作,大部分的狀況是CPU在等硬盤/內存的讀/寫,此時CPU負荷不高;操作系統在運行CPU密集型應用時,其硬盤/內存效能相對CPU的效能要好很多,此時,系統運作,大部分的狀況是CPU滿負荷運行。可以看出,不同類型的應用對CPU資源和I/O資源的需求不同。

具體的,云數據中心在接收到用戶請求的應用時,會根據用戶的請求分 配一定的計算資源,也就是虛擬機。由虛擬機來執行用戶請求的應用,而這個虛擬機的位置對用戶是透明的,它可以運行在云數據中心的任一服務器上,也可以運行在云數據中心的多臺服務器上。

在本實施例中,為實現計算資源的有效分配,云計算環境下IO密集型應用識別裝置首先需要確定虛擬機運行的當前應用的應用類型,其中,虛擬機運行的當前應用即用戶請求的應用。

例如,云計算環境下IO密集型應用識別裝置識別到虛擬機運行當前應用的CPU占用率達到預設占用率且單位時間的I/O操作數小于預設操作數時,確定虛擬機當前運行的是CPU密集型應用;又例如,云計算環境下IO密集型應用識別裝置識別到虛擬機運行當前應用的CPU占用率小于預設占用率且單位時間的I/O操作數達到預設操作數時,確定虛擬機當前運行的是I/O密集型應用。其中,本實施例不對前述預設操作數和預設占用率做具體限制,本領域技術人員可根據實際需要進行設置,如本實施例設置預設占用率為80%,設置預設操作數為10000。

步驟S20,在確定所述虛擬機當前應用的應用類型時,獲取確定的應用類型所對應的資源分配策略;

步驟S30,根據獲取的所述資源分配策略調整所述虛擬機的資源。

需要說明的是,為實現計算資源的有效分配,本實施例根據不同類型的應用分別設置儲存有對應的資源分配策略。例如,對應CPU密集型應用的資源分配策略包括增加虛擬機的CPU資源;對應I/O密集型應用的資源分配策略包括增加虛擬機的I/O資源。

在本發明實施例中,在確定虛擬運行的當前應用的應用類型之后,云計算環境下IO密集型應用識別裝置根據確定的應用類型獲取對應的資源分配策略,例如,在確定當前應用為CPU密集型應用時,則獲取CPU密集型應用對應的資源分配策略;在確定當前應用為I/O密集型應用時,則獲取I/O密集型應用對應的資源分配策略。

在獲取到當前應用對應的資源分配策略之后,根據獲取的資源分配策略調整虛擬機的資源,例如,云計算環境下IO密集型應用識別裝置在確定當前當前應用為I/O密集型應用,且獲取的對應資源分配策略為“增加I/O資源,并減小CPU資源”時,則增加運行當前應用的虛擬機的I/O資源,同時 減小該虛擬機的CPU資源。

其中,本實施例對資源的調整量不做具體限制,本領域技術人員可根據實際需要進行設置,例如,設置CPU資源的調整量為“0.5GHz”。

本實施例提出的云計算環境下IO密集型應用識別方法,在應用于云數據中心時,能夠對用戶請求的不同類型的應用針對性的進行計算資源的分配,使得分配的計算資源能夠有效滿足不同類型應用對計算資源的需求,相較于現有技術采用通用的資源分配策略進行資源分配,本發明能夠有效提升云數據中心的資源利用率,達到節能降耗的目的。

進一步地,基于第一實施例,提出本發明云計算環境下IO密集型應用識別方法的第二實施例,參照圖2,在本實施例中,步驟S10包括;

步驟S101,采集所述虛擬機運行當前應用時的運行信息;

步驟S102,分析獲取的運行信息是否滿足預存的I/O密集型應用所對應的判定條件;

步驟S103,在所述運行信息滿足所述判定條件時,確定所述虛擬機當前運行I/O密集型應用。

需要說明的是,本實施例在第一實施例的基礎上,進一步提出一種更精確的應用類型識別方案,以下以I/O密集型應用的識別為例進行說明,其他可參照前述實施例,此處不再贅述。

在本實施例中,建立了針對I/O密集型應用的特征識別模型,為一特征六元組:

(CPU,Csw,Mem,Process,I/O,Net)

其中,CPU表示CPU狀態,Csw表示應用上下文切換狀態,Mem表示虛擬內存使用狀態,Pro表示進程阻塞狀態,I/O表示硬盤讀寫狀態,Net表示網絡傳輸狀態,具體的,

CPU:主要考察CPUiowait,CPUuser和CPUsystem狀態下的CPU占用值。對于I/O密集型應用,CPUiowait的百分比會大于一個閾值C,根據大量實驗,C可取40%,即CPUiowait>40%。CPUuser和CPUsystem的百分比會小于一個閾值U,對于本實施例的實驗環境,U取5%。CPU的iowait占用很高的時間,表明CPU在頻繁等待某種I/O操作。

Csw:主要考察每秒上下文切換的數量。如果是I/O密集型應用,那么上下文切換很高。通常上下文切換會大于一個閾值W,根據大量實驗,W可取10000。系統中大量的上下文切換,可能是系統進程導致也可能是系統因等待某高優先級操作導致。

Mem:主要考察虛擬內存的使用情況。內存分為實際內存和虛擬內存。如果是I/O密集型應用,會使用虛擬內存,并且有大量頁面置換產生。虛擬內存會大于一個閾值M,根據大量實驗,M可取16MB,說明內存分配了大量資源用于I/O操作。

Process:主要考察每秒阻塞隊列中的任務數(block)。當負載較高或資源緊張時,系統就會把一些任務放入阻塞隊列中,等待合適的時機去執行。如果是I/O密集型應用,阻塞隊列較高,并且會大于一個閾值P,對于IO密集型應用,取P為2。一般情況阻塞隊列小于CPU核數,通常單個I/O密集型應用不會導致系統處于高負載狀態。

I/O:I/O主要考察每秒硬盤讀寫速率(disk_write)和(disk_read)。如果是I/O密集型應用讀寫速率會很高,通常會大于一個閾值V,V可取1MB/s。

Net:主要考察每秒發送和接收的網絡流量。如果是I/O密集型應用,那么接收或者發送的流量會很高,通常會大于一個閾值N,N可取1MB/s。網絡上監測到大量流量數據,表明正在傳輸數據,可能是文件上傳下載服務或者流媒體服務。

在本實施例中,為識別虛擬機運行的當前應用的應用類型,首先采集該虛擬機運行當前應用時的運行信息,包括所述虛擬機的上下文的單位切換數量、虛擬內存占用值、阻塞隊列的單位任務數、硬盤讀寫速率、網絡傳輸速率以及其在CPUiowait、CPUuser和CPUsystem狀態下的CPU占用值。

在采集到所述虛擬機運行當前應用時的運行信息之后,進一步分析獲取的運行信息是否滿足預存的I/O密集型應用所對應的判定條件(即前述特征六元組)。

具體的,參照圖3,云計算環境下IO密集型應用識別裝置首先對CPU數據進行分析,比較當前CPUiowait的CPU占用值和閾值C(即虛擬機在CPUiowait下的CPU占用值所對應的第一預設閾值),以及分別比較當前CPUuser和CPUsystem的CPU占用值與U的大小。如果滿足當前CPUiowait 的CPU占用值大于閾值C且CPUuser和CPUsystem的CPU占用值均小于U(即第二預設閾值),那么轉到下一步,否則,轉到第七步;

其次,云計算環境下IO密集型應用識別裝置分析虛擬機每秒鐘的上下文切換數量。比較上下文切換數量的數量和閾值W(即上下文的單位切換數量所對應的第一預設閾值)。如果滿足上下文切換數大于閾值W,則轉到下一步,否則,轉到第七步;

第三,云計算環境下IO密集型應用識別裝置分析虛擬內存所占的空間大小。比較虛擬內存占用值和閾值M(即虛擬內存占用值所對應的第一預設閾值),如果虛擬內存占用值大于閾值M,則轉到下一步,否則,轉到第七步;

第四,云計算環境下IO密集型應用識別裝置分析每秒鐘阻塞隊列中的任務數。將該數量和閾值P進行比較,如果每秒鐘的阻塞隊列中的任務數大于閾值P(即阻塞隊列的單位任務數所對應的第一預設閾值),則轉到下一步,否則,轉到第七步;

第五,云計算環境下IO密集型應用識別裝置分析硬盤讀寫速率。檢查硬盤讀寫速率是否很大并且將其和閾值I(即硬盤讀寫速率所對應的第一預設閾值)進行比較,如果大于閾值I,則轉到下一步,否則,轉到第七步;

第六,云計算環境下IO密集型應用識別裝置分析網絡傳輸速率。檢查是否有大量的網絡流量并且和閾值N進行比較,如果大于閾值N(即網絡傳輸速率所對應的第一預設閾值),則確定當前應用是I/O密集型應用,退出,否則,轉到第七步;

第七,確定當前應用不是I/O密集型應用,退出。

為驗證上述識別方法的正確性及可行性,以下采用了大量的實驗來進行模擬驗證。

1、實驗環境

本實施例的IaaS環境基于CloudStack云計算平臺,系統版本4.0,搭建了一個小型的云計算系統,其中有1個管理服務器Management,2個主機節點Host,和1個存儲節點Storage。主機節點Host的操作系統為Redhat server5.3,處理器Inter I5 3470@3.60GHz,內存8GB DDR3,硬盤容量1TB。Host上的虛擬機,操作系統為Ubuntu12.04版本,處理器為1GHz*2,內存 為2GB,網絡帶寬為150Mbs,磁盤轉速為7200/分鐘。

具體參數如下表:

表1

2、實驗內容

實驗一:向FTP服務器上傳13。6GB的文件,文件一共14個,每個大小1GB左右。FTP服務器是主機Host上的一臺虛擬機。實驗數據如圖4-圖9所示。

圖4的數據表明,在前1900秒的任務執行時間里,CPU的iowait所占用的百分比一直處于50%以上,而且較為劇烈。1900秒以后,任務結束,CPU消耗趨近于0。

圖5的數據表明,在前1900秒的任務執行時間里,上下文切換達到了15000次/秒,說明系統很忙碌,CPU在頻繁等待I/O的執行。1900秒以后,任務結束,上下文切換變為0。

圖6的數據表明,在前1900秒的任務執行時間里,虛擬內存逐步上升,最后使用了16MB,表明該任務需要消耗虛擬內存。1900秒后,任務執行結束,虛擬空間未釋放。

圖7的數據表明,在前1900秒的任務執行時間里,阻塞隊列達到每秒2。6個左右,表明系統因為某種原因,產生了大量阻塞,同時block<4,即小于CPU核數,表明系統并沒有完全滿負荷,仍然處于正常狀態。1900秒后,任務執行結束,阻塞隊列降為0。

圖8的數據表明,在前1900秒的任務執行時間里,在硬盤上監測到大量的寫數據,均值大于1MB/s,這表明硬盤正在保存大量數據。1900以后,任務執行結束,速率降為0。

圖9的數據表明,在前1900秒的任務執行時間里,網絡接收監測到了大量數據,均值大于1MB/s,表明網絡中有大量數據向本機發送。1900以后,任務執行結束,速率將為0。

由圖4-圖9所示的參數,根據本發明所提出的六元組模型F(t)=(CPU,Csw,Mem,Process,I/O,Net)進行判定:

CPU:user<5%,system<5%,iowait>40%。CPUiowait占用很高的資源,表明CPU在頻繁等待某種I/O操作。

Csw:中斷不高,上下文切換>15000。系統中大量的上下文切換,表明系統級操作使用較高,可能是系統進程導致也可能是系統因等待某高優先級操作導致。

Mem:監測到使用了虛擬內存,有16MB,同時有頁面置換產生,說明內存分配了大量資源用于I/O操作。

Process:阻塞隊列中任務數為2。8個/秒,同時均小于4,4為CPU核數,表明系統不是滿負荷狀態,此虛擬機還能承受其他任務。

I/O:硬盤寫速率大于10MB/s,硬盤讀速率不高。I/O寫有大量數據,這表明,I/O上有大量寫操作。

Net:網絡接收速率大于10MB/s,網絡發送速率不高。網絡上監測到大量接收數據,表明正在有大量數據從外部來到本機,且剛好等于硬盤寫的速率。

結論:通過以上可以判斷該應用為I/O密集型應用。

實驗二:在科學計算服務器上運行計算并輸出2億以內質數的運算。科學計算服務器是主機Host上的一臺虛擬機。實驗數據如圖10至圖所示。

圖10的數據表明,在整個執行過程中,iowait非常低,大部分時間為0,遠小于閾值40%。

圖11的數據表明,在整個執行過程中,上下文切換非常低,只有100左右,遠小于10000。

圖12的數據表明,在整個執行過程中,虛擬內存沒有使用,表明該任務沒有消耗虛擬內存。

圖13的數據表明,在整個執行過程中,阻塞隊列達到每秒0。8個左右,非常低,小于閾值2。系統處于正常狀態。

圖14的數據表明,在整個執行過程中,在硬盤上沒有監測到硬盤讀寫的大量讀寫,在大多數時間內,I/O速率都為0。

圖15的數據表明,在整個執行過程中,同時網絡也沒有監測到很大的數據,只有40B/s左右,該應用基本不消耗網絡資源。

由圖10-圖15所示的參數,根據六元組F(t)=(CPU,Csw,Mem,Pro,I/O,Net)分析:

CPU:iowait<10%。CPU的iowait所占百分比很低,表明系統的CPU并沒有等待I/O的操作。

Csw:上下文切換<100。表明系統并沒有使用系統調度操作。

Mem:沒有虛擬內存分配,也沒有頁面置換發生。

Process:阻塞隊列中的任務數<1,表明系統正常狀態,較為空閑。

I/O:硬盤上沒有監測到大量讀和寫的數據,表明沒有I/O操作的執行,該任務不消耗系統硬盤資源。

Net:網絡上未監測到大量數據,表明該任務不消耗網絡帶寬資源。

結論:通過以上可以判斷該應用不是I/O密集型應用。

3、分析

通過使用兩組不同的實驗來驗證I/O密集型應用六元組的使用情況。首先用戶向云計算中心的虛擬機上傳文件來模擬典型的I/O密集型應用的類型,獲取虛擬機執行該任務的運行信息,并記錄下來,如果該運行信息符合I/O密集型應用六元組所規定的閾值范圍以內,則說明I/O密集型應用六元組模型可以正確判斷一個未知應用的符合該模型所表示的特征,從而判斷該應用是I/O密集型應用。

通過用戶在云計算中心的虛擬機上運行2億以內的質數統計運算并打印輸出,這是非I/O密集型應用,獲取該任務運行時系統狀態值并記錄下來。由于這個應用模擬的是科學計算,它們在運行時會消耗大量的CPU資源和內存資源,對于I/O設備的搶占程度很低,因此它們所表現出來的狀態特征會和I/O密集型應用六元組模型有明顯差異,通過計算從而說明I/O密集型應用六元組可以計算一個未知應用不在I/O密集型應用六元組所規定的范圍以內,從而判斷該應用是非I/O密集型應用。

此外,還做了其他應用的大量實驗,來進一步驗證本發明的正確性和可行性,結果如表2所示:

表2

分析上表可得出,FTP服務器上的文件上傳和下載等應用,各項參數都符合I/O密集型應用特征模型,因此系統判定它們為I/O密集型應用。然而對于矩陣乘法計算,π的計算等應用,由于在I/O讀寫上,基本監測不到I/O設備的讀寫,系統判定它們為非I/O密集型應用。對于視頻服務和爬蟲應用,由于在CPU上,CPUiowait所占百分比很小,因此系統判定它們為非I/O密集型應用。以上多組實驗表明,本文提出的I/O密集型六元組代表了I/O密集型應用的共性特征,未知應用通過該模型的判定,能夠很好地識別出是否為I/O密集型應用,具有很高的成功率,達到了預期的目的。

進一步地,基于第二實施例,提出本發明云計算環境下IO密集型應用識別方法的第三實施例,在本實施例中,在執行步驟S30的同時,還執行以下步驟:

將所述虛擬機當前的應用調度策略更新為預存的I/O密集型應用所對應的應用調度策略。

需要說明的是,本實施例為進一步增加云計算中心的資源利用效率,在第二實施例的基礎上,增加了對虛擬機的應用調度策略的調整操作。以下僅針對該區別進行說明,其他可參照前述第二實施例,此處不再贅述。

在本發明實施例中,云計算環境下IO密集型應用識別裝置在根據獲取的資源分配策略調整虛擬機的資源的同時,還將虛擬機當前的應用調度策略更新為預存的I/O密集型應用所對應的應用調度策略。其中,I/O密集型應用所對應的應用調度策略包括:將I/O密集型應用對應的進程設置為不可搶占。

以本實施例所述的當前應用的進程為A進程進行說明:

如果A進程在運行期間,有一個優先級更高的進程到來,此時并不搶占A進程的運行權,而是將A進程的need_shed置位,等A進程運行完畢讓出CPU資源后,立即進行調度,以保證A進程在運行期間不可搶占。其中,need_shed為標識進程是否需要執行調度的標識位。

本發明還提供一種執行前述云計算環境下IO密集型應用識別方法的云計算環境下IO密集型應用識別裝置,參照圖16,對應于前述云計算環境下IO密集型應用識別方法的第一實施例,在本發明云計算環境下IO密集型應用識別裝置的第一實施例中,所述云計算環境下IO密集型應用識別裝置包括:

確定模塊10,用于確定虛擬機運行的當前應用的應用類型;

需要說明的是,本實施例提出的云計算環境下IO密集型應用識別裝置應用于云數據中心中,通過云計算環境下IO密集型應用識別裝置對用戶請求的不同類型的應用針對性的進行計算資源的分配,能夠提高云計算中心的資源利用率,達到節能降耗的目的。

具體的,在本實施例中,將應用分為兩類,分別為I/O密集型應用和CPU密集型應用。其中,操作系統在運行I/O密集型應用時,其CPU效能相對硬盤/內存的效能要好很多,此時,系統運作,大部分的狀況是CPU在等硬盤/內存的讀/寫,此時CPU負荷不高;操作系統在運行CPU密集型應用時,其硬盤/內存效能相對CPU的效能要好很多,此時,系統運作,大部分的狀況是CPU滿負荷運行。可以看出,不同類型的應用對CPU資源和I/O資源的需求不同。

具體的,云數據中心在接收到用戶請求的應用時,會根據用戶的請求分配一定的計算資源,也就是虛擬機。由虛擬機來執行用戶請求的應用,而這個虛擬機的位置對用戶是透明的,它可以運行在云數據中心的任一服務器上,也可以運行在云數據中心的多臺服務器上。

在本實施例中,為實現計算資源的有效分配,云計算環境下IO密集型應用識別裝置的確定模塊10首先需要確定虛擬機運行的當前應用的應用類型,其中,虛擬機運行的當前應用即用戶請求的應用。

例如,確定模塊10識別到虛擬機運行當前應用的CPU占用率達到預設占用率且單位時間的I/O操作數小于預設操作數時,確定虛擬機當前運行的是CPU密集型應用;又例如,確定模塊10識別到虛擬機運行當前應用的CPU占用率小于預設占用率且單位時間的I/O操作數達到預設操作數時,確定虛 擬機當前運行的是I/O密集型應用。其中,本實施例不對前述預設操作數和預設占用率做具體限制,本領域技術人員可根據實際需要進行設置,如本實施例設置預設占用率為80%,設置預設操作數為10000。

獲取模塊20,用于在確定所述虛擬機當前應用的應用類型時,獲取確定的應用類型所對應的資源分配策略;

調整模塊30,用于根據獲取的所述資源分配策略調整所述虛擬機的資源。

需要說明的是,為實現計算資源的有效分配,本實施例根據不同類型的應用分別設置儲存有對應的資源分配策略。例如,對應CPU密集型應用的資源分配策略包括增加虛擬機的CPU資源;對應I/O密集型應用的資源分配策略包括增加虛擬機的I/O資源。

在本發明實施例中,在確定模塊10確定虛擬運行的當前應用的應用類型之后,獲取模塊20確定的應用類型獲取對應的資源分配策略,例如,在確定模塊10確定當前應用為CPU密集型應用時,獲取模塊20獲取CPU密集型應用對應的資源分配策略;在確定模塊10確定當前應用為I/O密集型應用時,獲取模塊20獲取I/O密集型應用對應的資源分配策略。

在獲取模塊20獲取到當前應用對應的資源分配策略之后,調整模塊30根據獲取模塊20獲取的資源分配策略調整虛擬機的資源,例如,在確定模塊10確定當前當前應用為I/O密集型應用,且獲取模塊20獲取的對應資源分配策略為“增加I/O資源,并減小CPU資源”時,則調整模塊30增加運行當前應用的虛擬機的I/O資源,同時減小該虛擬機的CPU資源。

其中,本實施例對資源的調整量不做具體限制,本領域技術人員可根據實際需要進行設置,例如,設置CPU資源的調整量為“0.5GHz”。

本實施例提出的云計算環境下IO密集型應用識別裝置,在應用于云數據中心時,能夠對用戶請求的不同類型的應用針對性的進行計算資源的分配,使得分配的計算資源能夠有效滿足不同類型應用對計算資源的需求,相較于現有技術采用通用的資源分配策略進行資源分配,本發明能夠有效提升云數據中心的資源利用率,達到節能降耗的目的。

進一步地,基于第一實施例,提出本發明云計算環境下IO密集型應用 識別裝置的第二實施例,對應于前述云計算環境下IO密集型應用識別方法的第二實施例,在本實施例中,所述確定模塊10還用于,

采集所述虛擬機運行當前應用時的運行信息;

分析獲取的運行信息是否滿足預存的I/O密集型應用所對應的判定條件;以及

在所述運行信息滿足所述判定條件時,確定所述虛擬機當前運行I/O密集型應用。

需要說明的是,本實施例在第一實施例的基礎上,進一步提出一種更精確的應用類型識別方案,以下以I/O密集型應用的識別為例進行說明,其他可參照前述實施例,此處不再贅述。

在本實施例中,建立了針對I/O密集型應用的特征識別模型,為一特征六元組:

(CPU,Csw,Mem,Process,I/O,Net)

其中,CPU表示CPU狀態,Csw表示應用上下文切換狀態,Mem表示虛擬內存使用狀態,Pro表示進程阻塞狀態,I/O表示硬盤讀寫狀態,Net表示網絡傳輸狀態,具體的,

CPU:主要考察CPUiowait,CPUuser和CPUsystem狀態下的CPU占用值。對于I/O密集型應用,CPUiowait的百分比會大于一個閾值C,根據大量實驗,C可取40%,即CPUiowait>40%。CPUuser和CPUsystem的百分比會小于一個閾值U,對于本實施例的實驗環境,U取5%。CPU的iowait占用很高的時間,表明CPU在頻繁等待某種I/O操作。

Csw:主要考察每秒上下文切換的數量。如果是I/O密集型應用,那么上下文切換很高。通常上下文切換會大于一個閾值W,根據大量實驗,W可取10000。系統中大量的上下文切換,可能是系統進程導致也可能是系統因等待某高優先級操作導致。

Mem:主要考察虛擬內存的使用情況。內存分為實際內存和虛擬內存。如果是I/O密集型應用,會使用虛擬內存,并且有大量頁面置換產生。虛擬內存會大于一個閾值M,根據大量實驗,M可取16MB,說明內存分配了大量資源用于I/O操作。

Process:主要考察每秒阻塞隊列中的任務數(block)。當負載較高或資 源緊張時,系統就會把一些任務放入阻塞隊列中,等待合適的時機去執行。如果是I/O密集型應用,阻塞隊列較高,并且會大于一個閾值P,對于IO密集型應用,取P為2。一般情況阻塞隊列小于CPU核數,通常單個I/O密集型應用不會導致系統處于高負載狀態。

I/O:I/O主要考察每秒硬盤讀寫速率(disk_write)和(disk_read)。如果是I/O密集型應用讀寫速率會很高,通常會大于一個閾值V,V可取1MB/s。

Net:主要考察每秒發送和接收的網絡流量。如果是I/O密集型應用,那么接收或者發送的流量會很高,通常會大于一個閾值N,N可取1MB/s。網絡上監測到大量流量數據,表明正在傳輸數據,可能是文件上傳下載服務或者流媒體服務。

在本實施例中,為識別虛擬機運行的當前應用的應用類型,確定模塊10首先采集該虛擬機運行當前應用時的運行信息,包括所述虛擬機的上下文的單位切換數量、虛擬內存占用值、阻塞隊列的單位任務數、硬盤讀寫速率、網絡傳輸速率以及其在CPUiowait、CPUuser和CPUsystem狀態下的CPU占用值。

在采集到所述虛擬機運行當前應用時的運行信息之后,確定模塊10進一步分析獲取的運行信息是否滿足預存的I/O密集型應用所對應的判定條件(即前述特征六元組)。

具體的,參照圖3,確定模塊10首先對CPU數據進行分析,比較當前CPUiowait的CPU占用值和閾值C(即虛擬機在CPUiowait下的CPU占用值所對應的第一預設閾值),以及分別比較當前CPUuser和CPUsystem的CPU占用值與U的大小。如果滿足當前CPUiowait的CPU占用值大于閾值C且CPUuser和CPUsystem的CPU占用值均小于U(即第二預設閾值),那么轉到下一步,否則,轉到第七步;

其次,確定模塊10分析虛擬機每秒鐘的上下文切換數量。比較上下文切換數量的數量和閾值W(即上下文的單位切換數量所對應的第一預設閾值)。如果滿足上下文切換數大于閾值W,則轉到下一步,否則,轉到第七步;

第三,確定模塊10分析虛擬內存所占的空間大小。比較虛擬內存占用值和閾值M(即虛擬內存占用值所對應的第一預設閾值),如果虛擬內存占用值大于閾值M,則轉到下一步,否則,轉到第七步;

第四,確定模塊10分析每秒鐘阻塞隊列中的任務數。將該數量和閾值P進行比較,如果每秒鐘的阻塞隊列中的任務數大于閾值P(即阻塞隊列的單位任務數所對應的第一預設閾值),則轉到下一步,否則,轉到第七步;

第五,確定模塊10分析硬盤讀寫速率。檢查硬盤讀寫速率是否很大并且將其和閾值I(即硬盤讀寫速率所對應的第一預設閾值)進行比較,如果大于閾值I,則轉到下一步,否則,轉到第七步;

第六,確定模塊10分析網絡傳輸速率。檢查是否有大量的網絡流量并且和閾值N進行比較,如果大于閾值N(即網絡傳輸速率所對應的第一預設閾值),則確定當前應用是I/O密集型應用,退出,否則,轉到第七步;

第七,確定當前應用不是I/O密集型應用,退出。

進一步地,基于第二實施例,提出本發明云計算環境下IO密集型應用識別裝置的第三實施例,對應于前述云計算環境下IO密集型應用識別方法的第三實施例,在本實施例中,所述調整模塊30還用于將所述虛擬機當前的應用調度策略更新為預存的I/O密集型應用所對應的應用調度策略。

需要說明的是,本實施例為進一步增加云計算中心的資源利用效率,在第二實施例的基礎上,增加了對虛擬機的應用調度策略的調整操作。以下僅針對該區別進行說明,其他可參照前述第二實施例,此處不再贅述。

在本發明實施例中,調整模塊10在根據獲取的資源分配策略調整虛擬機的資源的同時,還將虛擬機當前的應用調度策略更新為預存的I/O密集型應用所對應的應用調度策略。其中,I/O密集型應用所對應的應用調度策略包括:將I/O密集型應用對應的進程設置為不可搶占。

以本實施例所述的當前應用的進程為A進程進行說明:

如果A進程在運行期間,有一個優先級更高的進程到來,此時并不搶占A進程的運行權,而是將A進程的need_shed置位,等A進程運行完畢讓出CPU資源后,立即進行調度,以保證A進程在運行期間不可搶占。其中,need_shed為標識進程是否需要執行調度的標識位。

以上僅為本發明的優選實施例,并非因此限制本發明的專利范圍,凡是利用本發明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間 接運用在其他相關的技術領域,均同理包括在本發明的專利保護范圍內。

當前第1頁1 2 3 
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
韩国伦理电影