本發(fā)明涉及網(wǎng)絡(luò)功能虛擬化技術(shù)領(lǐng)域,尤其涉及通信電子計(jì)算機(jī)軟件網(wǎng)絡(luò)功能虛擬化技術(shù)領(lǐng)域,具體是指一種基于NFV(Network Function Virtualization,網(wǎng)絡(luò)功能虛擬化)設(shè)備的系統(tǒng)性能檢測(cè)及調(diào)優(yōu)方法。
背景技術(shù):
隨著虛擬化技術(shù)的發(fā)展以及基于虛擬化技術(shù)的應(yīng)用需求的增長(zhǎng);目前越來越多網(wǎng)絡(luò)設(shè)備正在從傳統(tǒng)的專用設(shè)備逐步遷移到基于x86-64架構(gòu)的通用Linux服務(wù)器上。網(wǎng)絡(luò)帶寬和系統(tǒng)延遲是網(wǎng)絡(luò)設(shè)備的主要性能指標(biāo)中比較特出的兩個(gè)性能指標(biāo)。理論上,帶寬越大,延遲越?。环粗?,較小的延時(shí)有助于提升帶寬。
在現(xiàn)有硬件和軟件技術(shù)條件,比如硬件虛擬化方面主要有Intel VT(Virtualization Technology,虛擬化技術(shù))等CPU(Central Processing Unit,中央處理器)虛擬化技術(shù);軟件虛擬化方面主要有KVM(Kernel-based Virtual Machine,開源虛擬化模塊)等Hypervisor(一種運(yùn)行在物理服務(wù)器和操作系統(tǒng)之間的中間軟件層)虛擬化技術(shù)。雖然這些虛擬化技術(shù)能夠使用戶充分地使用系統(tǒng)資源以及靈活地部署相關(guān)網(wǎng)絡(luò)業(yè)務(wù),但是在實(shí)際使用過程中由于使用策略不當(dāng)而引發(fā)不能夠滿足業(yè)務(wù)需求的性能問題。這些硬件和軟件虛擬化技術(shù)提供了功能及機(jī)制,卻沒有在實(shí)際使用中提供完整且具有針對(duì)性的業(yè)務(wù)部署和性能優(yōu)化等方面的解決方案。在現(xiàn)有的基于x86-64硬件構(gòu)架和Linux KVM軟件架構(gòu)的環(huán)境下,網(wǎng)絡(luò)功能虛擬化設(shè)備面臨著網(wǎng)絡(luò)帶寬和系統(tǒng)延遲的困境,主要技術(shù)瓶頸反映在內(nèi)存子系統(tǒng)方面,其中包括:本地化內(nèi)存訪問、內(nèi)存頁表映射、CPU高速緩存命中率、主存訪問延遲等以及針對(duì)上述瓶頸的調(diào)優(yōu)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)的缺點(diǎn),提供了一種能夠?qū)崿F(xiàn)提供完整且具有針對(duì)性的業(yè)務(wù)部署和性能優(yōu)化的基于NFV設(shè)備的系統(tǒng)性能檢測(cè)及調(diào)優(yōu)方法。
為了實(shí)現(xiàn)上述目的,本發(fā)明的具有如下構(gòu)成:
該基于NFV設(shè)備的系統(tǒng)性能檢測(cè)及調(diào)優(yōu)方法,包括如下步驟:
(1)對(duì)系統(tǒng)配置進(jìn)行檢測(cè);
(2)設(shè)定系統(tǒng)性能參數(shù);
(3)自動(dòng)采樣與系統(tǒng)帶寬和延遲相關(guān)的性能事件;
(4)根據(jù)采樣結(jié)果進(jìn)行性能分析及優(yōu)化。
較佳地,所述的步驟(1)和步驟(2)之間還包括如下步驟:
(1-1)檢測(cè)BIOS(Basic Input/Output System,基本輸入輸出系統(tǒng))預(yù)配置參數(shù)并修改;
(1-2)檢測(cè)CPU狀態(tài)并配置;
(1-3)檢測(cè)內(nèi)存子系統(tǒng)并設(shè)定內(nèi)存子系統(tǒng)相關(guān)性能參數(shù);
(1-4)檢測(cè)網(wǎng)絡(luò)設(shè)備并設(shè)定網(wǎng)絡(luò)設(shè)備相關(guān)性能參數(shù);
(1-5)檢測(cè)宿主機(jī)操作系統(tǒng)和內(nèi)核參數(shù)并設(shè)定宿主機(jī)相關(guān)性能參數(shù);
(1-6)設(shè)定虛擬機(jī)參數(shù);
(1-7)設(shè)定客戶機(jī)操作系統(tǒng)和內(nèi)核參數(shù);
(1-8)設(shè)定客戶機(jī)網(wǎng)絡(luò)設(shè)備參數(shù)。
更佳地,所述的步驟(1-1)包括如下步驟:
(1-1-1)檢測(cè)BIOS預(yù)配置參數(shù);
(1-1-2)判斷所述的BIOS預(yù)配置參數(shù)與期望是否一致,如果是,則繼續(xù)步驟(1-2),否則繼續(xù)步驟(1-1-3);
(1-1-3)判斷所述的BIOS預(yù)配置參數(shù)是否可以在線修改,如果是,則在線修改BIOS預(yù)配置參數(shù)并繼續(xù)步驟(1-2),否則繼續(xù)步驟(1-1-4);
(1-1-4)重啟系統(tǒng)并在系統(tǒng)引導(dǎo)階段進(jìn)入BIOS環(huán)境,修改所述的BIOS預(yù)配置參數(shù),繼續(xù)步驟(1-1-1)。
更進(jìn)一步地,所述的BIOS預(yù)配置參數(shù)包括處理器C3的狀態(tài)、處理器C6的狀態(tài)、超線程、英特爾增強(qiáng)、英特爾虛擬化、MLC遠(yuǎn)程控制、MLC空間預(yù)存器、DCU指令預(yù)存器、DCA、CPU功耗和性能策略、英特爾睿頻加速和內(nèi)存的NUMA優(yōu)化項(xiàng)。
更進(jìn)一步地,所述的步驟(1-2)包括如下步驟:
(1-2-1)讀取所述的CPU狀態(tài)并檢測(cè)CPU參數(shù)指標(biāo);
(1-2-2)判斷所述的CPU狀態(tài)與期望是否一致,如果是,則繼續(xù)步驟(1-2-6),否則繼續(xù)步驟(1-1-7);
(1-2-3)判斷BIOS配置是否正確,如果是,則繼續(xù)步驟(1-2-4),否則繼續(xù)步驟(1-1-3);
(1-2-4)判斷CPU型號(hào)是否正確,如果是,則繼續(xù)步驟(1-2-6),否則繼續(xù)步驟(1-2-5);
(1-2-5)更換CPU或更換服務(wù)器硬件,繼續(xù)步驟(1-1-1);
(1-2-6)記錄并保存CPU相關(guān)特征參數(shù)。
更進(jìn)一步地,所述的CPU參數(shù)指標(biāo)包括CPU物理ID、Core ID、CPU邏輯核數(shù)、L1/L2/L3高速緩存大小、ITLB/DTLB/STLB(TLB:Translation lookaside buffer,即旁路轉(zhuǎn)換緩沖)條目數(shù)、超線程、電源管理模式,QPI(QuickPath Interconnect,公共系統(tǒng)接口)狀態(tài),緩存硬件預(yù)取和LLC(Logical Link Control,邏輯鏈路控制子層)配置方式。
更進(jìn)一步地,所述的步驟(1-3)包括如下步驟:
(1-3-1)檢測(cè)DIMM(Dual-Inline-Memory-Modules,雙列直插式存儲(chǔ)模塊)內(nèi)存布局,并將所述的DIMM內(nèi)存布局調(diào)整為最大帶寬配置模式;
(1-3-2)判斷所述的DIMM內(nèi)存布局是否滿足NUMA(Non Uniform Memory Access,非統(tǒng)一內(nèi)存訪問)架構(gòu),如果是,則繼續(xù)步驟(1-3-4),否則繼續(xù)步驟(1-3-3);
(1-3-3)手工調(diào)整所述的DIMM內(nèi)存布局,繼續(xù)步驟(1-1-1);
(1-3-4)檢查并保存內(nèi)存相關(guān)參數(shù)。
更進(jìn)一步地,所述的內(nèi)存布局包括內(nèi)存通道數(shù)、DIMM插槽布局、內(nèi)存條裝配、系統(tǒng)物理內(nèi)存容量、單根內(nèi)存條容量、NUMA內(nèi)存節(jié)點(diǎn)本地化訪問、工作頻率和存儲(chǔ)容量。
更進(jìn)一步地,所述的步驟(1-4)還包括如下步驟:
(1-4-1)檢測(cè)網(wǎng)卡配置情況;
(1-4-2)判斷網(wǎng)卡布局是否滿足NUMA架構(gòu),如果是,則繼續(xù)步驟(1-4-4),否則繼續(xù)步驟(1-4-3);
(1-4-3)手工調(diào)整所述的網(wǎng)卡內(nèi)存布局,繼續(xù)步驟(1-1-1);
(1-4-4)檢測(cè)并保存網(wǎng)卡相關(guān)參數(shù)。
更進(jìn)一步地,所述的網(wǎng)卡布局包括網(wǎng)卡型號(hào)、網(wǎng)卡裝配物理位置PCIe總線插槽和NUMA網(wǎng)卡本地化訪問。
更佳地,所述的步驟(1-5)包括如下步驟:
(1-5-1)檢測(cè)并設(shè)定內(nèi)核參數(shù);
(1-5-2)檢測(cè)并設(shè)定所需內(nèi)核模塊的加載情況;
(1-5-3)檢測(cè)并設(shè)定巨頁分配情況;
(1-5-4)檢測(cè)并設(shè)定系統(tǒng)交換分區(qū)狀態(tài)。
更進(jìn)一步地,所述的內(nèi)存巨頁分配情況包括巨頁頁面大小、巨頁分配數(shù)量、巨頁在各個(gè)NUMA節(jié)點(diǎn)分配情況和巨頁物理地址空間連續(xù)性。
更佳地,所述的步驟(1-6)包括如下步驟:
(1-6-1)檢測(cè)并設(shè)定預(yù)留客戶機(jī)系統(tǒng)內(nèi)存;
(1-6-2)檢測(cè)并設(shè)定虛擬CPU親和性;
(1-6-3)檢測(cè)并設(shè)定綁定虛擬網(wǎng)卡。
更進(jìn)一步地,所述的檢測(cè)并設(shè)定預(yù)留客戶機(jī)系統(tǒng)內(nèi)存,具體為:
宿主機(jī)裝配同樣型號(hào)的內(nèi)存條且每個(gè)內(nèi)存同通道僅裝配單個(gè)內(nèi)存條,所述的宿主機(jī)使用2MB或1GB大小的巨頁為客戶機(jī)分配內(nèi)存。
更進(jìn)一步地,所述的檢測(cè)并設(shè)定虛擬CPU親和性,具體為:
綁定多線程的任務(wù)中的線程到同一個(gè)物理處理器上不同的CPU核上,并且親和性綁定指定線程訪問相同NUMA節(jié)點(diǎn)下的內(nèi)存和網(wǎng)卡。
更進(jìn)一步地,所述的檢測(cè)并設(shè)定綁定虛擬網(wǎng)卡,具體為:
使用Pass Through模式初始化客戶機(jī)網(wǎng)卡,綁定線程僅訪問相同NUMA節(jié)點(diǎn)下的網(wǎng)卡。
更佳地,所述的步驟(1-7)包括如下步驟:
(1-7-1)檢測(cè)并設(shè)定客戶機(jī)內(nèi)存巨頁分配;
(1-7-2)檢測(cè)并設(shè)定客戶機(jī)操作系統(tǒng)內(nèi)核參數(shù)。
更進(jìn)一步地,所述的檢測(cè)并設(shè)定客戶機(jī)內(nèi)存巨頁分配,具體為:
使用連續(xù)地址的2MB或1GB巨頁為應(yīng)用程序分配內(nèi)存,最優(yōu)性能時(shí)以減少TLB不命中率,使用的2MB或1GB巨頁的數(shù)量應(yīng)與CPU的DTLB條目數(shù)量一致。
更佳地,所述的步驟(1-8)包括如下步驟:
(1-8-1)檢查虛擬網(wǎng)卡驅(qū)動(dòng)程序是否正確加載;
(1-8-2)檢測(cè)并設(shè)定虛擬網(wǎng)卡驅(qū)動(dòng)程序參數(shù)配置。
較佳地,所述的步驟(3)包括如下步驟:
(3-1)鑒別CPU類型;
(3-2)確定對(duì)應(yīng)采樣事件;
(3-3)收集采樣事件結(jié)果。
更佳地,所述的步驟(3-1)包括如下步驟:
(3-1-1)讀取CPU的信息;
(3-1-2)判斷所述的CPU是否為Intel處理器,如果是,則繼續(xù)步驟(3-1-3),否則繼續(xù)步驟(3);
(3-1-3)識(shí)別處理器微架構(gòu)。
更佳地,所述的步驟(3-2)包括如下步驟:
(3-2-1)判斷所述的處理器微架構(gòu),如果是Sandy Bridge微架構(gòu),則繼續(xù)步驟(3-2-2),如果是Ivy Bridge微架構(gòu),則繼續(xù)步驟(3-2-3),如果是其他已支持的處理器構(gòu)架,則繼續(xù)步驟(3-2-4),如果都不是,則繼續(xù)步驟(3);
(3-2-2)確定Sandy Bridge微架構(gòu)的采樣事件;
(3-2-3)確定Ivy Bridge微架構(gòu)的采樣事件;
(3-2-4)確定其他微架構(gòu)的采樣事件。
更佳地,所述的步驟(3-3)包括如下步驟:
(3-3-1)運(yùn)行應(yīng)用程序并采樣性能事件;
(3-3-2)收集采樣事件結(jié)果。
較佳地,所述的步驟(4)包括如下步驟:
(4-1)導(dǎo)入相關(guān)文件;
(4-2)生成事件分析結(jié)果報(bào)告;
(4-3)優(yōu)化系統(tǒng)配置;
(4-4)定位性能缺陷到具體的代碼。
更佳地,所述的步驟(4-1)和步驟(4-2)之間包括如下步驟:
(4-1-1)判斷所述的導(dǎo)入文件的類型,如果是時(shí)間采集結(jié)果,則繼續(xù)步驟(4-1-2),如果是對(duì)象文件,則繼續(xù)步驟(4-1-3),如果是代碼源文件,則繼續(xù)步驟(4-1-4),如果是依賴的庫文件,則繼續(xù)步驟(4-1-5);
(4-1-2)判斷時(shí)間采樣結(jié)果是否可以正確解析,如果是,則繼續(xù)步驟(4-1-6),否則繼續(xù)步驟(4-3);
(4-1-3)判斷對(duì)象文件是否導(dǎo)入成功,如果是,則繼續(xù)步驟(4-1-7),否則繼續(xù)步驟(4-3);
(4-1-4)判斷代碼源文件是否導(dǎo)入成功,如果是,則繼續(xù)步驟(4-1-9),否則繼續(xù)步驟(4-3);
(4-1-5)判斷庫文件是否導(dǎo)入成功,如果是,則繼續(xù)步驟(4-1-10),否則繼續(xù)步驟(4-3);
(4-1-6)生成性能開銷統(tǒng)計(jì)結(jié)果,繼續(xù)步驟(4-1-8);
(4-1-7)生成匯編代碼,繼續(xù)步驟(4-1-8);
(4-1-8)定位性能開銷到匯編代碼級(jí)別;
(4-1-9)定位性能開銷到源碼級(jí)別;
(4-1-10)定位性能開銷到調(diào)用的庫文件函數(shù);
(4-1-11)生成結(jié)果到可視化操作界面。
更進(jìn)一步地,所述的生成性能開銷統(tǒng)計(jì)結(jié)果,具體為:
根據(jù)對(duì)處理器的性能事件采樣記錄,導(dǎo)出處理器的循環(huán)開銷,并所述的循環(huán)開銷將關(guān)聯(lián)到對(duì)應(yīng)的源代碼。
更進(jìn)一步地,所述的生成匯編代碼,具體為:
結(jié)合編譯生成的目標(biāo)文件,調(diào)用命令objdump-S-M att xxx.o生成對(duì)應(yīng)的匯編文件。
更進(jìn)一步地,所述的生成結(jié)果到可視化操作界面,具體為:
關(guān)聯(lián)性能開銷到調(diào)用的匯編指令的功能塊,以功能塊為單位顯示出所用功能塊之間的調(diào)用關(guān)系,并且以顏色深度表示每個(gè)功能塊的性能開銷,當(dāng)用戶鼠標(biāo)雙擊選定的功能塊時(shí),可視化系統(tǒng)顯示調(diào)用的匯編代碼和源碼,以函數(shù)為粒度,以函數(shù)名為標(biāo)識(shí)并詳細(xì)列舉出事件的性能開銷。
更進(jìn)一步地,所述的性能開銷是可排序的。
采用了該發(fā)明中的基于NFV設(shè)備的系統(tǒng)性能檢測(cè)及調(diào)優(yōu)方法,通過軟件方式優(yōu)化系統(tǒng)在硬件和軟件方面的配置策略,避免或突破性能瓶頸限制,并指明了NFV設(shè)備系統(tǒng)對(duì)性能有影響的檢測(cè)點(diǎn),提高了對(duì)性能瓶頸的定位效率;有針對(duì)地自動(dòng)配置一系列性能參數(shù),提高了系統(tǒng)部署的自動(dòng)化程度;根據(jù)設(shè)備實(shí)際運(yùn)行的反饋結(jié)果,量化分析系統(tǒng)運(yùn)行的性能特征,并結(jié)合量化結(jié)果找出環(huán)境配置的不合理因數(shù)和代碼缺陷,進(jìn)一步優(yōu)化系統(tǒng)性能,從而改善網(wǎng)絡(luò)虛擬化設(shè)備的網(wǎng)絡(luò)帶寬和系統(tǒng)延遲;根據(jù)采樣結(jié)果自動(dòng)進(jìn)行性能分析,結(jié)合分析結(jié)果把CPU性能開銷自動(dòng)關(guān)聯(lián)到相應(yīng)的有缺陷的源代碼,并且提供圖形化操作界面,方便軟件開發(fā)人員對(duì)缺陷代碼的定位,具有廣泛的應(yīng)用范圍。
附圖說明
圖1為本發(fā)明的基于NFV設(shè)備的系統(tǒng)性能檢測(cè)及調(diào)優(yōu)方法的軟件邏輯功能框圖。
圖2為本發(fā)明的基于NFV設(shè)備的系統(tǒng)性能檢測(cè)及調(diào)優(yōu)方法的配置檢測(cè)和參數(shù)設(shè)定的流程圖。
圖3為本發(fā)明的基于NFV設(shè)備的系統(tǒng)性能檢測(cè)及調(diào)優(yōu)方法的事件采樣的流程圖。
圖4為本發(fā)明的基于NFV設(shè)備的系統(tǒng)性能檢測(cè)及調(diào)優(yōu)方法的性能調(diào)優(yōu)的流程圖。
具體實(shí)施方式
為了能夠更清楚地描述本發(fā)明的技術(shù)內(nèi)容,下面結(jié)合具體實(shí)施例來進(jìn)行進(jìn)一步的描述。
在一種實(shí)施方式中,該基于NFV設(shè)備的系統(tǒng)性能檢測(cè)及調(diào)優(yōu)方法,包括如下步驟:
(1)對(duì)系統(tǒng)配置進(jìn)行檢測(cè);
(2)設(shè)定系統(tǒng)性能參數(shù);
(3)自動(dòng)采樣與系統(tǒng)帶寬和延遲相關(guān)的性能事件;
(4)根據(jù)采樣結(jié)果進(jìn)行性能分析及優(yōu)化。
在一種較佳的實(shí)施方式中,所述的步驟(1)和步驟(2)之間還包括如下步驟:
(1-1)檢測(cè)BIOS預(yù)配置參數(shù)并修改;
(1-2)檢測(cè)CPU狀態(tài)并配置;
(1-3)檢測(cè)內(nèi)存子系統(tǒng)并設(shè)定內(nèi)存子系統(tǒng)相關(guān)性能參數(shù);
(1-4)檢測(cè)網(wǎng)絡(luò)設(shè)備并設(shè)定網(wǎng)絡(luò)設(shè)備相關(guān)性能參數(shù);
(1-5)檢測(cè)宿主機(jī)操作系統(tǒng)和內(nèi)核參數(shù)并設(shè)定宿主機(jī)相關(guān)性能參數(shù);
(1-6)設(shè)定虛擬機(jī)參數(shù);
(1-7)設(shè)定客戶機(jī)操作系統(tǒng)和內(nèi)核參數(shù);
(1-8)設(shè)定客戶機(jī)網(wǎng)絡(luò)設(shè)備參數(shù)。
在一種更佳的實(shí)施方式中,所述的步驟(1-1)包括如下步驟:
(1-1-1)檢測(cè)BIOS預(yù)配置參數(shù);
(1-1-2)判斷所述的BIOS預(yù)配置參數(shù)與期望是否一致,如果是,則繼續(xù)步驟(1-2),否則繼續(xù)步驟(1-1-3);
(1-1-3)判斷所述的BIOS預(yù)配置參數(shù)是否可以在線修改,如果是,則在線修改BIOS預(yù)配置參數(shù)并繼續(xù)步驟(1-2),否則繼續(xù)步驟(1-1-4);
(1-1-4)重啟系統(tǒng)并在系統(tǒng)引導(dǎo)階段進(jìn)入BIOS環(huán)境,修改所述的BIOS預(yù)配置參數(shù),繼續(xù)步驟(1-1-1)。
在一種更進(jìn)一步的實(shí)施方式中,所述的BIOS預(yù)配置參數(shù)包括處理器C3的狀態(tài)、處理器C6的狀態(tài)、超線程、英特爾增強(qiáng)、英特爾虛擬化、MLC遠(yuǎn)程控制、MLC空間預(yù)存器、DCU指令預(yù)存器、DCA、CPU功耗和性能策略、英特爾睿頻加速和內(nèi)存的NUMA優(yōu)化項(xiàng)。
在一種更進(jìn)一步的實(shí)施方式中,所述的步驟(1-2)包括如下步驟:
(1-2-1)讀取所述的CPU狀態(tài)并檢測(cè)CPU參數(shù)指標(biāo);
(1-2-2)判斷所述的CPU狀態(tài)與期望是否一致,如果是,則繼續(xù)步驟(1-2-6),否則繼續(xù)步驟(1-1-7);
(1-2-3)判斷BIOS配置是否正確,如果是,則繼續(xù)步驟(1-2-4),否則繼續(xù)步驟(1-1-3);
(1-2-4)判斷CPU型號(hào)是否正確,如果是,則繼續(xù)步驟(1-2-6),否則繼續(xù)步驟(1-2-5);
(1-2-5)更換CPU或更換服務(wù)器硬件,繼續(xù)步驟(1-1-1);
(1-2-6)記錄并保存CPU相關(guān)特征參數(shù)。
在一種更進(jìn)一步的實(shí)施方式中,所述的CPU參數(shù)指標(biāo)包括CPU物理ID、Core ID、CPU邏輯核數(shù)、L1/L2/L3高速緩存大小、ITLB/DTLB/STLB條目數(shù)、超線程、電源管理模式,QPI狀態(tài),緩存硬件預(yù)取和LLC配置方式。
在一種更進(jìn)一步的實(shí)施方式中,所述的步驟(1-3)包括如下步驟:
(1-3-1)檢測(cè)DIMM內(nèi)存布局,并將所述的DIMM內(nèi)存布局調(diào)整為最大帶寬配置模式;
(1-3-2)判斷所述的DIMM內(nèi)存布局是否滿足NUMA架構(gòu),如果是,則繼續(xù)步驟(1-3-4),否則繼續(xù)步驟(1-3-3);
(1-3-3)手工調(diào)整所述的DIMM內(nèi)存布局,繼續(xù)步驟(1-1-1);
(1-3-4)檢查并保存內(nèi)存相關(guān)參數(shù)。
在一種更進(jìn)一步的實(shí)施方式中,所述的內(nèi)存布局包括內(nèi)存通道數(shù)、DIMM插槽布局、內(nèi)存條裝配、系統(tǒng)物理內(nèi)存容量、單根內(nèi)存條容量、NUMA內(nèi)存節(jié)點(diǎn)本地化訪問、工作頻率和存儲(chǔ)容量。
在一種更進(jìn)一步的實(shí)施方式中,所述的步驟(1-4)還包括如下步驟:
(1-4-1)檢測(cè)網(wǎng)卡配置情況;
(1-4-2)判斷網(wǎng)卡布局是否滿足NUMA架構(gòu),如果是,則繼續(xù)步驟(1-4-4),否則繼續(xù)步驟(1-4-3);
(1-4-3)手工調(diào)整所述的網(wǎng)卡內(nèi)存布局,繼續(xù)步驟(1-1-1);
(1-4-4)檢測(cè)并保存網(wǎng)卡相關(guān)參數(shù)。
在一種更進(jìn)一步的實(shí)施方式中,所述的網(wǎng)卡布局包括網(wǎng)卡型號(hào)、網(wǎng)卡裝配物理位置PCIe總線插槽和NUMA網(wǎng)卡本地化訪問。
在一種更佳的實(shí)施方式中,所述的步驟(1-5)包括如下步驟:
(1-5-1)檢測(cè)并設(shè)定內(nèi)核參數(shù);
(1-5-2)檢測(cè)并設(shè)定所需內(nèi)核模塊的加載情況;
(1-5-3)檢測(cè)并設(shè)定巨頁分配情況;
(1-5-4)檢測(cè)并設(shè)定系統(tǒng)交換分區(qū)狀態(tài)。
在一種更進(jìn)一步的實(shí)施方式中,所述的內(nèi)存巨頁分配情況包括巨頁頁面大小、巨頁分配數(shù)量、巨頁在各個(gè)NUMA節(jié)點(diǎn)分配情況和巨頁物理地址空間連續(xù)性。
在一種更佳的實(shí)施方式中,所述的步驟(1-6)包括如下步驟:
(1-6-1)檢測(cè)并設(shè)定預(yù)留客戶機(jī)系統(tǒng)內(nèi)存;
(1-6-2)檢測(cè)并設(shè)定虛擬CPU親和性;
(1-6-3)檢測(cè)并設(shè)定綁定虛擬網(wǎng)卡。
在一種更進(jìn)一步的實(shí)施方式中,所述的檢測(cè)并設(shè)定預(yù)留客戶機(jī)系統(tǒng)內(nèi)存,具體為:
宿主機(jī)裝配同樣型號(hào)的內(nèi)存條且每個(gè)內(nèi)存同通道僅裝配單個(gè)內(nèi)存條,所述的宿主機(jī)使用2MB或1GB大小的巨頁為客戶機(jī)分配內(nèi)存。
在一種更進(jìn)一步的實(shí)施方式中,所述的檢測(cè)并設(shè)定虛擬CPU親和性,具體為:
綁定多線程的任務(wù)中的線程到同一個(gè)物理處理器上不同的CPU核上,并且親和性綁定指定線程訪問相同NUMA節(jié)點(diǎn)下的內(nèi)存和網(wǎng)卡。
在一種更進(jìn)一步的實(shí)施方式中,所述的檢測(cè)并設(shè)定綁定虛擬網(wǎng)卡,具體為:
使用Pass Through模式初始化客戶機(jī)網(wǎng)卡,綁定線程僅訪問相同NUMA節(jié)點(diǎn)下的網(wǎng)卡。
在一種更佳的實(shí)施方式中,所述的步驟(1-7)包括如下步驟:
(1-7-1)檢測(cè)并設(shè)定客戶機(jī)內(nèi)存巨頁分配;
(1-7-2)檢測(cè)并設(shè)定客戶機(jī)操作系統(tǒng)內(nèi)核參數(shù)。
在一種更進(jìn)一步的實(shí)施方式中,所述的檢測(cè)并設(shè)定客戶機(jī)內(nèi)存巨頁分配,具體為:
使用連續(xù)地址的2MB或1GB巨頁為應(yīng)用程序分配內(nèi)存,最優(yōu)性能時(shí)以減少TLB不命中率,使用的2MB或1GB巨頁的數(shù)量應(yīng)與CPU的DTLB條目數(shù)量一致。
在一種更佳的實(shí)施方式中,所述的步驟(1-8)包括如下步驟:
(1-8-1)檢查虛擬網(wǎng)卡驅(qū)動(dòng)程序是否正確加載;
(1-8-2)檢測(cè)并設(shè)定虛擬網(wǎng)卡驅(qū)動(dòng)程序參數(shù)配置。
在一種較佳的實(shí)施方式中,所述的步驟(3)包括如下步驟:
(3-1)鑒別CPU類型;
(3-2)確定對(duì)應(yīng)采樣事件;
(3-3)收集采樣事件結(jié)果。
在一種更佳的實(shí)施方式中,所述的步驟(3-1)包括如下步驟:
(3-1-1)讀取CPU的信息;
(3-1-2)判斷所述的CPU是否為Intel處理器,如果是,則繼續(xù)步驟(3-1-3),否則繼續(xù)步驟(3);
(3-1-3)識(shí)別處理器微架構(gòu)。
在一種更佳的實(shí)施方式中,所述的步驟(3-2)包括如下步驟:
(3-2-1)判斷所述的處理器微架構(gòu),如果是Sandy Bridge微架構(gòu),則繼續(xù)步驟(3-2-2),如果是Ivy Bridge微架構(gòu),則繼續(xù)步驟(3-2-3),如果是其他已支持的處理器構(gòu)架,則繼續(xù)步驟(3-2-4),如果都不是,則繼續(xù)步驟(3);
(3-2-2)確定Sandy Bridge微架構(gòu)的采樣事件;
(3-2-3)確定Ivy Bridge微架構(gòu)的采樣事件;
(3-2-4)確定其他微架構(gòu)的采樣事件。
在一種更佳的實(shí)施方式中,所述的步驟(3-3)包括如下步驟:
(3-3-1)運(yùn)行應(yīng)用程序并采樣性能事件;
(3-3-2)收集采樣事件結(jié)果。
在一種較佳的實(shí)施方式中,所述的步驟(4)包括如下步驟:
(4-1)導(dǎo)入相關(guān)文件;
(4-2)生成事件分析結(jié)果報(bào)告;
(4-3)優(yōu)化系統(tǒng)配置;
(4-4)定位性能缺陷到具體的代碼。
在一種更佳的實(shí)施方式中,所述的步驟(4-1)和步驟(4-2)之間包括如下步驟:
(4-1-1)判斷所述的導(dǎo)入文件的類型,如果是時(shí)間采集結(jié)果,則繼續(xù)步驟(4-1-2),如果是對(duì)象文件,則繼續(xù)步驟(4-1-3),如果是代碼源文件,則繼續(xù)步驟(4-1-4),如果是依賴的庫文件,則繼續(xù)步驟(4-1-5);
(4-1-2)判斷時(shí)間采樣結(jié)果是否可以正確解析,如果是,則繼續(xù)步驟(4-1-6),否則繼續(xù)步驟(4-3);
(4-1-3)判斷對(duì)象文件是否導(dǎo)入成功,如果是,則繼續(xù)步驟(4-1-7),否則繼續(xù)步驟(4-3);
(4-1-4)判斷代碼源文件是否導(dǎo)入成功,如果是,則繼續(xù)步驟(4-1-9),否則繼續(xù)步驟(4-3);
(4-1-5)判斷庫文件是否導(dǎo)入成功,如果是,則繼續(xù)步驟(4-1-10),否則繼續(xù)步驟(4-3);
(4-1-6)生成性能開銷統(tǒng)計(jì)結(jié)果,繼續(xù)步驟(4-1-8);
(4-1-7)生成匯編代碼,繼續(xù)步驟(4-1-8);
(4-1-8)定位性能開銷到匯編代碼級(jí)別;
(4-1-9)定位性能開銷到源碼級(jí)別;
(4-1-10)定位性能開銷到調(diào)用的庫文件函數(shù);
(4-1-11)生成結(jié)果到可視化操作界面。
在一種更進(jìn)一步的實(shí)施方式中,所述的生成性能開銷統(tǒng)計(jì)結(jié)果,具體為:
根據(jù)對(duì)處理器的性能事件采樣記錄,導(dǎo)出處理器的循環(huán)開銷,并所述的循環(huán)開銷將關(guān)聯(lián)到對(duì)應(yīng)的源代碼。
在一種更進(jìn)一步的實(shí)施方式中,所述的生成匯編代碼,具體為:
結(jié)合編譯生成的目標(biāo)文件,調(diào)用命令objdump-S-M att xxx.o生成對(duì)應(yīng)的匯編文件。
在一種更進(jìn)一步的實(shí)施方式中,所述的生成結(jié)果到可視化操作界面,具體為:
關(guān)聯(lián)性能開銷到調(diào)用的匯編指令的功能塊,以功能塊為單位顯示出所用功能塊之間的調(diào)用關(guān)系,并且以顏色深度表示每個(gè)功能塊的性能開銷,當(dāng)用戶鼠標(biāo)雙擊選定的功能塊時(shí),可視化系統(tǒng)顯示調(diào)用的匯編代碼和源碼,以函數(shù)為粒度,以函數(shù)名為標(biāo)識(shí)并詳細(xì)列舉出事件的性能開銷。
在一種更進(jìn)一步的實(shí)施方式中,所述的性能開銷是可排序的。
在一種具體的實(shí)施方式中,本軟件根據(jù)其所實(shí)現(xiàn)的功能,結(jié)合圖1在功能邏輯上可分成如下4個(gè)子功能模塊如下:
1、配置檢測(cè)
2、參數(shù)設(shè)定
3、事件采樣
4、性能調(diào)優(yōu)
各個(gè)子功能模塊的功能及實(shí)現(xiàn)過程描述如下:
1、配置檢測(cè)
在應(yīng)用程序運(yùn)行之前需要對(duì)應(yīng)用程序運(yùn)行所依賴的硬件和軟件配置進(jìn)行檢測(cè),所需檢測(cè)的硬件和軟件配置結(jié)合圖2有如下方面:
1)基本輸入輸出系統(tǒng)
i)情況一:BIOS預(yù)配置參數(shù)與期望的一致,繼續(xù)下一步
ii)情況二:BIOS預(yù)配置參數(shù)與期望的不一致
a)情況1:可在線修改,修改后,繼續(xù)下一步
b)情況2:不可以在線修改,重啟系統(tǒng)并在系統(tǒng)引導(dǎo)階段進(jìn)入BIOS環(huán)境后再修改
2)CPU狀態(tài)
i)讀取CPU狀態(tài),檢查CPU相關(guān)輔助功能是否激活以及參數(shù)指標(biāo);包括:超線程、電源管理模式,QPI狀態(tài),緩存硬件預(yù)取,LLC配置方式:
a)情況一:與期望參數(shù)一致
b)情況二:與期望參數(shù)不一致,又分成以下情況
01)BIOS配置不正確,重新配置BIOS
02)CPU型號(hào)不正確,更換CPU或更換服務(wù)器硬件
ii)記錄并保存CPU相關(guān)特征參數(shù),繼續(xù)下一步
3)內(nèi)存子系統(tǒng)配置
i)檢查DIMM內(nèi)存布局情況是否滿足最大帶寬配置模式
ii)檢查內(nèi)存布局是否滿足NUMA架構(gòu)
iii)檢查并保存內(nèi)存相關(guān)參數(shù),包括:rank,bank,工作頻率和存儲(chǔ)容量
4)網(wǎng)絡(luò)設(shè)備配置
i)檢查網(wǎng)卡裝配情況
ii)檢查網(wǎng)卡裝配布局是否滿足NUMA架構(gòu)
iii)檢查并記錄網(wǎng)卡相關(guān)參數(shù)
5)宿主機(jī)操作系統(tǒng)和內(nèi)核參數(shù)
i)檢查一般內(nèi)核參數(shù)
ii)檢查所需內(nèi)核模塊加載情況
iii)檢查hugepage分配情況
iv)檢查系統(tǒng)交換分區(qū)狀態(tài)
6)虛擬機(jī)配置參數(shù)
i)預(yù)留客戶機(jī)系統(tǒng)內(nèi)存
ii)虛擬CPU親和性設(shè)定
iii)虛擬網(wǎng)卡綁定
17)客戶機(jī)操作系統(tǒng)和內(nèi)核參數(shù)
i)客戶機(jī)內(nèi)存巨頁分配情況
ii)客戶機(jī)操作系統(tǒng)內(nèi)核參數(shù)
8)客戶機(jī)網(wǎng)絡(luò)設(shè)備配置參數(shù)
i)檢查虛擬網(wǎng)卡驅(qū)動(dòng)程序是否正確加載
ii)檢查虛擬網(wǎng)卡驅(qū)動(dòng)程序參數(shù)配置
2、參數(shù)設(shè)定
在應(yīng)用程序所依賴的硬件和軟件環(huán)境檢測(cè)通過后,根據(jù)應(yīng)用程序所需要達(dá)到的功能及性能方面的要求,并結(jié)合系統(tǒng)已具備的功能和性能特征,需要對(duì)硬件和軟降的某些參數(shù)進(jìn)行合理的配置和設(shè)定。結(jié)合圖2這些配置和參數(shù)有如下方面:
1)BIOS參數(shù)設(shè)定
2)宿主機(jī)操作系統(tǒng)及內(nèi)核參數(shù)設(shè)定
3)內(nèi)存頁表映射關(guān)系設(shè)定
4)虛擬機(jī)運(yùn)行參數(shù)設(shè)定
5)客戶機(jī)操作系統(tǒng)及內(nèi)核參數(shù)設(shè)定
6)客戶機(jī)網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序及參數(shù)設(shè)定
3、事件采樣
為了驗(yàn)證系統(tǒng)配置是否合理以及檢查應(yīng)用程序代碼缺陷等方面問題,需要在應(yīng)用程序運(yùn)行時(shí),對(duì)反映CPU硬件運(yùn)行狀態(tài)的時(shí)間進(jìn)行采樣,綜合采樣事件的結(jié)果對(duì)應(yīng)用程序的性能進(jìn)行評(píng)估,根據(jù)評(píng)估的結(jié)果找出系統(tǒng)硬件和軟件配置不合理的地方,以及對(duì)應(yīng)用程序軟件代碼相關(guān)缺陷的定位。事件采樣過程結(jié)合圖3有如下方面:
1)鑒別CPU類型
2)確定對(duì)應(yīng)采樣事件
3)收集采樣事件結(jié)果
4、性能調(diào)優(yōu)
在得到事件采樣結(jié)果后,結(jié)合應(yīng)用程序代碼及其相關(guān)依賴文件等,可以判斷出系統(tǒng)的性能瓶頸,從而幫助開發(fā)人員找出硬件、軟件環(huán)境以及應(yīng)用程序本身對(duì)性能的限制。性能優(yōu)化是一個(gè)持續(xù)迭代的過程,結(jié)合圖4這一過程分成如下子過程:
1)導(dǎo)入采樣事件結(jié)果和應(yīng)用程序源碼、可執(zhí)行文件、編譯過程中生成的中間文件以及所依賴的庫文件等
2)生成事件分析結(jié)果報(bào)告
3)優(yōu)化系統(tǒng)配置
4)定位性能缺陷到具體的代碼
采用了該發(fā)明中的基于NFV設(shè)備的系統(tǒng)性能檢測(cè)及調(diào)優(yōu)方法,通過軟件方式優(yōu)化系統(tǒng)在硬件和軟件方面的配置策略,避免或突破性能瓶頸限制,并指明了NFV設(shè)備系統(tǒng)對(duì)性能有影響的檢測(cè)點(diǎn),提高了對(duì)性能瓶頸的定位效率;有針對(duì)地自動(dòng)配置一系列性能參數(shù),提高了系統(tǒng)部署的自動(dòng)化程度;根據(jù)設(shè)備實(shí)際運(yùn)行的反饋結(jié)果,量化分析系統(tǒng)運(yùn)行的性能特征,并結(jié)合量化結(jié)果找出環(huán)境配置的不合理因數(shù)和代碼缺陷,進(jìn)一步優(yōu)化系統(tǒng)性能,從而改善網(wǎng)絡(luò)虛擬化設(shè)備的網(wǎng)絡(luò)帶寬和系統(tǒng)延遲;根據(jù)采樣結(jié)果自動(dòng)進(jìn)行性能分析,結(jié)合分析結(jié)果把CPU性能開銷自動(dòng)關(guān)聯(lián)到相應(yīng)的有缺陷的源代碼,并且提供圖形化操作界面,方便軟件開發(fā)人員對(duì)缺陷代碼的定位,具有廣泛的應(yīng)用范圍。
在此說明書中,本發(fā)明已參照其特定的實(shí)施例作了描述。但是,很顯然仍可以作出各種修改和變換而不背離本發(fā)明的精神和范圍。因此,說明書和附圖應(yīng)被認(rèn)為是說明性的而非限制性的。