999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種VxWorks系統CPU利用率圖形化顯示方法的設計與實現

2017-09-30 02:58:25中國船舶重工集團公司第七一六研究所
電子世界 2017年18期
關鍵詞:嵌入式系統

中國船舶重工集團公司第七一六研究所 崔 娟

一種VxWorks系統CPU利用率圖形化顯示方法的設計與實現

中國船舶重工集團公司第七一六研究所 崔 娟

本文介紹了嵌入式VxWorks操作系統下一種CPU利用率圖形化的顯示方法。它利用系統輔助時鐘硬件提供的周期性中斷服務,對系統中當前現有任務的執行時間進行周期性抽樣,并基于WindML多媒體庫窗口系統的重繪機制,在預定義的網格化畫布中,將當前時刻及其之前的所有采樣點用直線相連接,實時描繪出相應曲線,為用戶在目標機下提供CPU利用率的圖形化觀察手段,從而輔助系統運維人員方便地去診斷和解決VxWorks系統中存在的任務調度、性能瓶頸等問題。

VxWorks;輔助時鐘;CPU利用率;WindML窗口系統

0 引言

VxWorks是美國風河公司推出的在國防、工業、通信、醫療、航空、航天、物聯網等領域廣泛應用的操作系統,以高性能、高可靠、強實時等為其顯著特點[1]。

在嵌入式系統中,通常采用交叉方式進行開發與調試,由主機端開發工具實現對目標機的性能監控[2]。在目標機沒有特別方便的圖形化系統監察手段,尤其運行態過程沒有開發機的情況下,很難通過圖形化手段觀察系統運行情況,因此本文針對此需求研究一種在WindML窗口系統下實時觀察VxWorks系統下CPU利用率的手段,為軟件開發人員診斷VxWorks系統中存在的任務調度問題,性能問題提供技術參考。

1 VxWorks任務

1.1 任務

在VxWorks系統下,一個任務可以理解為一段程序的執行,系統內核通過TCB(Task Control Block)任務控制[3]塊來對每個任務當前用到的CPU各相關寄存器的值、對應的任務棧空間、任務優先級等各類任務運維所需的信息進行管理與控制。每個任務具有睡眠、就緒、運行、掛起、阻塞等狀態。

1.2 任務運行調度

任務調度就是要由系統核心服務決定CPU當前需要執行哪個任務的代碼,而調度的核心就是需要設計一種調度算法來為就緒等待運行的任務分配CPU資源。VxWorks操作系統通常采用基于優先級搶占式調度算法和Round-Robin輪轉調度算法[4]這兩類算法相結合的方式進行多任務調度。

在一個多任務運行的生產環境下,應用程序可以創建并生成多個獨立任務完成相關業務,這可以使CPU利用率得到最優發揮。VxWorks多任務Wind內核[5]采用中斷機制來驅使調度器正常運轉,實現較快的上下文切換和較低的中斷延遲。

2 WindML媒體庫

WindML(Wind Media Library)風河媒體庫是VxWorks系統下為用戶提供的一個用于開發GUI圖形用戶界面程序的框架系統。

WindML主要由驅動開發包和軟件開發包組成: DDK提供硬件驅動的開發標準接口庫,用戶可以開發顯卡、聲卡、操控等設備驅動程序,它是SDK 和硬件的中間層[6],SDK 用來開發應用程序,在圖元、操控、音頻、字體、窗口管理及可視化控件等方面提供API。

3 任務的CPU利用率監測方法

3.1 spy的使用方法

CPU利用率其實就是運行的程序占用CPU資源的時間比例,表示機器在某個時間點的運行程序的情況。使用率越高,表明機器在這個時間上運行了很多程序,或者說程序比較耗CPU資源,反之較少。

目前有多種在嵌入式計算機操作系統中檢測CPU利用率的方法,嵌入式操作系統VxWorks中主要有兩種CPU占用率檢測的方法:

第一種:通過創建兩個特殊的任務,一個優先級最高和一個優先級最低的任務,在高優先級任務中運行一個循環次數很大的循環代碼,用于占用所有的CPU時間,并記錄一段時間內計數值;然后再設置一個優先級別最低的任務,當所有任務都停止時CPU才會調度此任務,此任務記下在無其他任務占用CPU的情況下的計數值,則CPU占用率=(total-idle)% total。

第二種:通過操作系統附帶的spy--Task activity monito[7],其利用輔助定時器產生中斷,并且內核的任務控制塊TCB會為每個被調度的任務維護一個計數器。通過記下被中斷的任務,并且將該任務的計數器不斷累加。經過一段時間后,每個任務的計數器就真實反映該任務占用CPU的情況。spy利用抽樣技術,得到的CPU利用率的準確程度取決于任務的持續性和周期性。

3.2 spy的使用方法

以VxWorks6.9系統對應的集成開發環境Workbench 3.3為例,說明spy工具的配置及使用方法。選擇鏡像工程的Kernel Conf i guration,進入內核組件編輯配置界面。按如下路徑依次點擊:

Hardware(default)àperipheralsàclocksàAux clock,右鍵包含該組件,如圖1所示為輔助時鐘組件已經配置進系統。

圖1 輔助時鐘組件配置

圖2 spy監測工具配置

圖3 spy啟動后的周期性CPU利用率報告

按如下路徑依次點擊:

development tool componentsàspy,右鍵包含該組件,如圖2所示為spy監聽工具組件已經配置進系統,并且可支持最多200個任務對CPU占用的情況監控。

配置并重新編譯VxWorks鏡像,便可以使用spy工具。在shell下輸入spy命令即可啟動實時監控,圖3所示為某次監控報告的摘要信息。

輸出的報告有兩列關鍵信息,分別描述如下:

total列信息反映了從啟動輔助時鐘和監測任務開始后,每個任務的CPU活躍度

delta列信息反映了從上一次CPU利用率報告以來的CPU活躍度

spyLib庫提供spyCommon函數,帶一函數指針參數。函數指針類型為(int)(*p)(char * fmtStr,…)。可以通過編寫自定義函數來間接獲取spy需要打印的數據,spy調用該函數按行打印結果,可以不斷分析每一行字符串來得到需要的結果。

4 CPU利用率圖形化方法

4.1 總體結構與設計

嵌入式VxWorks系統運行時CPU利用率圖形化顯示方法主要由三部分組成:(1)輔助時鐘中斷服務;(2)周期采樣任務,(3)圖形化顯示任務。

如圖4所示為它的總體結構圖。

圖4 總體結構圖

本工具提供了實時監測任務占用CPU時間的控件類實現類的主接口spyCpuStatus會發起一個任務周期調用spyCpuReport來顯示每個任務、中斷、內核、空閑分別消耗的CPU時間同時會顯示自輔助時鐘啟動開始以來的CPU時間總使用情況和兩次spyCpuReport之間相關使用情況的變化相關CPU占用時間數據由連接到輔助時鐘中斷的中斷級程序來收集。當前該類控件還不能用在無輔助時鐘的CPU上。那些在輔助時鐘中斷級之上的中斷不能被監測到

4.2 實施方案及關鍵技術

嵌入式VxWorks系統運行時CPU利用率圖形化顯示方法的設計主要包括以下幾個方面的關鍵技術:

(1)初始化各類時間變量

在任務運行上下文、中斷程序運行上下文、空閑idle任務運行上下文、內核態運行上下文,都需要獲取CPU資源來執行,因此需要分別為這些情況定義相關的時間變量來統計各類情況下對CPU的時間占有計數。且需要分別為它們定義兩種類型的變量:統計自開始監控以來的總時間;每兩次抽樣之間的時間累積變化。

同時需要獲取系統當前所有的任務列表,并根據每個任務的TCB任務控制塊,將每個任務的運行時間統計變量tick值歸零。

(2)初始化輔助時鐘

掛接輔助時鐘中斷程序ISR該函數在輔助時鐘每產生一個滴答tick數的時候被調用,調用頻率為設置的輔助時鐘中斷頻率。ISR中斷服務程序主要用于統計中斷、內核空閑、內核時間、運行任務的tick計數的累加,亦即按如下情況進行處理:

如果打斷一個中斷,則中斷tick數增加

如果打斷內核運行,則內核tick數增加

如果打斷空閑任務,則空閑tick數增加

如果打斷就緒任務,則任務tick數增加

以上各個tick都是輔助時鐘的tick,當設置輔助時鐘頻率200時,則1個tick為1/200秒。

(3)周期性更新CPU利用率數據

一個優先級為5的抽樣任務,該任務調用頻率設置為每秒調用一次。該任務負責累加在兩次抽樣之間整個系統中“輔助時鐘中斷”+“所有的任務”+“內核”+“中斷”+“空閑任務”占用CPU的總時間,每類時間的更新方法相同,描述如下:

首先將兩次抽樣之間某類型的時間增量spyCpu_XXX_Inc_Ticks臨時保存在臨時變量tmp_XXX_Inc_Ticks中;

隨后將spyCpu_XXX_Inc_Ticks清零,供輔助時鐘中斷繼續從頭累加;

然后將臨時保存的增量tmp_XXX_Inc_Ticks累加至總時間量spyCpu_XXX_Total_Ticks

亦即可以得出每次采樣點下的各類信息占用CPU的百分比之和,便可以給圖形化程序提供數據支撐。

(4)圖形控件的結構定義

圖形化的關鍵,是利用WindML圖形系統下的窗口重繪函數進行CPU利用率的實時繪制,需要在窗口內部區域定義柵格,整個控件所需的數據結構定義如下:

// 動態曲線框12條垂直線x坐標值數組

// 動態曲線框每條垂直線左移的步進索引

// 采樣值步進的像素值

// 動態曲線框底框所同時容納的采樣點個數

// 已采樣的次數

// 所有采樣點的(x,y)坐標

// 采樣CPU的周期(單位:秒)

(5)CPU利用率的實時繪制

每一個WindML圖形窗口,均有與其對應的消息回調函數機制[8],通過調用winCreate標準API創建窗口時,注冊MGS_DRAW窗口重繪消息對應的處理回調函數,來實現對CPU利用率的繪制。以下為所需注冊的窗口回調函數表,其中cbWinDraw為窗口刷新重繪函數。

在窗口重繪函數中,根據采樣點的刷新頻率、每次刷新的步進像素值等配置信息,利用WindML提供的以下uglXXX繪圖函數:

通過圖形編程實時將采集到的數據繪制為曲線圖,窗口每次重繪的可視化邏輯流程圖見圖5。

圖5 CPU利用率曲線每次重繪的流程圖

圖6 WindML窗口下的CPU利用率繪制

通過定制修改spyLib庫,并集合WindML窗口系統重繪機制以及ugl繪圖函數,最終實現了在VxWorks平臺下圖形化實時顯示CPU利用率的功能,效果如圖 6所示。

5 結論和進一步的工作

本文介紹了嵌入式VxWorks操作系統下的一種CPU利用率圖形化顯示方法。它采用系統輔助時鐘硬件提供的周期性中斷服務,對系統中當前所有運行的任務執行時間進行周期性抽樣,基于VxWorks系統的WindML多媒體圖形庫提供的窗口系統,在從右往左移動的網格化畫布中,實時將當前以及先前所有采樣點對應的CPU利用率通過直連連接描繪,為用戶在目標機下提供CPU利用率的圖形化觀察手段。該方法幫助嵌入式VxWorks系統開發人員更直觀、形象的了解目標VxWorks的實時性能,以方便開發者監測和分析診斷目標操作系統運行以及執行的應用程序可能出現的各種問題。

本文給出了該方法的設計模型和一些核心技術的實現原理,完成了一個嵌入式VxWorks操作系統的CPU利用率分析工具的框架。但與Windows相比,無論從數據采集的靈活性和可配置性方面,還是對于可視化部分的自定義查看等靈活操作等方面都存在著一些差距,同時對于多核系統下的CPU利用率監控,還需要進一步的研究充實和完善。

[1]陳智育,溫彥軍,陳琪.VxWorks程序開發實踐[M].北京:人民郵電出版社,2004.

[2]孔祥營,張保山,俞烈彬.VxWorks驅動及分布式編程[M].北京:中國電力出版社,2007.

[3]王金剛,宮霄霖,楊錫勱.基于VxWorks的嵌入式實時系統設計[M].北京:清華大學出版社,2004.

[4]周啟平,張楊,吳瓊.VxWorks開發指南與Tornado實用手冊[M].北京:中國電力出版社,2004.

[5]曹桂平,張勇,王麗娜.VxWorks設備驅動開發詳解[M].北京:電子工業出版社,2011.

[6]練學輝,朱佳麗,喬大雷.基于WindML的圖形開發與應用[J].雷達與對抗,2015,35(1):65-68.

[7]VxWorks Kernel Programmers Guide 6.9.USA: WindRiver Corporation,2015

[8]趙剛,張翀,江勇.計算機圖形顯示、加速及實現技術——基于VxWorks的嵌入式圖形系統開發實例[M].北京:電子工業出版社,2009.

Design and implementation of a graphical display method for CPU utilization of VxWorks system

Cui Juan
(Jiangsu Automation Research Institute,Lianyungang 222061,China)

This paper introduces a graphical display method of CPU utilization in embedded VxWorks operating system.Using periodic interrupt service which provided by system auxiliary clock hardware,periodic sampling of execution time in all running tasks.Based on the window system of WindML multimedia library,on the grid in the canvas,portrayed all the sampling points corresponding to CPU utilization value by directly connecting every point.The paper provides users with a graphical means of observation of CPU utilization in the target machine,easily helping operations engineer diagnose and solve the existing VxWorks system task scheduling problems,performance bottleneck issues etc..

VxWorks;Auxiliary Clock;CPU Utilization;WindML Windows System

崔娟(1982—),女,陜西延安人,碩士,高級工程師,主要研究方向為嵌入式操作系統、平臺軟件。

猜你喜歡
嵌入式系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
TS系列紅外傳感器在嵌入式控制系統中的應用
電子制作(2019年7期)2019-04-25 13:17:14
嵌入式系統通信技術的應用
電子制作(2018年18期)2018-11-14 01:48:16
搭建基于Qt的嵌入式開發平臺
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
嵌入式軟PLC在電鍍生產流程控制系統中的應用
電鍍與環保(2016年3期)2017-01-20 08:15:32
主站蜘蛛池模板: 亚洲人成网7777777国产| 欧美亚洲香蕉| 内射人妻无码色AV天堂| 亚洲综合色区在线播放2019| 日韩午夜伦| 57pao国产成视频免费播放| 亚洲成人www| 911亚洲精品| 国产精品女在线观看| 国产网站免费| 国产新AV天堂| 国产人成乱码视频免费观看| 国产精品播放| 中文天堂在线视频| 国产精品主播| 久久久久免费看成人影片| 欧美h在线观看| 欧美精品黑人粗大| 美女视频黄频a免费高清不卡| 成人一级免费视频| 超碰aⅴ人人做人人爽欧美| 一级爆乳无码av| 国产成人91精品免费网址在线| 国产无遮挡裸体免费视频| 亚洲精品国偷自产在线91正片 | 亚洲天堂日韩av电影| 国产精品私拍在线爆乳| 在线欧美国产| a色毛片免费视频| 亚洲成人免费在线| 国产91麻豆视频| 午夜视频日本| 欧美成人二区| 国产精品浪潮Av| 毛片免费高清免费| 91久久偷偷做嫩草影院免费看| 亚洲一级色| 免费无码网站| 怡红院美国分院一区二区| 露脸真实国语乱在线观看| 国产成人综合久久精品尤物| 国产三级视频网站| 亚洲国产中文欧美在线人成大黄瓜| 欧美日韩国产综合视频在线观看| 五月婷婷丁香综合| 国产综合精品日本亚洲777| 亚洲黄色成人| 日本免费高清一区| 一区二区三区四区日韩| 国产不卡一级毛片视频| 中文字幕无码av专区久久| 婷婷色一二三区波多野衣| 亚洲高清在线天堂精品| 久久香蕉欧美精品| 第九色区aⅴ天堂久久香| www.99在线观看| 中字无码精油按摩中出视频| 国产乱论视频| 亚洲欧美国产高清va在线播放| 国产aⅴ无码专区亚洲av综合网| 日韩大片免费观看视频播放| 青青青国产视频手机| 成人一级免费视频| 国产精品无码作爱| 欧美一区二区自偷自拍视频| 亚洲天堂777| 亚洲人成网18禁| 欧美日韩一区二区在线播放| 综合网天天| 日韩东京热无码人妻| 日本欧美视频在线观看| 国产麻豆精品手机在线观看| 区国产精品搜索视频| 99视频在线观看免费| 香蕉在线视频网站| 超级碰免费视频91| 日本一区二区不卡视频| 一级黄色欧美| 天天操精品| 欧洲亚洲一区| 韩国福利一区| 免费看av在线网站网址|