基于P2P和CDN的監(jiān)控傳輸子系統(tǒng)的設計
實驗通過傳輸子系統(tǒng)從負載發(fā)生器下載數(shù)據(jù)來模擬大量數(shù)據(jù)請求,并分別收集下列三種模型的實驗數(shù)據(jù):
(1)傳統(tǒng)多線程阻塞模型,即每個現(xiàn)存阻塞得處理一個單獨的請求,在圖3中用A表示,并簡稱為A模型。
(2)固定線程數(shù)目的線程池,初試線程數(shù)采用CPU個數(shù)的2倍加2來確定,即10個初始線程,在圖3中用B表示,并簡稱為B模型。
(3)采用該文提出的線程池動態(tài)管理算法的模型,初試線程個數(shù)也為10個,在圖3中用C表示,并簡稱C模型。
4.2 分析數(shù)據(jù)得平均值
下面數(shù)據(jù)均是通過nmon采樣和ninon analyser分析得到的平均值。
(1)CPU使用率比較。從圖3中可以看到,在A模型中,基本已經(jīng)占用了所有的CPU資源。因為每個線程服務一個請求,一旦請求大量到來,就會有大量的線程產(chǎn)生。而在B模型中,因為線程個數(shù)固定,且已經(jīng)預先創(chuàng)建好,當請求量過大時,任務隊列會起到很好的緩沖作用。C模型是效果最好的,因為線程個數(shù)總是會被調(diào)整到最佳的個數(shù),并且任務池的使用有效減少了系統(tǒng)中頻繁的內(nèi)存申請和釋放操作。本文引用地址:http://m.butianyuan.cn/article/158040.htm
(2)空閑內(nèi)存比較。從圖4中可以容易分析得到,當請求的總量相同的情況下,A和B模型占用的內(nèi)存情況很接近。但是C模型中,任務池和線程池的大小都是動態(tài)伸縮的,提高了系統(tǒng)的處理能力,自然也會使用更多的內(nèi)存。
(3)網(wǎng)絡I/O流量比較。圖5展現(xiàn)了3種模型的網(wǎng)絡I/O情況,在A模型中,因為采用的是阻塞的方式進行的,當套口已經(jīng)沒有數(shù)據(jù)可讀,線程會阻塞等待數(shù)據(jù)的到達,而其他已經(jīng)有數(shù)據(jù)到達的套接口則可能得不到處理,因此A模型的網(wǎng)絡吞吐量比較低。在B模型中,采用的非阻塞和線程池模型,一旦一個套接口將要發(fā)生阻塞,線程可以很快切換到其他已經(jīng)有數(shù)據(jù)準備好的套接口上,加快了數(shù)據(jù)的接收速度,因此也提高了網(wǎng)絡的傳輸速度。在C模型中,減小了內(nèi)存和CPU等部件的負載,提高了性能,動態(tài)任務池使得系統(tǒng)有比B模型更好的緩存能力,因此C模型比B模型網(wǎng)絡吞吐量更高是可以理解的。系統(tǒng)采用的是l 000 Mb/s網(wǎng)卡,基本達到了網(wǎng)卡的極限。
5 結(jié) 語
根據(jù)統(tǒng)計線程池中的各個線程的平均等待時間和當前CPU的使用率,對線程池的尺寸進行動態(tài)的調(diào)整。利用這種線程池動態(tài)管理算法,可以很好地適應Internet上客戶請求突發(fā)性變化的情況。當突然到來大量請求時,根據(jù)算法原理,可以增加適量的線程滿足額外的請求;當請求變少以后,會將線程的數(shù)量減少,從而減輕系統(tǒng)的壓力。經(jīng)過實驗分析比較可以得出,采用線程池動態(tài)管理算法之后,有效減小了CPU的負載壓力,提高了網(wǎng)絡吞吐量和系統(tǒng)整體性能。但是,線程池的管理還有很多地方可以優(yōu)化,比如調(diào)整線程池尺寸都是以2為步長進行調(diào)整的,但是這個步長是根據(jù)經(jīng)驗得出來的,還沒有很好的理論依據(jù)。同時,可以增加更多的統(tǒng)計信息加入到算法的決策之中,提高算法的精確性。
這里實現(xiàn)了在多媒體監(jiān)控傳輸系統(tǒng)中P2P和CDN的結(jié)合,引入半同步/半異步的模式,設計了系統(tǒng)框架,引入任務池和線程池等技術,解決了媒體資源服務器和原始服務器之間的高效傳輸子系統(tǒng)的網(wǎng)絡瓶頸,設計了有效的線程池動態(tài)管理算法。
p2p機相關文章:p2p原理
評論