当前位置: 首页 > news >正文

网站开发期末作品代码和数据库运行好大全企业seo推广的绝密诀窍曝光

网站开发期末作品代码和数据库运行好大全,企业seo推广的绝密诀窍曝光,西安市建设银行网站,协会网站建设计划操作系统中CPU使用率是在软件架构设计中必须要考虑的一个重要性能指标。它直接影响到程序的执行时间以及优先级更高的任务能否实时响应的问题。而CPU使用率也不能过低,避免资源浪费。 基本原理 操作系统会统计系统总共运行了多少时间,以及在此期间每个任…

        操作系统中CPU使用率是在软件架构设计中必须要考虑的一个重要性能指标。它直接影响到程序的执行时间以及优先级更高的任务能否实时响应的问题。而CPU使用率也不能过低,避免资源浪费。

基本原理

        操作系统会统计系统总共运行了多少时间,以及在此期间每个任务运行了多长时间,这样就能获取每个任务的CPU使用率了;比如系统总共运行了100us,A任务运行了32us,B任务运行了12us,空闲任务运行了56us,这样每个任务的CPU使用率就分别为32%、12%、56%,总的CPU使用率就是44%.

具体实现

1.开启CPU使用率统计功能
#define configGENERATE_RUN_TIME_STATS   1
2.实现时间获取接口
#define portGET_RUN_TIME_COUNTER_VALUE() xTaskGetTickCount()

        时间获取接口的实现方式有多种,最简单的就是这里的使用系统tick的形式,但是这种方式精度很低,只能用于粗略估算,因为其时基和系统时基是一样的,想要精度高则需要时间精度为系统时基的10倍以上,比如系统时基是1ms,则此处的时基为100us或10us;

        高精度的时基最简单的可以采用定时器中断的形式,如设定一个定时器100us中断一次,中断里面对一个变量++,然后给这个接口返回变量值;但是这样就增加了一个高频中断,损失系统性能的同时也会对统计结果造成一定的影响(因为这个高频中断不是正常运行的时候需要用的)。所以更好的实现方式是:使用RTC时钟,把RTC计数时基配置成10us,这样每过10us RTC计数寄存器就会自动加1,然后给该接口返回RTC计数寄存器的值,这样就实现了不用频繁进入中断但是也能实现周期计数;有同学可能会问,普通定时器的计数寄存器也能周期自增啊,并且计数周期也能配置成10us,那么用普通定时器可以不呢?答案是可以但不太好,因为普通定时器的计数寄存器一般为16位的,则其最大计数为65536,对应655.36ms,时间太短了,一下就溢出了,但是RTC计数寄存器是32位的,如果计数周期是10us的话可以计11.93小时,这个时间就足够用了。

3.使用系统接口获取使用率
void DumpTaskSysFree(void)
{uint8_t CPU_RunInfo[400] = {0};memset(CPU_RunInfo, 0, 400);vTaskList((char *)&CPU_RunInfo);printf("任务名  任务状态  优先级  剩余栈  任务序号\r\n ");printf("%s\r\n", CPU_RunInfo);memset(CPU_RunInfo,0,400); vTaskGetRunTimeStats((char *)&CPU_RunInfo); printf("任务名  运行计数  使用率 \r\n ");printf("%s\r\n", CPU_RunInfo);
}

注意事项

1.FreeRTOS统计CPU占用时间使用的是一个32bit无符号整形来记录系统时间的,且没有对变量溢出做处理,当定时器精度为10us时,32bit无符号整形支持的最大计数时间为:Tmax = 2^32 * 10us/(1000*1000*3600)=11.93小时;当运行时间超过这个时间时,统计结果将不准确。当然这个时间一般是够用的,因为一般都是在调试期间或者想要了解CPU还有多少使用空间时会打开这个功能,调试完毕或者了解完毕就关闭了。

参考文章:FreeRTOS 原理 --- FreeRTOS系统中CPU使用率统计方法分析 - 流水灯 - 博客园

http://www.dtcms.com/a/581528.html

相关文章:

  • 石家庄企业网站网页设计wordpress主题demo
  • 宝塔 wordpress 多站点乐清营销网站
  • 【一、基础篇】Transformer 模型主要由哪两部分组成?
  • YASKAWA机器人焊机气体省气
  • Java--ACM常用语句
  • uniapp 微信小程序记录
  • Fastapi 进阶三:数据库的应用
  • 把VMware虚拟机下的Ubuntu系统文件夹中文路径名称改为英文(图文详解)
  • 建个小型网站服务器西部网站助手
  • How to manage python version via pyenv on mac m2 chip
  • 从零开始写算法-栈-最小值(记忆化pair)
  • 网站建设市场介绍电子商务网址
  • Sora:视频生成的突破与启示
  • Flutter:视频预览功能
  • IPIDEA海外代理助力-Youtube视频AI领域选题数据获取实践
  • 开机视频动画
  • 智能守护校园:视频汇聚平台EasyCVR如何构建校园消防安全新防线
  • 平台类网站建设企业网站个人备案
  • python+django/flask的车辆尾气检测排放系统-可视化大屏展示
  • AI Agent设计模式 Day 2:Plan-and-Execute模式:先规划后执行的智能策略
  • 32HAL——ADC模数转换多通道功能
  • 10_10_网站建站主页网站怎么建设
  • 模型不再是一整块!Hunyuan3D-Part 实现可控组件式 3D 生成
  • 【ZeroRange WebRTC】SDP 在 WebRTC 中的角色与工作原理(深入指南)
  • 高并发下的重复记录之谜:从前端到数据库的全方位排查
  • AI搜索时代品牌护城河:从“流量争夺”到“可信度竞争”的战略跃迁
  • 【推荐系统14】数据分析:以阿里天池新闻推荐为例学习
  • 安卓进阶——OpenGL ES
  • 做app动态界面的网站有哪些网站建设从哪入手
  • RV1126 NO.41:利用OPENCV的API计算轮廓面积