鸡蛋属于什么类食品| kappa属于什么档次| 桦树茸的功效主治什么病| 12月有什么节日| 七月二十九是什么星座| 一黑一白是什么蛇| 一带一路指的是什么| 吃毓婷有什么副作用| 1978年是什么命| 为什么会长痣| 奇花初胎矞矞皇皇是什么意思| 寒湿体质吃什么中成药| 白龙马叫什么名字| 男性尿路感染吃什么药| 淋巴滤泡形成什么意思| 噻虫高氯氟治什么虫| 透析病人磷高了吃什么降磷| 血热皮肤瘙痒吃什么药| 桃符指的是什么| 什么动物吃蚂蚁| 孕妇不吃饭对胎儿有什么影响| 危如累卵是什么意思| 氧化亚铜什么颜色| 什么是高压氧| 1933年属什么| 伏藏是什么意思| 脖子上为什么会长丝状疣| 腰花是什么部位| 经常胸闷是什么原因| 小孩尿味道很重是什么原因| 吃亏是什么意思| dle是什么意思| 吃地瓜叶有什么好处和坏处| holly是什么意思| 什么茶不影响睡眠| 奥运会五环颜色分别代表什么| 梦到兔子是什么征兆| 肌酐高用什么药| 2005年属鸡的是什么命| 带状疱疹用什么药| 王是什么生肖| 膝关节弹响是什么原因| 小三阳和大三阳有什么区别| 什么药降肌酐| 两个方一个土是什么字| 集锦是什么意思| 舌苔紫色是什么原因| 小资生活是什么意思| 地贫是什么意思| 属蛇是什么命| 多囊肾是什么意思| 9月3号什么日子| 后背发凉是什么原因| 等离子体是什么| 生意兴隆是什么生肖| 嗔恨是什么意思| 胆囊炎要注意些什么| d g是什么牌子| 手脚发热什么原因| 属蛇适合佩戴什么饰品| 什么酒不能喝| 2031年是什么年| 救星是什么意思| 貘是什么| 六月一号什么星座| 贤侄是什么意思| 梦到生男孩有什么预兆| 囊性包块是什么| 得了咽炎有什么症状| 6.14是什么星座| 肝功能不全是什么意思| 口腔异味是什么原因引起的| 胆囊结石挂什么科| 面粉做什么好吃又简单| 十月二十八是什么星座| 弹性是什么意思| 梦见孩子丢了是什么意思| 尿路感染吃什么| opec是什么意思| 82年属什么的生肖| 黑鱼又叫什么鱼| 长期吃避孕药有什么危害| 动脉夹层是什么病| 千叶豆腐是什么做的| 故作矜持的意思是什么| 蛋糕裙适合什么人穿| 素鸡是什么做的| 72年属鼠是什么命| 什么是肌张力| 高血压吃什么药好| 五心烦热吃什么药| 骨赘形成是什么意思| 太岁是什么| 日常是什么意思| 贫血严重会得什么病| 一心向阳下一句是什么| 生蚝不能和什么一起吃| pi是什么意思| 八月二十二是什么星座| 另煎兑服是什么意思| 身在其位必谋其职是什么意思| 贪吃的动物是什么生肖| 唇腺活检主要是看什么| 为什么睡觉流口水很臭| 姝字五行属什么的| 周杰伦什么学历| 反式脂肪是什么| 零和博弈什么意思| 咕咕咕咕叫是什么鸟| 啤酒酵母是什么| 开业送什么好| 眼睛有异物感是什么原因| 早射吃什么药可以调理| 光阴荏苒是什么意思| 运动后喝什么水最好| 睡觉起来头晕什么原因| 什么奶茶最好喝| 男神是什么意思| 为什么医院开的钙都是碳酸钙| 三湖慈鲷可以和什么鱼混养| 屁股痛是什么引起的| 鸿运当头是什么意思| 一马平川是什么生肖| 阴道撕裂用什么药| 冰恋是什么意思| 胃不好吃什么药| o型血与b型血生的孩子是什么血型| 过敏性紫癜是什么原因引起的| 散光轴位是什么| 薪字五行属什么| 北京是我国的什么中心| 家奴是什么生肖| 未加一笔是什么字| 初潮是什么| con是什么意思| chemical是什么意思| 小便解不出来是什么原因| 象牙带身上有什么好处| 吃什么代谢快有助于减肥| 为什么腰疼| 大便少是什么原因| 福生无量天尊什么意思| 芒果是什么季节的水果| 湘字五行属什么的| 内痔疮用什么药治最好效果最快| 梦见被蛇追是什么意思| 什么的知了| cbb电容是什么电容| 毛尖属于什么茶| 七月八日是什么星座| 什么地方黄鳝最多| 什么是嗳气有何症状| 病理科是干什么的| 吃什么补气虚最快最好| 夏天吹什么风| 下巴长痘是什么原因| 伟岸一般形容什么人| 声字五行属什么| 为什么山东人个子高| 柔式按摩是什么意思| 女人出轨有什么表现| 做tct检查前要注意什么| 大致是什么意思| 脘腹胀满是什么意思| 喝柠檬水有什么好处和坏处| 基友是什么关系| 胸推是什么意思| 连锁反应是什么意思| 黑马什么意思| 大三阳转小三阳意味着什么| 子宫癌前期有什么症状| 身体内热是什么原因| 前列腺炎不治疗有什么后果| 儿童红眼病用什么眼药水| 祭日和忌日是什么意思| 流注是什么意思| 蛋白质被消化成什么| kda什么意思| 经常叹气是什么原因| 龟是什么结构| 取活检是什么意思| 诸君是什么意思| 白马王子是什么意思| 梦见情人是什么意思啊| 拉磨是什么意思| 心脏不好吃什么水果好| 小便疼痛吃什么药| 乳头疼是什么原因| 高血糖吃什么菜好| 血脂高吃什么药好| 什么是干眼症| 军校出来是什么军衔| 什么习习| 芒果像什么比喻句| 深邃是什么意思| 头重脚轻是什么生肖| 脸两侧长痘痘是什么原因| 人参果总皂苷是什么| 5月4号是什么星座| 什么血型容易被蚊子咬| 小孩吃什么可以长高| 眉毛中间叫什么部位| 梦见捡到钱是什么意思| 风油精有什么作用| 山楂片泡水喝有什么好处| 手机NFC什么意思| 玫瑰茄和洛神花有什么区别吗| 牡丹花是什么颜色| 吃什么不掉头发| ca是什么意思| tea是什么意思| 晚上吃什么容易入睡| 晚安好梦什么意思| 维生素h的作用及功能主治是什么| 为什么胸部会胀痛| 胸小是什么原因| 吃什么药不能献血| 梦见棺材是什么意思| 丙肝是什么病严重吗| 白带异常吃什么药| 世界上最多的动物是什么| 上升星座什么意思| 大林木是什么数字| 采字五行属什么| 什么是撸管| 什么情况下容易怀孕| 什么人不能吃芒果| 胃不好早餐吃什么好| 起床眼睛肿是什么原因| 吃什么可以增加免疫力| 瞅瞅是什么意思| 腊月初八是什么日子| 重度肠化是什么意思| 经常出汗是什么原因| 鼓风机是干什么用的| 天衣无缝是什么意思| 优雅知性是什么意思| 我在你心里是什么颜色| 缎面是什么面料| 什么水没有鱼| 熳是什么意思| 卷柏是什么植物| 坐月子可以吃什么蔬菜| 白带发黄是什么原因引起的| 子宫内膜厚是什么意思| 刚怀孕有什么症状| 眼睛红肿是什么原因引起的| 银杏果什么时候成熟| 低血压吃什么食物| 血糖高吃什么水果好| 人类的祖先是什么| 运动喝什么水补充能量| 月子吃什么最下奶| 阳虚是什么症状| 放风是什么意思| 公元500年是什么朝代| 角化型足癣用什么药| 家贼是什么生肖| 驻马店古代叫什么| 两毛二是什么军衔| 女同学过生日送什么礼物比较好| 怀孕两天会有什么反应| 胃蛋白酶原1偏低是什么意思| 变卖是什么意思| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 嵌入式开发 ? MCU ? 在VxWorks平台如何计算cpu的利用率(老站转)

共1条 1/1 1 跳转至

在VxWorks平台如何计算cpu的利用率(老站转)

菜鸟
2025-08-05 01:53:58     打赏
发信人: zeratul (十一狼), 信区: Embedded 标 题: 在VxWorks平台如何计算cpu的利用率 wenyong(原作) 发信站: UNIX编程 (Fri Mar 29 18:23:06 2002) , 转信 标题 在VxWorks平台如何计算cpu的利用率 wenyong(原作) 关键字 在VxWorks平台如何计算cpu的利用率 最近我在学VxWorks,但是总觉得如果不做点什么,光看那E版的联机文档,不会给我的功力带 来突飞猛进。我想起前一阵子,在给我们公司的产品加OAM功能时,需要测量CPU的利用率, 我们公司的VxWorks大虾们利用了反汇编攻克,应该算是成功了,但是不太稳定,偶尔回抛出 异常。于是我决心向困难挑战。 经过查阅资料,浏览各大嵌入式开发论坛,总结得下面一些方法,各有利弊。首先我先介绍 一下VxWorks的spyLib库提供的spy工具的实现原理。 Spy利用辅助定时器来产生中断,并且为每个任务维护一个计数器。然后记下被中断的任务, 并且将该任务的计数器加一。经过一段时间后,每个任务的计数器反映了该任务占用CPU利用 率的情况。很明显,这是利用抽样技术。并且得到的cpu利用率的准确程度取决于任务的持续 性和周期性。 通过查找spyLib.h的文件,我们发现除了spy()函数外,还有一spyCommon函数,带一函数指针 参数。推测函数指针类型为(int)(*p)(char * fmtStr,…)(经过验证确实如此)。所以 可以写一自己的函数去接受spy需要打印的数据,Spy调用该函数按行打印结果。我们可以不 断分析一行字符串来得到我们需要的结果。 int SpyPtnFunc(const char * fmtPtn,...) { char buf[128]; CPUUSAGEDATAMSG data; va_list vl; va_start(vl,fmtPtn); vsprintf(buf,fmtPtn,vl); //得到一行字符串。 va_end(vl); //分析buf,得到一个任务的Cpu的使用情况。 return 0; } 另外一种方法是利用一特殊任务,该任务的优先级比系统中的所有任务的优先级都低,该任 务是死循环,该任务的目的就是消耗cpu资源,占用cpu空闲时间,因为当系统中其它任务都 被挂其时,该任务才能得到cpu的使用权。假设一段时间total内,该任务的运行时间为idle ,cpu利用率的计算公式为(total-idle)%total。这一种方法实现起来很简单,但是它只能 算得整个系统的cpu使用情况,不能得到单个任务的cpu使用情况!同时它会使cpu满负荷工作 。源代码如下 #include "VxWorks.h" #include "semLib.h" #include "taskLib.h" #define SECONDS_TO_BURN 60 typedef struct cpuUsage { SEM_ID startSem; int didNotComplete; unsigned long ticksNoContention; int nBurnNoContention; unsigned long ticksNow; int nBurnNow; double usage; } cpuUsage; static cpuUsage *pcpuUsage=0; static double cpuBurn() { int i; double result = 0.0; for(i=0;i<5; i++) result += sqrt((double)i); return(result); } static void cpuUsageTask() { while(TRUE) { int i; unsigned long tickStart,tickEnd; semTake(pcpuUsage->startSem,WAIT_FOREVER); pcpuUsage->ticksNow=0; pcpuUsage->nBurnNow=0; tickStart = tickGet(); for(i=0; i< pcpuUsage->nBurnNoContention; i++) { cpuBurn(); pcpuUsage->ticksNow = tickGet() - tickStart; ++pcpuUsage->nBurnNow; } tickEnd = tickGet(); pcpuUsage->didNotComplete = FALSE; pcpuUsage->ticksNow = tickEnd - tickStart; } } double getCpu() { if(pcpuUsage->didNotComplete && pcpuUsage->nBurnNow==0) { pcpuUsage->usage = 0.0; } else { double temp; double ticksNow,nBurnNow; ticksNow = (double)pcpuUsage->ticksNow; nBurnNow = (double)pcpuUsage->nBurnNow; ticksNow *= (double)pcpuUsage->nBurnNoContention/nBurnNow; temp = ticksNow - (double)pcpuUsage->ticksNoContention; temp = 100.0 * temp/ticksNow; if(temp<0.0 || temp>100.0) temp=0.0; /*handle tick overflow*/ pcpuUsage->usage = temp; } pcpuUsage->didNotComplete = TRUE; semGive(pcpuUsage->startSem); printf("CPU usage:%f\r\n",pcpuUsage->usage); return(pcpuUsage->usage); } void cpuUsageInit(void) { unsigned long tickStart,tickNow; int nBurnNoContention=0; int ticksToWait; ticksToWait = SECONDS_TO_BURN*sysClkRateGet(); pcpuUsage = calloc(1,sizeof(cpuUsage)); tickStart = tickGet(); /*wait for a tick*/ while(tickStart==(tickNow = tickGet())) {;} tickStart = tickNow; while(TRUE) { if((tickGet() - tickStart)>=ticksToWait) break; cpuBurn(); nBurnNoContention++; } pcpuUsage->nBurnNoContention = nBurnNoContention; pcpuUsage->startSem = semBCreate (SEM_Q_FIFO,SEM_EMPTY); pcpuUsage->ticksNoContention = ticksToWait; pcpuUsage->didNotComplete = TRUE; taskSpawn("cpuUsageTask",255,VX_FP_TASK,1000,(FUNCPTR)cpuUsageTask, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } 以上两种方法我都实现了,工作的很正常! 谢谢! 洗一个澡,看一朵花,吃一顿饭,假使你觉得快活,并非因为澡洗得 干净,花开得好,或者菜合你的口味,主要是因为你心上没有挂碍,轻松 的灵魂可以专注肉体的感觉,来欣赏,来审定。 ※ 来源:.UNIX编程WWW apue.dhs.org. [FROM: 211.101.140.97] [align=right][color=#000066][此贴子已经被amine于2002-5-30 17:53:58编辑过][/color][/align]



关键词: VxWorks     平台     如何     计算     利用率     老站转         

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
脱髓鞘病变是什么意思 吃什么缓解便秘 丙氨酸是什么 为什么会得阑尾炎 夜尿增多是什么原因
图灵测试是什么 诺如病毒是什么病 分子是什么 过三关 是什么意思 祸不及家人前一句是什么
腊排骨炖什么好吃 虚心接受是什么意思 多春鱼为什么全是籽 7月24日是什么星座 肠胀气吃什么药
bebe是什么意思 14楼五行属什么 过敏性鼻炎吃什么药好的快 女人更年期是什么症状 16588a是什么尺码女装
锐步是什么档次hcv7jop9ns2r.cn 狮子的天敌是什么动物liaochangning.com 小太阳是什么意思hcv9jop7ns4r.cn 雪莲菌泡牛奶有什么功效hcv8jop0ns6r.cn 奶酪是什么hcv9jop6ns4r.cn
胃炎吃什么药效果最好hcv8jop7ns4r.cn 胸闷气短呼吸困难心慌是什么原因hcv9jop5ns2r.cn 新生儿出院回家有什么讲究hcv9jop1ns9r.cn 女生下体瘙痒用什么药hcv8jop6ns7r.cn 卑劣是什么意思hcv7jop7ns0r.cn
丙火是什么意思zhongyiyatai.com 男人梦见猫是什么意思hcv9jop4ns9r.cn 甲状腺功能减退是什么原因引起的hcv8jop2ns8r.cn 法令纹深是什么原因hcv8jop2ns2r.cn 消化不良反酸吃什么药hcv8jop8ns3r.cn
眼睛淤青用什么方法能快点消除hcv9jop3ns7r.cn 乳糖不耐受吃什么奶粉weuuu.com 蛋白粉什么时候喝最好hcv8jop5ns3r.cn 检查耳朵挂什么科hcv9jop5ns8r.cn 空调嗡嗡响是什么原因hcv9jop8ns1r.cn
百度