本技術(shù)涉及計(jì)算機(jī)程序領(lǐng)域,尤其涉及一種cpu忙輪詢性能確定方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)。
背景技術(shù):
1、為了降低服務(wù)響應(yīng)延遲和提高吞吐量,后臺(tái)服務(wù)程序可以采用“忙輪詢”的工作模式。“輪詢(polling)”是程序定期檢查某些條件或事件是否發(fā)生的一種編程模式,其實(shí)現(xiàn)方式是通過不斷的循環(huán)檢查特定的條件是否滿足,比如網(wǎng)絡(luò)連接是否有新的數(shù)據(jù),鍵盤、鼠標(biāo)等輸入設(shè)備是否有輸入等,并在條件不滿足的時(shí)候等待一段時(shí)間后再次檢查?!懊喸?busy?polling)”是一種特殊類型的輪詢,在循環(huán)中沒有引入任何形式的等待機(jī)制,而是不斷地檢查條件是否滿足。忙輪詢因?yàn)檠h(huán)中沒有等待,cpu會(huì)一直處于滿負(fù)荷的忙狀態(tài),從而使得程序能獲得極佳的處理效率和極低的響應(yīng)延遲,常用于工作負(fù)荷重、性能要求高的場(chǎng)景,比如大流量網(wǎng)絡(luò)數(shù)據(jù)包處理、股票交易系統(tǒng)等場(chǎng)景。
2、為了降低網(wǎng)絡(luò)io延遲和提高吞吐量,網(wǎng)絡(luò)數(shù)據(jù)包處理程序通常采用忙輪詢的工作模式。這種工作模式下,應(yīng)用程序占用的cpu連續(xù)不間斷地執(zhí)行其工作任務(wù)循環(huán),包括收包、解析、修改、路由、轉(zhuǎn)發(fā)等,因此無法根據(jù)cpu使用率評(píng)估程序的最大處理能力(因?yàn)槊喸兊腸pu使用率一直是100%)。這種情況下,可以使用cpu每秒執(zhí)行程序工作循環(huán)的次數(shù)(nps,loops/s)評(píng)估cpu性能,通過包轉(zhuǎn)發(fā)率(pps,packet/s,每秒數(shù)據(jù)包數(shù)),或更一般的每秒事務(wù)數(shù)(tps,transaction/s)評(píng)估程序的工作效率。然而,nps和tps是非線性的,隨著tps的升高nps會(huì)降低,但是nps降低到某個(gè)閾值后,tps則會(huì)因數(shù)據(jù)包得不到及時(shí)處理而急劇下滑(因?yàn)榫W(wǎng)絡(luò)擁塞和失敗重試),從而性能崩潰,因此,目前并無能夠評(píng)估cpu忙輪詢性能的方法。
技術(shù)實(shí)現(xiàn)思路
1、為了解決上述技術(shù)問題或者至少部分地解決上述技術(shù)問題,本技術(shù)提供了一種cpu忙輪詢性能確定方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)。
2、第一方面,本技術(shù)提供了一種cpu忙輪詢性能確定方法,包括:
3、獲取忙輪詢程序空載時(shí)的一次程序工作循環(huán)需要執(zhí)行的第一循環(huán)指令數(shù)l0及忙輪詢程序完成一個(gè)基本事務(wù)需要執(zhí)行的第一事物指令數(shù)k;
4、基于所述第一循環(huán)指令數(shù)l0、所述第一事物指令數(shù)k及預(yù)設(shè)的殘差計(jì)算公式確定第一殘差數(shù)據(jù)r;
5、若所述第一殘差數(shù)據(jù)r小于預(yù)設(shè)第一閾值,基于所述第一循環(huán)指令數(shù)l0、所述第一事物指令數(shù)k及預(yù)設(shè)的極限性能計(jì)算公式確定cpu忙輪詢程序的第一極限性能值tm1。
6、可選地,獲取忙輪詢程序空載時(shí)一次程序工作循環(huán)需要執(zhí)行的第一循環(huán)指令數(shù)l0,包括:
7、獲取多個(gè)采樣點(diǎn)數(shù)據(jù),所述采樣點(diǎn)數(shù)據(jù)包括:針對(duì)cpu采集的多組每秒執(zhí)行程序工作循環(huán)的次數(shù)nps數(shù)據(jù)和忙輪詢程序每秒處理的事務(wù)數(shù)tps數(shù)據(jù);
8、基于包含所述nps數(shù)據(jù)和所述tps數(shù)據(jù)的多個(gè)所述采樣點(diǎn)數(shù)據(jù)確定第一中間參數(shù)a1、第二中間參數(shù)b1、第三中間參數(shù)c1、第四中間參數(shù)a2、第五中間參數(shù)b2和第六中間參數(shù)c2;
9、基于所述第一中間參數(shù)a1、所述第二中間參數(shù)b1、所述第三中間參數(shù)c1、所述第四中間參數(shù)a2、所述第五中間參數(shù)b2、所述第六中間參數(shù)c2及預(yù)設(shè)的循環(huán)指令數(shù)計(jì)算公式計(jì)算所述第一循環(huán)指令數(shù)l0。
10、可選地,獲取忙輪詢程序完成一個(gè)基本事務(wù)需要執(zhí)行的第一事物指令數(shù)k,包括:
11、獲取多個(gè)采樣點(diǎn)數(shù)據(jù),所述采樣點(diǎn)數(shù)據(jù)包括:針對(duì)cpu采集的多組每秒執(zhí)行程序工作循環(huán)的次數(shù)nps數(shù)據(jù)和忙輪詢程序每秒處理的事務(wù)數(shù)tps數(shù)據(jù);
12、基于包含所述nps數(shù)據(jù)和所述tps數(shù)據(jù)的多個(gè)所述采樣點(diǎn)數(shù)據(jù)確定第一中間參數(shù)a1、第二中間參數(shù)b1、第三中間參數(shù)c1、第四中間參數(shù)a2、第五中間參數(shù)b2和第六中間參數(shù)c2;
13、基于所述第一中間參數(shù)a1、所述第二中間參數(shù)b1、所述第三中間參數(shù)c1、所述第四中間參數(shù)a2、所述第五中間參數(shù)b2、所述第六中間參數(shù)c2及預(yù)設(shè)的事物指令數(shù)計(jì)算公式計(jì)算所述第一事物指令數(shù)k。
14、可選地,所述方法還包括:
15、若所述第一殘差數(shù)據(jù)r大于預(yù)設(shè)第一閾值,獲取對(duì)cpu每秒執(zhí)行指令數(shù)ips進(jìn)行采樣得到的第一ips數(shù)據(jù);
16、對(duì)所述第一ips數(shù)據(jù)進(jìn)行校正,得到第二ips數(shù)據(jù);
17、基于所述第一循環(huán)指令數(shù)、所述第一事物指令數(shù)、所述第二ips數(shù)據(jù)及預(yù)設(shè)的極限性能計(jì)算公式確定cpu忙輪詢程序的第二極限性能值。
18、可選地,對(duì)所述第一ips數(shù)據(jù)進(jìn)行校正,得到第二ips數(shù)據(jù),包括:
19、計(jì)算所述第一ips數(shù)據(jù)的第一ips平均值和ips標(biāo)準(zhǔn)差;
20、判斷所述ips標(biāo)準(zhǔn)差是否小于預(yù)設(shè)第二閾值;
21、若所述ips標(biāo)準(zhǔn)差小于預(yù)設(shè)第二閾值,確定校正完成。
22、可選地,對(duì)所述第一ips數(shù)據(jù)進(jìn)行校正,得到第二ips數(shù)據(jù),還包括:
23、若所述ips標(biāo)準(zhǔn)差大于或等于預(yù)設(shè)第二閾值,則剔除偏離所述第一ips平均值最大的采樣點(diǎn);
24、若剔除采樣點(diǎn)后剩余的采樣點(diǎn)數(shù)量小于預(yù)設(shè)數(shù)量,則補(bǔ)充采樣點(diǎn);
25、重新執(zhí)行計(jì)算所述第一ips采樣數(shù)據(jù)中各采樣點(diǎn)的第一ips平均值和ips標(biāo)準(zhǔn)差的步驟,直至所述標(biāo)準(zhǔn)差小于預(yù)設(shè)第二閾值。
26、可選地,基于所述第一循環(huán)指令數(shù)、所述第一事物指令數(shù)、所述第二ips數(shù)據(jù)及預(yù)設(shè)的極限性能計(jì)算公式確定cpu忙輪詢程序的第二極限性能值,包括:
27、基于所述第二ips數(shù)據(jù)確定第二ips平均值
28、獲取忙輪詢程序空載時(shí)對(duì)cpu每秒執(zhí)行指令數(shù)ips進(jìn)行測(cè)量得到的ips測(cè)量值i0;
29、獲取忙輪詢程序空載時(shí)對(duì)cpu每秒執(zhí)行程序工作循環(huán)的次數(shù)nps進(jìn)行測(cè)量得到的空載nps數(shù)據(jù)n0;
30、基于所述第一循環(huán)指令數(shù)、所述第一事物指令數(shù)、所述第二ips平均值所述ips測(cè)量值i0、所述空載nps數(shù)據(jù)n0及預(yù)設(shè)的極限性能計(jì)算公式,確定cpu忙輪詢程序的第二極限性能值tm2。
31、第二方面,本技術(shù)提供了一種cpu忙輪詢性能確定方法,包括:
32、第一獲取模塊,用于獲取忙輪詢程序空載時(shí)的一次程序工作循環(huán)需要執(zhí)行的第一循環(huán)指令數(shù)l0及忙輪詢程序完成一個(gè)基本事務(wù)需要執(zhí)行的第一事物指令數(shù)k;
33、第一確定模塊,用于基于所述第一循環(huán)指令數(shù)l0、所述第一事物指令數(shù)k及預(yù)設(shè)的殘差計(jì)算公式確定第一殘差數(shù)據(jù)r;
34、第二確定模塊,用于若所述第一殘差數(shù)據(jù)r小于預(yù)設(shè)第一閾值,基于所述第一循環(huán)指令數(shù)l0、所述第一事物指令數(shù)k及預(yù)設(shè)的極限性能計(jì)算公式確定cpu忙輪詢程序的第一極限性能值tm1。
35、可選地,所述第一獲取模塊包括:
36、第一獲取單元,用于獲取多個(gè)采樣點(diǎn)數(shù)據(jù),所述采樣點(diǎn)數(shù)據(jù)包括:針對(duì)cpu采集的多組每秒執(zhí)行程序工作循環(huán)的次數(shù)nps數(shù)據(jù)和忙輪詢程序每秒處理的事務(wù)數(shù)tps數(shù)據(jù);
37、第一確定單元,用于基于包含所述nps數(shù)據(jù)和所述tps數(shù)據(jù)的多個(gè)所述采樣點(diǎn)數(shù)據(jù)確定第一中間參數(shù)a1、第二中間參數(shù)b1、第三中間參數(shù)c1、第四中間參數(shù)a2、第五中間參數(shù)b2和第六中間參數(shù)c2;
38、第一計(jì)算單元,用于基于所述第一中間參數(shù)a1、所述第二中間參數(shù)b1、所述第三中間參數(shù)c1、所述第四中間參數(shù)a2、所述第五中間參數(shù)b2、所述第六中間參數(shù)c2及預(yù)設(shè)的循環(huán)指令數(shù)計(jì)算公式計(jì)算所述第一循環(huán)指令數(shù)l0。
39、可選地,所述第一獲取模塊包括:
40、第二獲取單元,用于獲取多個(gè)采樣點(diǎn)數(shù)據(jù),所述采樣點(diǎn)數(shù)據(jù)包括:針對(duì)cpu采集的多組每秒執(zhí)行程序工作循環(huán)的次數(shù)nps數(shù)據(jù)和忙輪詢程序每秒處理的事務(wù)數(shù)tps數(shù)據(jù);
41、第二確定單元,用于基于包含所述nps數(shù)據(jù)和所述tps數(shù)據(jù)的多個(gè)所述采樣點(diǎn)數(shù)據(jù)確定第一中間參數(shù)a1、第二中間參數(shù)b1、第三中間參數(shù)c1、第四中間參數(shù)a2、第五中間參數(shù)b2和第六中間參數(shù)c2;
42、第二計(jì)算單元,用于基于所述第一中間參數(shù)a1、所述第二中間參數(shù)b1、所述第三中間參數(shù)c1、所述第四中間參數(shù)a2、所述第五中間參數(shù)b2、所述第六中間參數(shù)c2及預(yù)設(shè)的事物指令數(shù)計(jì)算公式計(jì)算所述第一事物指令數(shù)k。
43、可選地,所述裝置還包括:
44、第二獲取模塊,用于若所述第一殘差數(shù)據(jù)r大于預(yù)設(shè)第一閾值,獲取對(duì)cpu每秒執(zhí)行指令數(shù)ips進(jìn)行采樣得到的第一ips數(shù)據(jù);
45、校正模塊,用于對(duì)所述第一ips數(shù)據(jù)進(jìn)行校正,得到第二ips數(shù)據(jù);
46、第一計(jì)算模塊,用于基于所述第一循環(huán)指令數(shù)、所述第一事物指令數(shù)、所述第二ips數(shù)據(jù)及預(yù)設(shè)的極限性能計(jì)算公式確定cpu忙輪詢程序的第二極限性能值。
47、可選地,所述校正模塊包括:
48、第三計(jì)算單元,用于計(jì)算所述第一ips數(shù)據(jù)的第一ips平均值和ips標(biāo)準(zhǔn)差;
49、判斷單元,用于判斷所述ips標(biāo)準(zhǔn)差是否小于預(yù)設(shè)第二閾值;
50、第三確定單元,用于若所述ips標(biāo)準(zhǔn)差小于預(yù)設(shè)第二閾值,確定校正完成。
51、可選地,所述校正模塊還包括:
52、剔除單元,用于若所述ips標(biāo)準(zhǔn)差大于或等于預(yù)設(shè)第二閾值,則剔除偏離所述第一ips平均值最大的采樣點(diǎn);
53、補(bǔ)充單元,用于若剔除采樣點(diǎn)后剩余的采樣點(diǎn)數(shù)量小于預(yù)設(shè)數(shù)量,則補(bǔ)充采樣點(diǎn);
54、重新計(jì)算單元,用于重新執(zhí)行計(jì)算所述第一ips采樣數(shù)據(jù)中各采樣點(diǎn)的第一ips平均值和ips標(biāo)準(zhǔn)差的步驟,直至所述標(biāo)準(zhǔn)差小于預(yù)設(shè)第二閾值。
55、可選地,所述第一計(jì)算模塊包括:
56、第四確定單元,用于基于所述第二ips數(shù)據(jù)確定第二ips平均值
57、第三獲取單元,用于獲取忙輪詢程序空載時(shí)對(duì)cpu每秒執(zhí)行指令數(shù)ips進(jìn)行測(cè)量得到的ips測(cè)量值i0;
58、第四獲取單元,用于獲取忙輪詢程序空載時(shí)對(duì)cpu每秒執(zhí)行程序工作循環(huán)的次數(shù)nps進(jìn)行測(cè)量得到的空載nps數(shù)據(jù)n0;
59、第五確定單元,用于基于所述第一循環(huán)指令數(shù)、所述第一事物指令數(shù)、所述第二ips平均值所述ips測(cè)量值i0、所述空載nps數(shù)據(jù)n0及預(yù)設(shè)的極限性能計(jì)算公式,確定cpu忙輪詢程序的第二極限性能值tm2。
60、第三方面,本技術(shù)提供了一種電子設(shè)備,包括處理器、通信接口、存儲(chǔ)器和通信總線,其中,處理器,通信接口,存儲(chǔ)器通過通信總線完成相互間的通信;
61、存儲(chǔ)器,用于存放計(jì)算機(jī)程序;
62、處理器,用于執(zhí)行存儲(chǔ)器上所存放的程序時(shí),實(shí)現(xiàn)第一方面任一所述的cpu忙輪詢性能確定方法。
63、第四方面,本技術(shù)提供了一種計(jì)算機(jī)可讀存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上存儲(chǔ)有cpu忙輪詢性能確定方法的程序,所述cpu忙輪詢性能確定方法的程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)第一方面任一所述的cpu忙輪詢性能確定方法的步驟。
64、本技術(shù)實(shí)施例提供的上述技術(shù)方案與現(xiàn)有技術(shù)相比具有如下優(yōu)點(diǎn):
65、通過本發(fā)明可以確定cpu忙輪詢程序的第一極限性能值,基于第一極限性能值能夠動(dòng)態(tài)預(yù)測(cè)基于dpvs構(gòu)建的四層負(fù)載均衡服務(wù)的極限處理能力,幫助服務(wù)管理員合理規(guī)劃和調(diào)整服務(wù)資源,使得服務(wù)能夠使用最少的資源配置提供面向公司所有業(yè)務(wù)的穩(wěn)定的負(fù)載均衡服務(wù)能力。