新四季網

海量定時器的調度方法

2023-06-04 20:36:01

專利名稱:海量定時器的調度方法
技術領域:
本發明涉及定時器領域,具體來說是涉及一種海量定時器的調度方法。
一般來講,定時器調度方法包含如下基本步驟用於定時器啟動的插入步驟;用於定時器中止或超時的刪除步驟;用於作業系統監視激活的定時器的掃描步驟。其中掃描步驟是由一個周期為T的作業系統提供的定時器進行驅動,在該定時器的驅動下,在每個掃描周期對等待超時的定時器進行一次檢查,使到時的預先登記時長的定時器通過刪除步驟進入掛起狀態。定時器調度方法雖然只需使用一個或少數幾個系統級的定時器,但是卻可以對外提供多個定時器。
隨著通訊系統的容量越來越大,速度越來越快,協議越來越複雜,客戶對穩定性要求越來越高,對定時器調度的要求也越來越高。如在大話務量負載仿真測試工具開發過程中,該工具需要模擬巨大數量的用戶極其頻繁地發起長短不一的呼叫,呼叫中許多特殊狀態的定時器精度要求非常高,經常需要精確到10ms,而有些狀態(例如通話狀態等)的時長要求非常長,可能要達到數小時或更長。由於該測試工具是通用測試工具,狀態的屬性可以由用戶自由定製,每個狀態的等待時長的可能範圍非常大,幾十毫秒到幾個小時不等,需要對不同長度範圍和精度的定時器做不同的處理。
而現有的定時器調度方法主要有下面幾種1、輪詢定時器調度方法,是一種常用於少量定時器調度的輪詢方法,在每個掃描周期把所有的定時器檢查一遍,看看是否有定時器超時,並且把每個定時器的剩餘時間減一。很明顯,如果當精度要求很高,掃描周期非常短時,這種方法便不能在一個掃描周期內檢查太多的定時器。
2、差分定時器調度方法。在該方法中,定時器按照到時時刻排列成一個長鏈,每個定時器記錄自身到時時刻與上一個定時器到時時刻的時間差(即差分方案),這種方法幾乎沒有掃描開銷,在判斷是否有定時器超時,只需判斷鍊表頭的第一個定時器即可。但是,如果要想插入一個新定時器,就必須遍歷鍊表,這樣,當處於激活狀態的定時器數量非常大時,插入過程就會很慢。
3、分類定時器調度方法,這種方法採用定時器時長分類的方式,利用了差分定時器的優點,並且針對系統的特殊性克服差分定時器插入效率低的缺點。例如,在系統所用到的定時器長度只有少數幾種的情況下,可以針對每個長度的定時器構造一個鍊表,由於每個鍊表只有一種定時時延,新登記的定時器插入該定時器所屬定時器類的鍊表尾部,每個掃描周期掃描所有定時器鍊表的頭即可,由於定時器時長的種類很少,這種定時器非常高效。但是這種定時器只能應付定時器時長的可能取值有限的情況,對於超時時長可能取值種類過多或者可變的系統是不適用的。
另外,在現有技術中還有一些系統按照定時器的精度對定時器進行分類,越高精度的定時器可定時的最大時長越短。例如提供毫秒、秒鐘、分鐘、小時的數種定時器,用戶根據精度和長度的要求選取相應的類別。這種定時器方案也可以做得非常高效,但卻存在使用相對比較麻煩,需要根據長度和精度確定類別的缺點。
以上將定時器分類的方法在許多通訊協議軟體系統中得到應用,但是這些方法使用起來需要指定類別而不能任意直接指定時長,並且修改或者增刪類別的維護工作比較煩瑣並且容易出錯。
4、時間緩衝區方法。該方法將到時時刻做成一個固定尺寸的環型區域,一個代表當前時刻的指針指向當前時刻對應的單元,該指針每過一個掃描周期便前進一個單元,並且將該單元裡面的定時器啟動。登記定時器的時候,直接登記到該定時器到時時刻所對應的位置上去。這種方案也是非常高效的通用方案,但缺點是定時的最大掃描周期數受環型區域尺寸的限制。如果要定時非常長的時間間隔,即使沒有一個處於激活狀態的定時器,也需要巨大的內存。
顯然,上述現有的定時器調度方法都存在各自的缺點,而且由於皆動態地分配和釋放內存,從而造成了內存碎片化。另外,雖然上述方法可以對不同長度範圍和精度的定時器做不同的處理,但是會增大調度程序總的複雜性,增大應用程式使用定時任務的難度,降低系統的可靠性。
為實現上述目的,本發明的海量定時器的調度方法包含如下具體步驟用於定時器啟動的插入步驟;用於定時器中止的刪除步驟;用於作業系統監視激活的定時器超時的掃描步驟。其中所述的掃描步驟包含下列步驟a、在每個掃描周期判斷定時器隊列中是否有激活的定時器,如果否,退出本步驟,如果是,繼續;b、讀取位於定時器隊列頭部的定時器;c、判斷該定時器是否到時,如果否,退出本步驟,如果是,繼續;d、將該定時器對象從定時器隊列中清除並同時調整定時器隊列順序,然後回到步驟a。
所述的插入步驟包含先將到時時刻保存到定時器對象中,然後將該定時器對象插入容納定時器對象的定時器隊列中並同時調整隊列順序。
所述的刪除步驟包含先判斷該定時器是否被激活,如果未被激活則退出本步驟,否則清空該定時器,然後將該定時器對象從定時器隊列中清除並同時調整定時器隊列順序。
另外,所述的定時器隊列是指以堆數據結構構成的定時器隊列或者是以前序完全二叉樹結構構成的定時器隊列。
本發明通過使用堆數據結構或前序完全二叉樹結構對定時器隊列進行組織,利用其中堆或者樹的優良特性達到對海量定時器的高效調度,能夠有效地降低系統的複雜度,提高系統的穩定性、可移植性和可維護性。具體來說具有下述優點1、能夠高效掃描大量處於激活狀態的定時器,執行超時的定時器任務;2、能夠高效插入、刪除定時器;3、可提供的定時時延範圍足夠大,應用程式不必對特殊長度的時延進行特殊處理;4、定時的精度足夠高,滿足精確定時的需要。
下面結合附圖
和具體實施例來詳細描述本發明。
由於堆數據結構具備一些優良的特性,這種數據結構可以在每次插入和刪除元素操作的時候迅速地進行調整,保證操作之後數據仍然被組織為一個堆。只要數據被組織成為一個堆,就可以按照先後順序將元素提取出來,並且提取操作也是非常迅速的。上述各個基本步驟的具體過程為如圖2所示,所述的插入步驟包含先將到時時刻保存到定時器對象中,然後將該定時器對象插入容納定時器對象的堆數據結構定時器隊列中並同時調整堆數據結構。
如圖3所示,所述的刪除步驟包含先判斷該定時器是否被激活,如果未被激活則退出本步驟,否則清空該定時器,然後將該定時器對象從堆數據結構定時器隊列中清除並同時調整堆數據結構。
如圖4所示,所述的掃描步驟包含下列步驟1、在每個掃描周期判斷堆數據結構定時器隊列中是否有激活的定時器,如果否,退出本步驟,如果是,繼續;2、讀取位於堆數據結構定時器隊列頭部的定時器;3、比較該定時器的定時時長和系統的計時時長,如果二者不相等,退出本步驟,如果二者相等,繼續;4、將該定時器對象從堆數據結構定時器隊列中清除並同時調整堆數據結構,然後回到步驟1。
考慮到如果系統長時間運行,系統計時記數器可能會溢出,為了使系統在溢出的前後仍然能夠正確工作,本實施例使用32位無符號整數記錄時長和系統計時記數器,這時計時時長最大合法長度可以達到10ms×(232-1)約497天,且所述的步驟c判斷定時器是否到時的比較中不使用大於或小於,而使用相等或不相等,只有在二者相等的時候才說明該定時器在隊列中超時,其他情況,無論是大於還是小於,都說明該定時器沒有在該隊列中到時。這樣就可以巧妙地避開系統計時記數器溢出後系統混亂的問題,無論系統計時記數器溢出多少次,系統都可以毫無問題地正常工作。
假設每一次掃描步驟的時間開銷是O(1),通過本實施例所述的海量堆定時器的調度方法,每次插入步驟的時間開銷是O(log(N)),每次刪除步驟的時間開銷是O(log(N))。其中N為處於激活狀態的定時器數量。插入和刪除定時器的時間開銷都是因調整堆數據結構造成的。另外,由於實際系統的內存限制,log(N)是存在上限的,例如32位系統中,0<=log(N))<32。
表1是本實施例和現有的幾種調度方法的性能比較,其中系統整數位數B定時器插入速度F(次/tick)定時器平均生存時長T(tick)系統激活狀態的定時器個數N定時器內存佔用M可直接定時時長數L(分類定時器的)定時器類別數C可以看出,現有的幾種調度方法在某些方面比本實施例所述的方法更快,但是在比較極端的情況下都存在嚴重的缺陷,導致現有的幾種調度方法在極端情況下很難使用。例如在PII300以上的機器上,每秒掃描100次,每秒插入1000個定時器,系統中有近1,000,000個定時器同時處於激活狀態,這兩項操作所佔用的CPU時間不到1/1000。也就是說,雖然這兩項比其他類型定時器的最佳值要低,但是根本不足以構成性能瓶頸。在基本內存佔用方面,本實施例在沒有激活的定時器的時候基本沒有開銷,所以完全可以應用在單板的嵌入式環境中。
表1

表2是在極端情況下本實施例和現有的幾種調度方法的性能具體數據近似值的比較,系統整數位數為32,定時器插入速度為10次/掃描周期,定時器平均生存時長為100,000掃描周期,緩衝定時器方法的可直接定時時長數為1,000,000掃描周期,分分類定時器方法中定時器類別數為100個類別,這樣,分類調度方案就只能對100種時長直接定時,遠遠少於其他類型定時器的可直接定時的時長數。
表2

權利要求
1.一種海量定時器的調度方法,其特徵在於該方法包含如下步驟用於定時器啟動的插入步驟;用於定時器中止的刪除步驟;用於作業系統監視激活的定時器超時的掃描步驟;其中,所述的掃描步驟包含下列步驟a、在每個掃描周期判斷定時器隊列中是否有激活的定時器,如果否,退出本步驟,如果是,繼續;b、讀取位於定時器隊列頭部的定時器;c、判斷該定時器是否到時,如果否,退出本步驟,如果是,繼續;d、將該定時器對象從定時器隊列中清除並同時調整定時器隊列順序,然後回到步驟a。
2.如權利要求1所述的一種海量定時器的調度方法,其特徵在於,所述插入步驟包含先將到時時刻保存到定時器對象中;然後將該定時器對象插入容納定時器對象的定時器隊列中並同時調整隊列順序。
3.如權利要求1所述的一種海量定時器的調度方法,其特徵在於,所述刪除步驟包含先判斷該定時器是否被激活,如果未被激活則退出本步驟,否則清空該定時器;然後將該定時器對象從定時器隊列中清除並同時調整定時器隊列順序。
4.如權利要求1、2或3所述的一種海量定時器的調度方法,其特徵在於,所述的定時器隊列是指以堆數據結構構成的定時器隊列或者是以前序完全二叉樹結構構成的定時器隊列。
5.如權利要求1、2或3所述的一種海量定時器的調度方法,其特徵在於,所述的定時器是用無符號整數表示的。
6.如權利要求1所述的一種海量定時器的調度方法,其特徵在於,所述步驟a中的計時是用無符號整數來計時的。
7.如權利要求1所述的一種海量定時器的調度方法,其特徵在於,所述步驟c實現過程為比較該定時器的定時時長和步驟a中的計時時長,如果二者不相等,退出本步驟,如果二者相等,繼續。
全文摘要
本發明提供了一種海量定時器的調度方法,該方法包含用於定時器啟動的插入步驟、用於定時器中止的刪除步驟、用於作業系統監視激活的定時器超時的掃描步驟;其中所述的掃描步驟包含下列步驟a.在每個周期判斷定時器隊列中是否有激活的定時器,如果否,退出本步驟,如果是,繼續;b.讀取位於定時器隊列頭部的定時器;c.判斷該定時器是否到時,如果否,退出本步驟,如果是,繼續;d.將該定時器對象從定時器隊列中清除並同時調整定時器隊列順序,然後回到步驟a。本發明通過使用堆數據結構或前序完全二叉樹結構對定時器隊列進行組織,利用其優良特性對海量定時器的高效調度,能夠有效地降低系統的複雜度,提高系統的穩定性、可移植性和可維護性。
文檔編號H04B17/00GK1474241SQ0212875
公開日2004年2月11日 申請日期2002年8月7日 優先權日2002年8月7日
發明者孫伊, 孫 伊 申請人:華為技術有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀