專利名稱:一種從多緩沖區(qū)收取數(shù)據(jù)的優(yōu)化輪詢系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明屬于網(wǎng)絡(luò)數(shù)據(jù)處理領(lǐng)域,具體涉及一種從多緩沖區(qū)收取數(shù)據(jù)的優(yōu)化輪詢系統(tǒng)和方法。
背景技術(shù):
網(wǎng)絡(luò)數(shù)據(jù)采集系統(tǒng)中,經(jīng)常需要在一臺處理設(shè)備上安裝多塊數(shù)據(jù)采集卡,每個(gè)采集卡有自己的數(shù)據(jù)緩沖區(qū),或者一個(gè)采集卡上有多個(gè)數(shù)據(jù)緩沖區(qū),也就需要軟件從多個(gè)緩沖區(qū)輪詢收取數(shù)據(jù)。現(xiàn)有技術(shù)的一般系統(tǒng)的輪詢方式有兩種第一種方式是貪婪訪問;軟件從第一個(gè)緩沖區(qū)開始,依次輪詢每個(gè)緩沖區(qū),不論緩沖區(qū)有多少數(shù)據(jù),都讀取出來,直到讀空一個(gè)緩沖區(qū)后,再去訪問下一個(gè)緩沖區(qū)。比如假設(shè)有三個(gè)緩沖區(qū),軟件先從第一個(gè)緩沖區(qū)讀取數(shù)據(jù),直到第一個(gè)緩沖區(qū)的所有數(shù)據(jù)被取空后, 再查看第二個(gè)緩沖區(qū),讀取數(shù)據(jù),讀空第二個(gè)緩沖區(qū)后,再讀第三個(gè)緩沖區(qū),讀空第三個(gè)緩沖區(qū)后,再從第一個(gè)緩沖區(qū)讀取數(shù)據(jù)。第二種方式是平均訪問;軟件從第一個(gè)緩沖區(qū)開始,依次輪詢每個(gè)緩沖區(qū),如果緩沖區(qū)有數(shù)據(jù),不論緩沖區(qū)有多少數(shù)據(jù),只讀取一個(gè)數(shù)據(jù),就去訪問下一個(gè)緩沖區(qū)。比如假設(shè)有三個(gè)緩沖區(qū),軟件先查看第一個(gè)緩沖區(qū),如果有數(shù)據(jù),就讀取一個(gè)數(shù)據(jù)出來,然后直接查看第二個(gè)緩沖區(qū),如果有數(shù)據(jù),也是只讀一個(gè),然后再讀第三個(gè)緩沖區(qū),再回到第一個(gè)緩沖區(qū)。現(xiàn)有技術(shù)的輪詢方式存在以下問題采用第一種貪婪訪問的方式,在一個(gè)時(shí)間段內(nèi)處理一個(gè)緩沖區(qū)的數(shù)據(jù),會(huì)導(dǎo)致緩沖區(qū)對應(yīng)的處理CPU的負(fù)載不平衡,也就是說,假設(shè)每個(gè)緩沖區(qū)內(nèi)都有較多數(shù)據(jù),按照貪婪訪問方式,軟件會(huì)把一個(gè)緩沖區(qū)的數(shù)據(jù)全部處理完才去處理下一個(gè)緩沖區(qū)內(nèi)的數(shù)據(jù),在這個(gè)處理過程中,與當(dāng)前處理緩沖區(qū)所對應(yīng)的CPU負(fù)載很大,同時(shí)其他緩沖區(qū)所對應(yīng)的CPU是空閑的,CPU負(fù)載不均衡會(huì)導(dǎo)致整個(gè)系統(tǒng)的性能低下。采用第二種平均訪問的方式,當(dāng)多個(gè)緩沖區(qū)之間的負(fù)載不均衡時(shí),會(huì)導(dǎo)致軟件頻繁的查看空緩沖區(qū),也就是說,假設(shè)多個(gè)緩沖區(qū)中只有一個(gè)緩沖區(qū)中有大量數(shù)據(jù),其他都是空緩沖區(qū),按照平均訪問方式,軟件會(huì)輪流查看每個(gè)緩沖區(qū),對有數(shù)據(jù)的緩沖區(qū),每次訪問只取一個(gè)數(shù)據(jù),對沒有數(shù)據(jù)的緩沖區(qū),每次也要去查看,查看緩沖區(qū)時(shí)需要軟件切換緩沖區(qū),其中包括連接緩沖區(qū),取出緩沖區(qū)讀寫指針,進(jìn)行比較判斷等操作,如果多數(shù)緩沖區(qū)是空的,頻繁的緩沖區(qū)切換帶來的開銷會(huì)導(dǎo)致不必要的系統(tǒng)性能損失。一般系統(tǒng)實(shí)現(xiàn)中,緩沖區(qū)輪詢采用的貪婪訪問和平均訪問模式,每次啟動(dòng)緩沖區(qū)訪問,都是按緩沖區(qū)編號依次輪詢的,也沒有考慮到緩沖區(qū)不平衡的情況。假設(shè)有η個(gè)緩沖區(qū),只有最后一個(gè),即第η個(gè)緩沖區(qū)有數(shù)據(jù),前面η-1個(gè)緩沖區(qū)都是空的,那么,每次啟動(dòng)輪詢都要從第1個(gè)緩沖區(qū)開始,都要訪問η-1個(gè)空緩沖區(qū),也會(huì)帶來不必要的額外開銷。
發(fā)明內(nèi)容
為克服上述缺陷,本發(fā)明提供了一種從多緩沖區(qū)收取數(shù)據(jù)的優(yōu)化輪詢系統(tǒng)和方法,在輪詢多緩沖區(qū)時(shí),在盡量保證多緩沖區(qū)之間的負(fù)載均衡的同時(shí),又盡量減少查看空緩沖區(qū)的額外開銷。為實(shí)現(xiàn)上述目的,本發(fā)明提供一種從多緩沖區(qū)收取數(shù)據(jù)的優(yōu)化輪詢系統(tǒng),所述輪詢系統(tǒng)包括緩沖區(qū)和訪問所述緩沖區(qū)的輪詢控制模塊;其改進(jìn)之處在于,所述輪詢控制模塊包括步長數(shù)組和靜態(tài)變量;所述步長數(shù)組和所述靜態(tài)變量分別對所述緩沖區(qū)進(jìn)行輪詢訪問O本發(fā)明提供的優(yōu)選技術(shù)方案中,所述緩沖區(qū)數(shù)量為η個(gè)。本發(fā)明提供的第二優(yōu)選技術(shù)方案中,所述步長數(shù)組,在每個(gè)緩沖區(qū)設(shè)置一個(gè)步長, 所述步長表示每次輪詢到該緩沖區(qū)時(shí),每次最多從緩沖區(qū)內(nèi)讀取的數(shù)據(jù)長度。本發(fā)明提供的第三優(yōu)選技術(shù)方案中,所述靜態(tài)變量記錄每次輪詢起始的緩沖區(qū)編號,在每次啟動(dòng)輪詢時(shí),從所述靜態(tài)變量記錄的上次輪詢到的、有數(shù)據(jù)的緩沖區(qū)開始。本發(fā)明提供的第四優(yōu)選技術(shù)方案中,所述緩沖區(qū)步長最小為1。本發(fā)明提供的第五優(yōu)選技術(shù)方案中,提供一種從多緩沖區(qū)收取數(shù)據(jù)的優(yōu)化輪詢方法,其改進(jìn)之處在于,所述方法包括如下步驟(1).初始化所述輪詢控制模塊,其中把所述靜態(tài)變量的起始緩沖區(qū)編號初始化為 0,并把所述步長數(shù)組的每個(gè)緩沖區(qū)的步長初始化為1 ;(2).輪詢所述靜態(tài)變量獲得當(dāng)前開始輪詢的緩沖區(qū)編號,從所述步長數(shù)組中獲得當(dāng)前緩沖區(qū)的步長;(3).按照步長,從當(dāng)前緩沖區(qū)中讀取相應(yīng)長度的數(shù)據(jù);(4).如果當(dāng)前緩沖區(qū)內(nèi)的數(shù)據(jù)長度超過了它的步長,則把該緩沖區(qū)對應(yīng)的步長加一,起始緩沖區(qū)編號保持不變;否則把該緩沖區(qū)的步長減一,且修改起始緩沖區(qū)編號。與現(xiàn)有技術(shù)比,本發(fā)明提供的一種從多緩沖區(qū)收取數(shù)據(jù)的優(yōu)化輪詢系統(tǒng)和方法, 采用輪詢控制變量,根據(jù)緩沖區(qū)負(fù)載情況,動(dòng)態(tài)調(diào)整每次輪詢的起始緩沖區(qū)和每個(gè)緩沖區(qū)的讀取步長,避免緩沖區(qū)之間的負(fù)載不均和頻繁訪問空緩沖區(qū)的額外開銷,提高了從多緩沖收取數(shù)據(jù)的輪詢效率。從多緩沖區(qū)收取數(shù)據(jù)的優(yōu)化輪詢系統(tǒng)和方法通過對步長的控制, 避免了貪婪訪問時(shí)讀取出全部數(shù)據(jù)和平均訪問時(shí)只讀取一個(gè)數(shù)據(jù)的問題,在每次輪詢緩沖區(qū)后,根據(jù)緩沖區(qū)空滿情況,對每個(gè)緩沖區(qū)的步長變量動(dòng)態(tài)調(diào)整,當(dāng)緩沖區(qū)數(shù)據(jù)較多時(shí),步長會(huì)逐漸增加,使每次輪詢到該緩沖區(qū)讀取的數(shù)據(jù)會(huì)越來越多,當(dāng)緩沖區(qū)數(shù)據(jù)較少時(shí),步長會(huì)逐漸減少,使每次輪詢到該緩沖區(qū)讀取的數(shù)據(jù)會(huì)越來越少;且不采用按照緩沖區(qū)號依次輪詢的方式,而是從靜態(tài)變量記錄上次輪詢到的有數(shù)據(jù)的緩沖區(qū)開始,從而降低了第一個(gè)訪問的緩沖區(qū)是空緩沖區(qū)的概率,減少了每次啟動(dòng)輪詢對空緩沖區(qū)訪問的次數(shù)。
圖1為從多緩沖區(qū)收取數(shù)據(jù)的優(yōu)化輪詢系統(tǒng)的示意圖。
具體實(shí)施例方式如圖1所示,從多緩沖區(qū)收取數(shù)據(jù)的優(yōu)化輪詢系統(tǒng),所述輪詢系統(tǒng)包括輪詢控制模塊和緩沖區(qū),所述輪詢控制模塊可訪問所述緩沖區(qū);所述輪詢控制模塊包括步長數(shù)組和靜態(tài)變量;所述步長數(shù)組和所述靜態(tài)變量分別對所述緩沖區(qū)進(jìn)行輪詢訪問。所述步長數(shù)組,通過該數(shù)組,本發(fā)明結(jié)合貪婪輪詢和平均輪詢兩種輪詢方式,為每個(gè)緩沖區(qū)設(shè)置一個(gè)步長變量,該步長表示每次輪詢到該緩沖區(qū)時(shí),每次最多從緩沖區(qū)內(nèi)讀取的數(shù)據(jù)長度,通過該步長控制,避免了貪婪訪問時(shí)讀取出全部數(shù)據(jù)和平均訪問時(shí)只讀取一個(gè)數(shù)據(jù)的問題。軟件在每次輪詢緩沖區(qū)后,根據(jù)緩沖區(qū)空滿情況,對每個(gè)緩沖區(qū)的步長變量動(dòng)態(tài)調(diào)整,當(dāng)緩沖區(qū)數(shù)據(jù)較多時(shí),步長會(huì)逐漸增加,每次輪詢到該緩沖區(qū)讀取的數(shù)據(jù)會(huì)越來越多,當(dāng)緩沖區(qū)數(shù)據(jù)較少時(shí),步長會(huì)逐漸減少,每次輪詢到該緩沖區(qū)讀取的數(shù)據(jù)會(huì)越來越少。所述靜態(tài)變量,本發(fā)明使用該變量記錄每次輪詢起始的緩沖區(qū)編號,每次啟動(dòng)輪詢時(shí),不采用按照緩沖區(qū)號依次輪詢的方式,而是從靜態(tài)變量記錄上次輪詢到的有數(shù)據(jù)的緩沖區(qū)開始,從而降低了第一個(gè)訪問的緩沖區(qū)是空緩沖區(qū)的概率,減少每次啟動(dòng)輪詢對空緩沖區(qū)訪問的次數(shù)。從多緩沖區(qū)收取數(shù)據(jù)的優(yōu)化輪詢方法,其特征在于,具體包括如下步驟(1).初始化所述輪詢控制模塊,把所述靜態(tài)變量的起始緩沖區(qū)編號初始化為0, 并把所述步長數(shù)組的每個(gè)緩沖區(qū)的步長初始化為1 ;(2).輪詢所述靜態(tài)變量獲得當(dāng)前開始輪詢的緩沖區(qū)編號,從所述步長數(shù)組中獲得當(dāng)前緩沖區(qū)的步長;(3).按照步長,從當(dāng)前緩沖區(qū)中讀取相應(yīng)長度的數(shù)據(jù);(4).如果當(dāng)前緩沖區(qū)內(nèi)的數(shù)據(jù)長度超過了它的步長,則說明該緩沖區(qū)當(dāng)前數(shù)據(jù)較多,則把該緩沖區(qū)對應(yīng)的步長加一,起始緩沖區(qū)編號保持不變;否則把該緩沖區(qū)的步長減一,且修改起始緩沖區(qū)編號。需要聲明的是,本發(fā)明內(nèi)容及具體實(shí)施方式
意在證明本發(fā)明所提供技術(shù)方案的實(shí)際應(yīng)用,不應(yīng)解釋為對本發(fā)明保護(hù)范圍的限定。本領(lǐng)域技術(shù)人員在本發(fā)明的精神和原理啟發(fā)下,可作各種修改、等同替換、或改進(jìn)。但這些變更或修改均在申請待批的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種從多緩沖區(qū)收取數(shù)據(jù)的優(yōu)化輪詢系統(tǒng),所述輪詢系統(tǒng)包括緩沖區(qū)和訪問所述緩沖區(qū)的輪詢控制模塊;其特征在于,所述輪詢控制模塊包括步長數(shù)組和靜態(tài)變量;所述步長數(shù)組和所述靜態(tài)變量分別對所述緩沖區(qū)進(jìn)行輪詢訪問。
2.根據(jù)權(quán)利要求1所述的輪詢系統(tǒng),其特征在于,所述緩沖區(qū)數(shù)量為η個(gè)。
3.根據(jù)權(quán)利要求1所述的輪詢系統(tǒng),其特征在于,所述步長數(shù)組,在每個(gè)緩沖區(qū)設(shè)置一個(gè)步長,所述步長表示每次輪詢到該緩沖區(qū)時(shí),每次最多從緩沖區(qū)內(nèi)讀取的數(shù)據(jù)長度。
4.根據(jù)權(quán)利要求1所述的輪詢系統(tǒng),其特征在于,所述靜態(tài)變量記錄每次輪詢起始的緩沖區(qū)編號,在每次啟動(dòng)輪詢時(shí),從所述靜態(tài)變量記錄的上次輪詢到的、有數(shù)據(jù)的緩沖區(qū)開始。
5.根據(jù)權(quán)利要求3所述的輪詢系統(tǒng),其特征在于,所述緩沖區(qū)步長最小為1。
6.根據(jù)1-5項(xiàng)權(quán)利要求任一項(xiàng)所述的從多緩沖區(qū)收取數(shù)據(jù)的優(yōu)化輪詢系統(tǒng)的從多緩沖區(qū)收取數(shù)據(jù)的優(yōu)化輪詢方法,其特征在于,所述方法包括如下步驟(1).初始化所述輪詢控制模塊,其中把所述靜態(tài)變量的起始緩沖區(qū)編號初始化為0, 并把所述步長數(shù)組的每個(gè)緩沖區(qū)的步長初始化為1 ;(2).輪詢所述靜態(tài)變量獲得當(dāng)前開始輪詢的緩沖區(qū)編號,從所述步長數(shù)組中獲得當(dāng)前緩沖區(qū)的步長;(3).按照步長,從當(dāng)前緩沖區(qū)中讀取相應(yīng)長度的數(shù)據(jù);(4).如果當(dāng)前緩沖區(qū)內(nèi)的數(shù)據(jù)長度超過了它的步長,則把該緩沖區(qū)對應(yīng)的步長加一, 起始緩沖區(qū)編號保持不變;否則把該緩沖區(qū)的步長減一,且修改起始緩沖區(qū)編號。
全文摘要
本發(fā)明提供了一種從多緩沖區(qū)收取數(shù)據(jù)的優(yōu)化輪詢系統(tǒng)和方法;輪詢系統(tǒng)包括輪詢控制模塊和緩沖區(qū),所述輪詢控制模塊可訪問所述緩沖區(qū);所述輪詢控制模塊包括步長數(shù)組和靜態(tài)變量;輪詢方法采用輪詢控制變量,根據(jù)緩沖區(qū)負(fù)載情況,動(dòng)態(tài)調(diào)整每次輪詢的起始緩沖區(qū)和每個(gè)緩沖區(qū)的讀取步長。本發(fā)明提供的從多緩沖區(qū)收取數(shù)據(jù)的優(yōu)化輪詢系統(tǒng)和方法,避免了緩沖區(qū)之間的負(fù)載不均和頻繁訪問空緩沖區(qū)的額外開銷,提高了從多緩沖收取數(shù)據(jù)的輪詢效率。
文檔編號G06F12/08GK102521149SQ201110384059
公開日2012年6月27日 申請日期2011年11月28日 優(yōu)先權(quán)日2011年11月28日
發(fā)明者劉朝輝, 姬乃軍, 李鋒偉, 竇曉光 申請人:曙光信息產(chǎn)業(yè)(北京)有限公司