專利名稱:基于令牌漏桶法的自適應數據記錄/回放技術及其實現方法
技術領域:
本發明涉及基于令牌漏桶法的自適應數據記錄/回放技術及其實現方法,屬于高實時性計算機系統中嵌入數據記錄/回放功能的技術,采用令牌漏桶法分批打包處理技術和自適應分配CPU時間片的技術實現高實時性系統中數據記錄和回放。
背景技術:
實時采集和回放(再現)真實的雷達目標航跡數據,已成為雷達技術研究和使用的功能要求。但是由于雷達終端對實時性要求非常高,在終端上進行數據記錄會影響雷達系統乃至整個作戰系統對目標處理的實時性。同時數據回放也要求最接近實戰情況,故對實時性要求也非常高。如果采用專門的數據記錄/回放設備,不僅軟件硬件的代價昂貴,而且不能在原設備上面直觀回放。由于數據記錄/回放時讀寫外部存儲器的速度很慢,需要占用大量時間,而實時系統不能分配出大量的時間用于頻繁的讀寫外部存儲器。如果采用普通的方法在雷達系統中添加數據記錄/回放功能會使實時系統失去實時性,甚至死機。在航跡較多時,由于其產生的隨機性,如果采用逐個航跡數據進行讀寫外存來實現航跡數據記錄/回放,需要占用大量的CPU資源。如果航跡較多即使占用全部CPU時間片也無法實現航跡數據的實時記錄回放,更無法保證原系統的實時性。在本發明中提出一種優化的漏桶法,自適應的記錄/回放數據,可以大大減少數據記錄回放占用的CPU時間片, 并且可以自適應的選擇CPU空閑時間執行。
發明內容
本發明的目的在于提供一種基于令牌漏桶法的自適應數據記錄/回放技術及實現方法,該發明能夠在不影響實時系統正常運行的情況下實現數據記錄/回放功能。實現本發明的技術解決方案為首先對實時系統正常運行時CPU、內存等占用率進行統計,得出記錄回放模塊最大可以占用的系統資源率,和每次處理可以占用的最大時間片。針對每條航跡的數據量相對比較小,采用一次讀寫多個航跡形成的數據塊,比每次讀寫外部存儲器記錄一個航跡進行操作可以節約大量的時間。本發明通過打包讀寫的方法大量減少讀寫數據的次數,從而大大減少讀寫數據占用總時間片。每次可以讀寫數據的最大量根據每次可以占用最長時間片設計。根據系統運行情況和當前循環隊列數據池中緩沖數據量發放數據記錄或回放令牌。收到令牌的記錄或回放任務通過自適應的任務調度算法選擇CPU空閑時間執行。本發明在基于VxWorks的軟件平臺上,采用C++語言編程,實現了該算法并應用于工程實際。本發明與現有技術相比,其顯著優點為采用基于令牌漏桶法與自適應任務調度相融合的實時數據記錄/回放算法,能在不影響系統實時性的情況下實現航跡數據的記錄和回放,不僅節約了資金和空間,且其工程實現簡單,在現有的實時系統中嵌入該軟件模塊即可;回放效果直觀形象。該方法具有實時性好、成本低廉、效果明顯的特點。它的提出及工程實現在雷達、指控等設備上具有很高的推廣應用價值。下面結合附圖對本發明作進一步詳細描述。
圖1為基于令牌漏桶法的自適應數據記錄/回放技術工作流程圖,是本發明的工作流程圖。圖2、圖3、圖4為基于令牌漏桶法自適應的數據記錄回放技術的CPU時間片分配圖, 是本發明中系統CPU時間片分配圖。其中圖2是未進行記錄/回放時CPU時間片分配圖; 圖3是采用普通方法記錄任務時CPU時間片分配圖;圖4是采用令牌漏斗法自適應記錄/回放時CPU時間片分配圖。
具體實施例方式本發明基于令牌漏桶法和自適應的數據記錄/回放技術及實現方法具體實施步驟為(參見圖1)①通過WDB繪出當前實時系統資源占用圖表,統計系統資源的占用率,占用時間段等數據;②根據統計數據設置令牌發放頻率,設計循環隊列數據池和構建令牌漏桶;③根據設計的循環隊列數據池結構打包存儲待處理數據,如果回放則設計解析回放循環隊列數據池中數據。④根據系統運行情況和循環隊列數據池中待處理數據量適時產生令牌;⑤接收到令牌的任務(讀或寫)根據當前CPU的空閑情況自適應選擇執行時機, 并根據當前循環隊列數據池中待處理數據量自適應選擇處理數據塊的數量。在數據記錄過程中當循環隊列數據池中緩存的數據較多時,按照每次最大可以存儲數據量進行記錄,并釋放循環隊列數據池中對應空間;如果循環隊列數據池中數據量小于最大可以存儲量時(大部分情況)一次性記錄全部數據并釋放循環隊列數據池,以降低數據的讀或寫占用的CPU資源量。數據記錄時系統根據CPU空閑周期和循環隊列數據池數據量適時釋放令牌,如果數據量太少就釋放令牌會導致數據記錄任務占用過多CPU資源,相反如果數據太多會導致待記錄數據丟失。收到令牌的數據記錄任務自適應的選擇在CPU空閑較多時記錄數據,記錄數據任務盡可能多的從循環隊列數據池中提取數據記錄在外部存儲設備中。 在數據回放過程中根據系統運行周期和循環隊列數據池可以用來回放的數據量決定是否釋放令牌;收到令牌的數據讀取任務自適應的選擇在CPU空閑較多時從外部存儲空間中讀取數據,讀取任務根據循環隊列數據池中緩存數據量盡量多的讀取數據;數據回放模塊根據循環隊列數據池的數據結構和時間戳進行實時回放。該方法在基于VxWorks 5. 5操作系統平臺上實現實時處理。整個系統的功能采用 C++語言編寫。采用的雷達終端每個周期處理的目標個數是100批;硬件環境為^Itel(R)Core(TM)Duo 1. 66GHz,內存1024MB,存儲介質電子盤10GB。通過試驗驗證,該方法在保證原系統可靠性和實時性的前提下,實現了數據的實時記錄/回放功能。
基于令牌漏桶法的自適應數據記錄回放技術及實現方法已經成功應用某型雷達系統,該方法能在不影響原系統正常運行的情況下,可以實時的記錄或回放最多100批/2 秒航跡數據。
權利要求
1.一種基于令牌漏桶法的自適應數據記錄/回放技術及實現方法,其特征在于采用循環隊列數據池緩存待記錄/回放的數據;使用令牌漏桶的方法,根據具體的CPU使用情況和當前循環隊列數據池中待處理數據的數據量發放令牌給記錄/回放任務。
2.一種實現權利要求1所述的基于令牌漏桶法的自適尋數據記錄回放技術在基于 VxWorks平臺上,采用C++語言編程實現的數據記錄回放模塊嵌入到實時系統中。其特征在于首先采用對需要記錄的數據進行分批打包記錄,或對需要回放的數據進行分塊讀取的方法;然后對寫或讀的任務按照令牌發放的方式控制其操作數量,通過自適應選擇CPU空閑的時間段的方法完成數據的讀或寫。
全文摘要
本發明設計一種基于令牌漏桶法的自適應插入數據記錄/回放技術及實現方法。該方法主要適用于實時操作系統中,在不影響正常任務運行情況下嵌入實時的記錄數據/回放功能。實現過程是首先按照一定的結構把需要記錄數據打包存放入循環隊列數據池中,根據整個系統運行情況和數據池中數據量發放令牌,收到令牌的任務自適應的選擇CPU空閑時間完成一批數據的記錄。數據回放情況是根據整個系統運行情況和循環隊列數據池中數據量發放令牌,領到令牌的任務批量的從外部存儲器中讀取數據放入循環隊列數據池中,系統實時的從循環隊列數據池中讀取數據用于回放。本發明能實現數據的實時記錄/回放功能。廣泛應用于雷達探測數據及有關設備數據等的實時記錄與回放。
文檔編號G06F17/40GK102567549SQ20111036712
公開日2012年7月11日 申請日期2011年11月18日 優先權日2011年11月18日
發明者孟凡, 徐斌, 杜杭, 邢永昌 申請人:中國船舶重工集團公司第七二四研究所