徐 健
(中國(guó)移動(dòng)通信集團(tuán)上海有限公司,上海 200060)
隨著電信運(yùn)營(yíng)商深層次多方位市場(chǎng)發(fā)展的需要,新業(yè)務(wù)不斷推出,用戶數(shù)量也在快速穩(wěn)定地持續(xù)增長(zhǎng)。計(jì)費(fèi)資費(fèi)方式的多樣化以及計(jì)費(fèi)話單量的快速增加,使計(jì)費(fèi)系統(tǒng)的主機(jī)負(fù)載能力面臨巨大的挑戰(zhàn)。特別是在圣誕、元旦和春節(jié)等業(yè)務(wù)高峰期,計(jì)費(fèi)系統(tǒng)的業(yè)務(wù)量達(dá)到日常業(yè)務(wù)量幾倍以上。在這樣的情況下,在系統(tǒng)運(yùn)維中一方面需要有效地控制并降低業(yè)務(wù)受影響的風(fēng)險(xiǎn),切實(shí)保證業(yè)務(wù)的安全穩(wěn)定運(yùn)行;另一方面又要對(duì)系統(tǒng)資源進(jìn)行合理有效的管理和配置,避免資源的浪費(fèi)。因此,需要對(duì)計(jì)費(fèi)系統(tǒng)的負(fù)載模型進(jìn)行深入研究,用以指導(dǎo)實(shí)際的生產(chǎn)維護(hù),實(shí)現(xiàn)精確運(yùn)維與穩(wěn)定運(yùn)維。
文獻(xiàn)[1]在分析服務(wù)器負(fù)載特性的基礎(chǔ)上,結(jié)合應(yīng)用時(shí)間序列提出了服務(wù)器負(fù)載預(yù)測(cè)方法;文獻(xiàn)[2]提出一種預(yù)測(cè)主機(jī)負(fù)載的線性時(shí)間序列模型法,雖適用于各類主機(jī),但是該方法沒有明確各種預(yù)測(cè)模型的預(yù)測(cè)能力;文獻(xiàn)[3]使用聚合歷史時(shí)間序列采集點(diǎn)的方法,對(duì)未來(lái)主機(jī)運(yùn)行負(fù)載進(jìn)行了預(yù)測(cè);文獻(xiàn)[4-5]與文獻(xiàn)[3]類似,也是基于歷史主機(jī)負(fù)載數(shù)據(jù)對(duì)主機(jī)負(fù)載進(jìn)行預(yù)測(cè);文獻(xiàn)[6]對(duì)9種預(yù)測(cè)模型進(jìn)行了分析與評(píng)估,對(duì)于時(shí)間序列 AR模型的評(píng)價(jià)較高。可以看到,在上述文獻(xiàn)中提出的主機(jī)負(fù)載的預(yù)測(cè)方法與模型,其核心是基于主機(jī)負(fù)載的歷史數(shù)據(jù)記錄。這類預(yù)測(cè)方法很難預(yù)測(cè)由于突發(fā)業(yè)務(wù)流量引起的主機(jī)負(fù)載突變。文獻(xiàn)[7]分析集群節(jié)能配置策略前簡(jiǎn)單介紹了一種基于前一個(gè)時(shí)刻服務(wù)請(qǐng)求情況的在線負(fù)載預(yù)測(cè)方法。同樣較難預(yù)測(cè)突發(fā)業(yè)務(wù)流量引起的主機(jī)負(fù)載突變。
本文從引起主機(jī)負(fù)載變化的最基本因素——業(yè)務(wù)流量的變化角度出發(fā),研究主機(jī)負(fù)載與計(jì)費(fèi)業(yè)務(wù)流量之間的內(nèi)在關(guān)系,建立一種新的負(fù)載模型。
計(jì)費(fèi)系統(tǒng)負(fù)載主要包含主機(jī)的CPU負(fù)載、內(nèi)存負(fù)載以及存儲(chǔ)設(shè)備的I/O負(fù)載。由于主機(jī)的CPU負(fù)載直接影響到計(jì)費(fèi)系統(tǒng)的業(yè)務(wù)處理效率,因此在研究過(guò)程中重點(diǎn)是建立計(jì)費(fèi)系統(tǒng)主機(jī)的CPU負(fù)載模型。
由于不同的業(yè)務(wù)處理過(guò)程對(duì)系統(tǒng)資源的消耗情況各異,因此在研究計(jì)費(fèi)主機(jī)CPU負(fù)載模型之前,首先需要對(duì)同一臺(tái)主機(jī)上的業(yè)務(wù)流程進(jìn)行分解,從而分析每一個(gè)業(yè)務(wù)流程的影響。對(duì)于常見的電信運(yùn)營(yíng)商計(jì)費(fèi)系統(tǒng),其主機(jī)上的業(yè)務(wù)可以按2種維度進(jìn)行細(xì)分:(1)從業(yè)務(wù)類型維度進(jìn)行細(xì)分,可以分為對(duì)語(yǔ)音話單、短信話單、無(wú)線寬帶話單、上網(wǎng)流量話單等業(yè)務(wù)。(2)從處理流程維度進(jìn)行細(xì)分,可以對(duì)于不同類型的話單有可以分為預(yù)處理、剔重、解碼、解析、批價(jià)、入庫(kù)等處理流程與階段。
特定業(yè)務(wù)可能運(yùn)行在不同的主機(jī)上,同時(shí)業(yè)務(wù)處理本身也可能發(fā)生變化,為了在不斷變化的環(huán)境下準(zhǔn)確地計(jì)算該業(yè)務(wù)的CPU負(fù)載,需要找到一個(gè)相對(duì)恒定的量來(lái)描述單筆業(yè)務(wù)處理的負(fù)載情況。
文獻(xiàn)[8]介紹了面向Web服務(wù)器集群的性能評(píng)價(jià)方法,但是該方法無(wú)法用來(lái)評(píng)價(jià)計(jì)費(fèi)主機(jī)的性能;文獻(xiàn)[9]針對(duì)承載銀行中間件業(yè)務(wù)的主機(jī)給出相應(yīng)性能模型和測(cè)量方法,由于與計(jì)費(fèi)業(yè)務(wù)處理邏輯上有很大差異,因此也無(wú)法直接用來(lái)評(píng)價(jià)計(jì)費(fèi)主機(jī)的性能。因此,研究人員根據(jù)實(shí)際情況參考文獻(xiàn)[10]中tpmC(transactions per minute-C)值的評(píng)價(jià)方法:對(duì)于某一個(gè)特定的處理步驟i,如果可以計(jì)算得到該步驟處理單筆業(yè)務(wù)所需要的tpmC值,將該值定義為該處理階段的tpmC當(dāng)量iτ,那么該處理步驟在某一時(shí)刻的CPU負(fù)載為: cpui=xi×τi/tpmC 。其中,tpmC為該主機(jī)標(biāo)稱的tpmC值;τi為第i個(gè)處理階段的tpmC當(dāng)量;xi為第i個(gè)處理階段在某一個(gè)時(shí)刻的每分鐘業(yè)務(wù)量。
一方面,由于在單臺(tái)主機(jī)上同時(shí)運(yùn)行著多個(gè)處理階段(進(jìn)程),每一個(gè)處理進(jìn)程各自負(fù)責(zé)本身的處理步驟,其處理單筆業(yè)務(wù)所需要的tpmC當(dāng)量不盡相同;另一方面,在同一臺(tái)主機(jī)上同時(shí)包含部分特殊進(jìn)程,該類進(jìn)程是固定的系統(tǒng)進(jìn)程。綜合考慮這2種情況,對(duì)于整臺(tái)主機(jī),其CPU負(fù)載情況為:

其中,c值為系統(tǒng)進(jìn)程所占用的CPU資源;tpmC為該主機(jī)標(biāo)稱的tpmC值;iτ為第i個(gè)處理階段的tpmC當(dāng)量;xi為第i個(gè)處理階段在某一個(gè)時(shí)刻的每分鐘業(yè)務(wù)量。接下來(lái)就是確定計(jì)費(fèi)系統(tǒng)中每一個(gè)處理階段的tpmC當(dāng)量iτ的值。
為了分析、尋找特定主機(jī)上各業(yè)務(wù)進(jìn)程所對(duì)應(yīng)的tpmC當(dāng)量。需要從各業(yè)務(wù)進(jìn)程的業(yè)務(wù)流量與該進(jìn)程CPU負(fù)載之間存在的聯(lián)系進(jìn)行分析。
從圖 1、圖 2看出,特定業(yè)務(wù)的業(yè)務(wù)量與相關(guān)進(jìn)程的CPU使用率之間密切相關(guān),且存在y=kx+b的線性關(guān)系。

圖1 業(yè)務(wù)量與CPU對(duì)比

圖2 業(yè)務(wù)量與CPU趨勢(shì)分析
由前面的公式 cpui=xi×τi/tpmC ,cpui=k· xi+b可以得到:

使用上式可以計(jì)算出每一個(gè)業(yè)務(wù)進(jìn)程的tpmC當(dāng)量iτ。
在計(jì)算出iτ后,就可以計(jì)算一臺(tái)主機(jī)在給定業(yè)務(wù)壓力集合(X)下的CPU負(fù)載模型為:

其中,xi∈X,iτ為之前計(jì)算得到的tpmC當(dāng)量。在使用該模型時(shí),上式中的c、和iτ為已知量,只要再將預(yù)測(cè)的業(yè)務(wù)量集合(X)的具體數(shù)值以及業(yè)務(wù)所在主機(jī)的 tpmC值代入到上式中,就可以計(jì)算出在預(yù)測(cè)的業(yè)務(wù)量集合下,特定主機(jī)上的CPU負(fù)載情況。從上面的模型中可以發(fā)現(xiàn),計(jì)費(fèi)主機(jī)負(fù)載預(yù)測(cè)的準(zhǔn)確性主要依賴于對(duì)計(jì)費(fèi)業(yè)務(wù)量集合(X)預(yù)測(cè)的準(zhǔn)確性。圖3、圖4對(duì)近3年內(nèi)主要計(jì)費(fèi)業(yè)務(wù)量的趨勢(shì)進(jìn)行了分析(根據(jù)業(yè)務(wù)數(shù)據(jù)保密性要求,圖中不顯示具體業(yè)務(wù)量,趨勢(shì)公式中的常數(shù)使用s1、s2、s3、s4表示),其中,業(yè)務(wù)1、業(yè)務(wù)2、業(yè)務(wù)3使用指數(shù)曲線進(jìn)行擬合的擬合度非常高,業(yè)務(wù)4則使用線性曲線擬合度較高。

圖3 主要計(jì)費(fèi)業(yè)務(wù)量趨勢(shì)分析

圖4 計(jì)費(fèi)業(yè)務(wù)業(yè)務(wù)量趨勢(shì)分析
將各業(yè)務(wù)預(yù)測(cè)公式代入前面得到的CPU負(fù)載模型公式可以得到預(yù)測(cè)某一個(gè)時(shí)間點(diǎn)計(jì)費(fèi)系統(tǒng)負(fù)載的模型為:

其中,τ1i、τ2i、τ3i、τ4i分別為4種類型業(yè)務(wù)在第i個(gè)處理階段的tpmC當(dāng)量。在實(shí)際預(yù)測(cè)時(shí)可以根據(jù)預(yù)期前一段時(shí)間的計(jì)費(fèi)業(yè)務(wù)量進(jìn)行滾動(dòng)統(tǒng)計(jì),更新業(yè)務(wù)趨勢(shì)曲線參數(shù),進(jìn)一步提高預(yù)測(cè)精度。
由于在春節(jié)期間,實(shí)際的業(yè)務(wù)量,特別是短信業(yè)務(wù)量往往達(dá)到全年的最高峰,因此使用春節(jié)期間的業(yè)務(wù)流量以及計(jì)費(fèi)系統(tǒng)的實(shí)際負(fù)載情況進(jìn)行驗(yàn)證,可以有效地反映模型的準(zhǔn)確性。
在具體驗(yàn)證時(shí),首先利用上節(jié)的模型對(duì)春節(jié)高峰期時(shí)刻計(jì)費(fèi)系統(tǒng)負(fù)載情況進(jìn)行預(yù)測(cè)。然后再將預(yù)測(cè)值與實(shí)際值進(jìn)行比較。通過(guò)這種方法來(lái)驗(yàn)證模型的準(zhǔn)確性。在表 1中展示了計(jì)費(fèi)系統(tǒng)中針對(duì)短信話單處理主機(jī)1與主機(jī)2在春節(jié)忙時(shí)的主機(jī)CPU使用率的預(yù)測(cè)值與實(shí)際值的對(duì)比情況。從中可以看到,使用模型計(jì)算處理的主機(jī)CPU預(yù)測(cè)值與實(shí)際值基本吻合,平均誤差在3%以內(nèi)。

表1 計(jì)費(fèi)主機(jī)負(fù)載預(yù)測(cè)值與實(shí)際值比較 (%)
根據(jù)現(xiàn)有業(yè)務(wù)壓力的增長(zhǎng)情況,可以利用計(jì)費(fèi)系統(tǒng)負(fù)載模型來(lái)預(yù)測(cè)計(jì)費(fèi)主機(jī)的性能變化并及時(shí)提出需要對(duì)主機(jī)進(jìn)行升級(jí)的告警。
根據(jù)圖5和表2中的評(píng)估結(jié)果,在判斷出計(jì)費(fèi)主機(jī)在第2年春節(jié)的業(yè)務(wù)高峰期時(shí),CPU負(fù)荷將達(dá)到90%以上,可能影響業(yè)務(wù)的正常進(jìn)行。根據(jù)此項(xiàng)判斷,項(xiàng)目人員在春節(jié)前對(duì)計(jì)費(fèi)主機(jī)進(jìn)行升級(jí)。主機(jī)的 tpmC值從升級(jí)前的323394增加到升級(jí)后的809144。圖6展示了升級(jí)前后計(jì)費(fèi)主機(jī)CPU使用率的實(shí)際值與使用主機(jī)負(fù)載模型進(jìn)行計(jì)算得到的預(yù)測(cè)值之間的對(duì)比。

圖5 主機(jī)性能季度預(yù)估

表2 主機(jī)性能季度預(yù)估數(shù)據(jù) (%)

圖6 升級(jí)前后計(jì)費(fèi)主機(jī)負(fù)載預(yù)測(cè)與實(shí)際對(duì)比
本文針對(duì)計(jì)費(fèi)系統(tǒng)主機(jī)負(fù)載變化大、資源動(dòng)態(tài)分配難的問(wèn)題,從分析各類計(jì)費(fèi)業(yè)務(wù)流量與系統(tǒng)負(fù)載的關(guān)系入手,研究單筆業(yè)務(wù)在每一個(gè)處理環(huán)節(jié)的資源開銷情況,提出一種基于單位業(yè)務(wù)tpmC當(dāng)量的主機(jī)負(fù)載預(yù)測(cè)模型。經(jīng)過(guò)實(shí)際驗(yàn)證,該模型可以較精確地預(yù)估計(jì)費(fèi)主機(jī)的CPU負(fù)載情況,有助于計(jì)費(fèi)系統(tǒng)維護(hù)人員實(shí)現(xiàn)精確運(yùn)維和穩(wěn)定運(yùn)維。在上述模型中對(duì)于主機(jī)系統(tǒng)進(jìn)程的負(fù)載情況使用了一個(gè)固定的常數(shù)c,然而在實(shí)際情況中系統(tǒng)進(jìn)程的負(fù)載偶爾會(huì)出現(xiàn)細(xì)微波動(dòng)。為提升計(jì)費(fèi)系統(tǒng)負(fù)載預(yù)測(cè)模型的預(yù)測(cè)精度,今后將圍繞該類系統(tǒng)進(jìn)程負(fù)載的波動(dòng)情況展開進(jìn)一步研究。
[1]楊 偉,朱巧明,李培峰,等.基于時(shí)間序列的服務(wù)器負(fù)載預(yù)測(cè)[J].計(jì)算機(jī)工程,2006,32(19): 143-145.
[2]許 偉,陳志剛,曾志文,等.分布式系統(tǒng)中主機(jī)負(fù)載預(yù)測(cè)的一種普適性方法[J].計(jì)算機(jī)工程與應(yīng)用,2004,40(6): 181-183.
[3]程宏兵,楊 庚.一種基于自動(dòng)回歸的改進(jìn)網(wǎng)格主機(jī)負(fù)載預(yù)測(cè)模型[J].計(jì)算機(jī)應(yīng)用,2005,25(11): 2483-2485.
[4]龔 波.分布式環(huán)境中主機(jī)負(fù)載預(yù)測(cè)的研究[J].信息系統(tǒng)工程,2011,(12): 122-124.
[5]陳榮征,李廣松.基于遺傳神經(jīng)網(wǎng)絡(luò)的主機(jī)負(fù)載預(yù)測(cè)方法研究[J].計(jì)算機(jī)時(shí)代,2009,(10): 12-13.
[6]李春輝,戚淑芬,李 靜.分布式系統(tǒng)主機(jī)負(fù)載預(yù)測(cè)方法的評(píng)估[J].科技創(chuàng)新導(dǎo)報(bào),2009,(7): 63-63.
[7]劉 斌,楊 堅(jiān),趙 宇.基于在線負(fù)載預(yù)測(cè)的動(dòng)態(tài)集群節(jié)能配置策略[J].計(jì)算機(jī)工程,2010,36(24): 96-98.
[8]Chung I H,Jeffrey K.Hollingsworth.Automated Clusterbased Web Service Performance Tuning[C]//Proc.of IEEE High Performance Distributed Computing Conference.[S.1.]:IEEE Press,2004.
[9]Li Bo,Zhou Haiying,Zuo Decheng.Performance Modeling and Benchmarking of Bank Intermediary Business on High-performance Fault-tolerant Computers[C]//Proc.of the 41st IEEE/IFIP International Conference on Dependable Systems and Networks Workshops.[S.1.]: IEEE Press,2011.
[10]Transaction Processing Performance Council(TPC).TPC BENCH-MARKTM C Standard Specification Revision 5.11[EB/OL].(2010-02-10).http://www.tpc.org/tpcc.