1.一種基于非一致性I/O訪問構(gòu)架的性能監(jiān)控器,其特征在于,包括主機性能監(jiān)控模塊、虛擬機I/O性能監(jiān)控模塊和虛擬機熱頁監(jiān)控模塊,所述主機性能監(jiān)控模塊被配置為利用linux內(nèi)核提供的性能監(jiān)控單元計算硬件資源的使用情況;所述虛擬機I/O性能監(jiān)控模塊被配置為完成對虛擬機的I/O請求進行的監(jiān)控;所述虛擬機熱頁監(jiān)控模塊被配置為通過perf監(jiān)控虛擬機中內(nèi)存頁的被使用情況。
2.如權(quán)利要求1所述的基于非一致性I/O訪問構(gòu)架的性能監(jiān)控器,其特征在于,所述主機性能監(jiān)控模塊對硬件資源監(jiān)控包括中央處理器周期數(shù)、指令數(shù)、L1、L2、L3不同級別緩存性能情況以及CPU利用率、內(nèi)存利用率、內(nèi)存時延、Last Level Cache命中率。
3.如權(quán)利要求1所述的基于非一致性I/O訪問構(gòu)架的性能監(jiān)控器,其特征在于,所述虛擬機I/O性能監(jiān)控模塊對虛擬機I/O性能監(jiān)控被配置為將虛擬機擺放在不同的NUMA節(jié)點,綁定在不同的物理CPU上,通過獲得網(wǎng)卡收到中斷請求的次數(shù),來獲取I/O請求操作的數(shù)量。
4.如權(quán)利要求1所述的基于非一致性I/O訪問構(gòu)架的性能監(jiān)控器,其特征在于,所述虛擬機熱頁監(jiān)控模塊被配置為通過累計一段時間的內(nèi)存頁情況來判斷是否為熱頁。
5.如權(quán)利要求4所述的基于非一致性I/O訪問構(gòu)架的性能監(jiān)控器,其特征在于,所述熱頁的判斷被配置為通過維護一個5位位圖表,記錄一段時間內(nèi)頁面被訪問的情況,同時監(jiān)控內(nèi)存頁被訪問頻繁程度。
6.一種基于非一致性I/O訪問構(gòu)架的性能監(jiān)控方法,其特征在于,包括以下步驟:
提供主機性能監(jiān)控模塊、虛擬機I/O性能監(jiān)控模塊和虛擬機熱頁監(jiān)控模塊;
利用linux提供的perf_event接口,對硬件信息進行采集;
使用PERF_TYPE_HARDWARE的不同類型對每個虛擬機的VCPU進行紀錄;
通過計算緩存未命中的次數(shù)以及緩存命中次數(shù)計算出緩存命中率;
通過在宿主機中/proc/stat中監(jiān)測宿主機的運行情況進行計算;
通過整個系統(tǒng)的時間和各線程的運行時間,周期性的計算每個線程的運行時間以計算CPU利用率;
從宿主機中/proc/meminfo文件中提取當前內(nèi)存的使用量以及內(nèi)存總量以計算內(nèi)存使用率。
7.如權(quán)利要求6所述的基于非一致性I/O訪問構(gòu)架的性能監(jiān)控方法,其特征在于,所述CPU利用率為100%*(user_time+nice_time+system_time)/(user_time+nice_time+system_time+idle_time)。
8.如權(quán)利要求6所述的基于非一致性I/O訪問構(gòu)架的性能監(jiān)控方法,其特征在于,所述內(nèi)存使用率為100%*(c_mem/u_mem)。
9.如權(quán)利要求6所述的基于非一致性I/O訪問構(gòu)架的性能監(jiān)控方法,其特征在于,所述虛擬機I/O性能監(jiān)控模塊的虛擬機I/O性能監(jiān)控步驟為:
第一步:通過讀取/proc/interrupts中網(wǎng)卡中斷的信息,獲取不同CPU收到的網(wǎng)卡IO中斷次數(shù);
第二步:將虛擬機擺放在不同的NUMA節(jié)點,綁定在不同的物理CPU上,在虛擬機中跑不同的應用,通過在虛擬機中讀取網(wǎng)卡中斷信息,查看虛擬機中IO請求數(shù)量;
第三步:通過進行對比主機中和不同虛擬機中IO請求情況,判斷虛擬機擺放在不同節(jié)點上的IO請求情況;
第四步:確定IO密集型操作的虛擬機。
10.如權(quán)利要求6所述的基于非一致性I/O訪問構(gòu)架的性能監(jiān)控方法,其特征在于,所述虛擬機熱頁監(jiān)控模塊的虛擬機熱頁監(jiān)控步驟為:
第一步:通過perf獲取虛擬機中的進程頁的使用情況,如果正在使用,則記為當時的“熱”,每隔固定時間讀取虛擬機內(nèi)存頁使用情況;
第二步:維護一個所有頁狀態(tài)向量P(P1,P2,P3…Pn),在每個檢測的瞬時如果內(nèi)存頁正在使用,則置1,如果內(nèi)存頁沒有使用,則置0;
第三步:對每隔t時間進行一次采樣,每一個內(nèi)存頁維護一個m維FIFO隊列,記錄每個瞬時某個確定頁Pi的頁面使用情況Pi(Pi1,Pi2,Pi3…Pim);
第四步:經(jīng)過m次采樣,形成一個內(nèi)存頁使用情況的矩陣;每個頁面Pi在j時間點是否被使用的狀態(tài)記為Pij;
第五步:計算每個頁面當前的“熱度”,通過給定不同權(quán)值W(W1,W2,W3…Wm)對頁面熱度進行計算,第i個頁面的熱度Wi=Pi1*Wi1,Pi2*Wi2,Pi3*Wi3…Pim*Wim;
第六步:比較每個頁面的“熱度”,如果最熱頁的熱度大于兩倍次熱頁,則判斷當前頁面為“熱頁”,同時通知系統(tǒng)發(fā)現(xiàn)“熱頁”。