本發(fā)明涉及一種面向分布式系統(tǒng)性能測試的測試資源管理方法,屬于軟件技術(shù)領(lǐng)域。
背景技術(shù):分布式系統(tǒng)以客戶端/服務(wù)器或?yàn)g覽器/服務(wù)器的方式部署,此類系統(tǒng)的性能測試通過自動化的測試工具模擬正常、峰值以及異常的負(fù)載條件來對服務(wù)器端系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測試,驗(yàn)證系統(tǒng)能否達(dá)到用戶提出的性能指標(biāo),同時發(fā)現(xiàn)系統(tǒng)存在的性能瓶頸。性能測試根據(jù)測試需求模擬不同規(guī)模的負(fù)載量,需要大量的測試軟件和硬件投入,是典型的資源密集型工作。不同規(guī)模負(fù)載的測試需求意味著性能測試所需要的軟硬件資源規(guī)模是動態(tài)變化的,而根據(jù)峰值需求配置軟硬件資源將會帶來大量的資源投入和嚴(yán)重的資源浪費(fèi)。云計算是一種新型的計算模式,具有資源池化管理、多租戶共享、彈性供給等特性,本質(zhì)上是一種新型的資源管理和使用模式。云計算為系統(tǒng)性能測試提供了新的發(fā)展機(jī)遇?;谠朴嬎愕男阅軠y試服務(wù)屏蔽了軟硬件測試資源的管理復(fù)雜性,并將測試資源集中管理,形成測試資源池。測試資源池可以同時為多個租戶提供測試服務(wù),稱為多租戶共享。這種共享模式在提高資源利用率的同時,也帶來了租戶之間的性能干擾問題。當(dāng)測試資源相對有限,或者租戶對測試資源的使用量增加時,不同租戶之間對共享測試資源的爭用會造成性能干擾,進(jìn)而導(dǎo)致租戶的服務(wù)等級目標(biāo)(Service-LevelObjective,簡稱SLO)違約,影響租戶服務(wù)質(zhì)量的公平性。例如,性能干擾會導(dǎo)致無法在租戶期望的時間內(nèi)完成測試任務(wù)。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明的目的在于提供一種面向分布式系統(tǒng)性能測試的測試資源管理方法,在通過多租戶共享提高測試資源利用率的同時,避免租戶之間的性能干擾,保障租戶服務(wù)等級目標(biāo)要求。本發(fā)明技術(shù)解決方案:為了實(shí)現(xiàn)上述目的,本發(fā)明方法主要包括以下要素:測試資源、測試資源池、負(fù)載發(fā)生器、計算機(jī)服務(wù)器、等待隊(duì)列、測試任務(wù)。(1)測試資源測試資源表示性能測試所需的軟件、硬件資源。(2)測試資源池測試資源池是測試資源的池化體現(xiàn),它包括一組測試資源。(3)測試任務(wù)測試任務(wù)定義負(fù)載發(fā)生量、測試時長以及測試期限(租戶期望測試任務(wù)完成的時間,即SLO)等,由租戶提交給測試資源執(zhí)行。(4)負(fù)載發(fā)生器負(fù)載發(fā)生器是測試資源中的軟件資源,用于生成測試任務(wù)所要求的負(fù)載。(5)計算機(jī)服務(wù)器計算機(jī)服務(wù)器是運(yùn)行負(fù)載發(fā)生器的硬件資源,可以是虛擬機(jī)或物理機(jī)。在本發(fā)明中,將安裝了負(fù)載發(fā)生器的計算機(jī)服務(wù)器作為測試資源的基本單元。(6)等待隊(duì)列測試資源包含一個等待隊(duì)列,用于對測試任務(wù)進(jìn)行排隊(duì)。當(dāng)測試資源正在執(zhí)行測試任務(wù)時,新提交的測試任務(wù)將進(jìn)入其等待隊(duì)列。在上述要素基礎(chǔ)上,本發(fā)明方法使用等待、插入、分發(fā)、初始化四種測試資源管理策略,進(jìn)行測試任務(wù)的準(zhǔn)入和調(diào)度,其中:(1)等待策略表示將測試任務(wù)加入到給定測試資源的等待隊(duì)列的隊(duì)尾。(2)插入策略表示將測試任務(wù)放置在給定測試資源的等待隊(duì)列的某個位置。該策略將影響等待隊(duì)列中已經(jīng)存在的測試任務(wù)的等待時間。(3)分發(fā)策略表示將測試任務(wù)的負(fù)載發(fā)生量進(jìn)行等量劃分,分發(fā)給多個測試資源并行執(zhí)行。(4)初始化策略將測試任務(wù)分配給未執(zhí)行任何測試任務(wù)的空閑測試資源。利用上述策略,針對每個租戶提交的測試任務(wù),本發(fā)明通過以下步驟實(shí)現(xiàn)測試任務(wù)的準(zhǔn)入和調(diào)度:1、統(tǒng)計測試資源池中所有正在執(zhí)行測試任務(wù)的非空閑測試資源;2、針對步驟1中統(tǒng)計得到的非空閑測試資源,根據(jù)每一個測試資源的配置計算其最大負(fù)載發(fā)生量并進(jìn)行排序,得到升序排列集合;3、針對步驟2得到的集合,將集合中各個測試資源的最大負(fù)載發(fā)生量與新提交測試任務(wù)的負(fù)載發(fā)生量進(jìn)行比較,搜索最大負(fù)載發(fā)生量比測試任務(wù)所需負(fù)載發(fā)生量大的第一個測試資源;如果存在,則進(jìn)入步驟4,否則進(jìn)入步驟6;4、從集合中步驟3所選的測試資源至最后一個測試資源進(jìn)行遍歷,判斷是否存在測試資源,能夠通過等待策略或者插入策略滿足該測試任務(wù)的服務(wù)水平目標(biāo);如果存在,則由所選測試資源執(zhí)行測試任務(wù),否則進(jìn)入步驟5;5、遍歷集合中位于步驟3所選測試資源之前的所有測試資源,即遍歷最大負(fù)載發(fā)生量小于測試任務(wù)的負(fù)載發(fā)生量的測試資源,判斷是否存在兩個測試資源,能夠通過分發(fā)策略和等待策略滿足測試任務(wù)的服務(wù)水平目標(biāo);如果存在,則由所選測試資源執(zhí)行測試任務(wù),否則進(jìn)入步驟6;6、遍歷測試資源池中的所有空閑測試資源,判斷是否存在一個空閑測試資源,能夠通過初始化策略滿足測試任務(wù)的服務(wù)水平目標(biāo);如果存在,則由所選測試資源執(zhí)行測試任務(wù);如果不存在,則判斷是否存在一組空閑測試資源,能夠通過分發(fā)策略和初始化策略,滿足測試任務(wù)的服務(wù)水平目標(biāo);如果存在,則由所選測試資源執(zhí)行測試任務(wù);如果不存在,則拒絕執(zhí)行測試任務(wù)。本發(fā)明提出一種面向分布式系統(tǒng)性能測試的測試資源管理方法,針對多租戶共享的測試資源,進(jìn)行租戶測試任務(wù)的準(zhǔn)入和調(diào)度,保障了租戶服務(wù)質(zhì)量。本發(fā)明方法具有以下優(yōu)點(diǎn):(1)本發(fā)明方法通過引入四種不同的資源管理策略對測試任務(wù)進(jìn)行準(zhǔn)入和調(diào)度,在實(shí)現(xiàn)測試資源共享的同時,保障了租戶服務(wù)質(zhì)量。(2)本發(fā)明方法根據(jù)測試任務(wù)對測試資源的需求,實(shí)現(xiàn)測試資源的彈性供給,同時,能夠適應(yīng)測試資源池規(guī)模的動態(tài)變化,滿足云計算的彈性資源管理需求。附圖說明圖1為本發(fā)明的基于虛擬機(jī)的測試資源池的基本組成結(jié)構(gòu);圖2為本發(fā)明中等待策略流程圖;圖3為本發(fā)明中插入策略流程圖;圖4為本發(fā)明中分發(fā)策略流程圖;圖5為本發(fā)明中初始化策略流程圖;圖6為本發(fā)明方法的實(shí)現(xiàn)流程圖。具體實(shí)施方式以下結(jié)合具體實(shí)施例和附圖對本發(fā)明作更詳細(xì)的說明。本發(fā)明實(shí)施例的使用環(huán)境是基于虛擬機(jī)的分布式系統(tǒng)性能測試平臺,該平臺使用云計算模式中常用的虛擬機(jī)(VM)搭建測試資源池。在本實(shí)施例的測試資源池中,每個虛擬機(jī)實(shí)例代表一個測試資源,并部署一個負(fù)載發(fā)生器實(shí)例以及等待隊(duì)列,結(jié)構(gòu)如圖1所示。進(jìn)一步,本發(fā)明方法針對租戶提交的測試任務(wù)進(jìn)行準(zhǔn)入和調(diào)度,保障租戶的服務(wù)質(zhì)量。在基于虛擬機(jī)的分布式系統(tǒng)性能測試平臺中,針對測試資源池中的每個虛擬機(jī)實(shí)例的具體配置(CPU、內(nèi)存、網(wǎng)絡(luò)等),估算該測試資源的最大負(fù)載發(fā)生量;租戶通過平臺設(shè)置測試任務(wù)的負(fù)載發(fā)生量、測試時長以及測試期限等信息。當(dāng)測試任務(wù)提交時,本發(fā)明方法結(jié)合測試資源的最大負(fù)載發(fā)生量評估值與測試任務(wù)的相關(guān)信息,利用等待、插入、分發(fā)、初始化等四種測試資源管理策略,進(jìn)行測試任務(wù)的準(zhǔn)入和調(diào)度。在本實(shí)施例中,等待、插入、分發(fā)、初始化等四種測試資源管理策略的具體流程如下:1)等待策略等待策略的具體實(shí)施方式如圖2所示。首先,遍歷測試資源池內(nèi)所有正在執(zhí)行測試任務(wù)的虛擬機(jī)實(shí)例,判斷是否存在一個虛擬機(jī)實(shí)例,測試任務(wù)加入其等待隊(duì)列后,能夠保證該任務(wù)的測試期限要求。如果存在,則將測試任務(wù)加入所選虛擬機(jī)實(shí)例的等待隊(duì)列的隊(duì)尾,并返回True。如果不存在,則返回False。2)插入策略插入策略的具體實(shí)施方式如圖3所示。首先,遍歷測試資源池內(nèi)所有正在執(zhí)行測試任務(wù)的虛擬機(jī)實(shí)例,判斷是否存在一個虛擬機(jī)實(shí)例,通過對其等待隊(duì)列中已經(jīng)接受的測試任務(wù)的執(zhí)行時間進(jìn)行調(diào)整,產(chǎn)生空閑時間,并將新提交的測試任務(wù)安排在空閑時間內(nèi)從而滿足隊(duì)列內(nèi)所有任務(wù)的測試期限要求。如果存在,則將測試任務(wù)插入到所選虛擬機(jī)實(shí)例的等待隊(duì)列,并返回True。如果不存在,則返回False。3)分發(fā)策略分發(fā)策略的具體實(shí)施方式如圖4所示。首先,將測試任務(wù)依照負(fù)載發(fā)生量等分為若干子任務(wù),然后遍歷測試資源池內(nèi)所有正在執(zhí)行測試任務(wù)的虛擬機(jī)實(shí)例,判斷是否存在與子任務(wù)等量的虛擬機(jī)實(shí)例,可以按照等待策略執(zhí)行這些子任務(wù),并保證所有子任務(wù)同時啟動。如果存在,則將子任務(wù)分配到的所選虛擬機(jī)實(shí)例的等待隊(duì)列末尾,并返回True。如果不存在,則返回False。4)初始化策略初始化策略的具體實(shí)施方式如圖5所示。首先,遍歷測試資源池內(nèi)所有空閑虛擬機(jī)實(shí)例,判斷是否存在一個虛擬機(jī)實(shí)例,能夠保證測試任務(wù)的測試期限要求。如果存在,則將所選虛擬機(jī)實(shí)例進(jìn)行初始化,啟動負(fù)載發(fā)生器,并將測試任務(wù)加入所選虛擬機(jī)實(shí)例的等待隊(duì)列的隊(duì)尾,返回True。如果不存在,則返回False。利用上述策略,如圖6所示,本實(shí)施例的具體實(shí)現(xiàn)流程如下:1、統(tǒng)計測試資源池中所有正在執(zhí)行測試任務(wù)的虛擬機(jī)實(shí)例,數(shù)量為N;2、針對步驟1中的N個虛擬機(jī)實(shí)例,根據(jù)虛擬機(jī)的資源配置計算虛擬機(jī)實(shí)例VMi的最大負(fù)載發(fā)生量LCmaxi(1≤i≤N)并進(jìn)行升序排序,得到N個虛擬機(jī)實(shí)例的升序排列集合,使得LCmaxi<LCmaxj,且i<j;3、針對步驟2得到的集合,將集合中各虛擬機(jī)實(shí)例的最大負(fù)載發(fā)生量LCmaxi與新提交的測試任務(wù)的負(fù)載發(fā)生量LCnew進(jìn)行對比,判斷是否能夠找到第K個虛擬機(jī)實(shí)例VMK,使得LCmaxK-1≤LCnew<LCmaxK;如果存在,則進(jìn)入步驟4,否則進(jìn)入步驟6;4、對集合中的VMK至VMN進(jìn)行遍歷,判斷是否存在一個虛擬機(jī)實(shí)例,能夠通過等待策略或者插入策略滿足測試任務(wù)的服務(wù)水平目標(biāo);如果存在,則由所選虛擬機(jī)實(shí)例執(zhí)行測試任務(wù),否則進(jìn)入步驟5;5、對集合中的VM1至VMK-1進(jìn)行遍歷,判斷是否存VMe和VMf(0<e<f<K),能夠通過分發(fā)策略和等待策略滿足測試任務(wù)的服務(wù)水平目標(biāo);如果存在,則由所選的兩個虛擬機(jī)實(shí)例執(zhí)行測試任務(wù),否則進(jìn)入步驟6;6、遍歷測試資源池中的所有空閑虛擬機(jī)實(shí)例,判斷是否存在一個空閑虛擬機(jī)實(shí)例,能夠通過初始化策略滿足測試任務(wù)的服務(wù)水平目標(biāo);如果存在,則由所選虛擬機(jī)實(shí)例執(zhí)行新的測試任務(wù);如果不存在,則遍歷測試資源池中的所有空閑虛擬機(jī)實(shí)例,判斷是否存在一組空閑虛擬機(jī)實(shí)例,能夠通過分發(fā)策略和初始化策略滿足測試任務(wù)的服務(wù)水平目標(biāo);如果存在,則由所選虛擬機(jī)實(shí)例執(zhí)行測試任務(wù);如果不存在,則拒絕執(zhí)行測試任務(wù)。本發(fā)明未詳細(xì)闡述部分屬于本領(lǐng)域公知技術(shù)。以上所述,僅為本發(fā)明部分具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本領(lǐng)域的人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。