0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术WinCE检测CPU负载及内存占用介绍

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-02-03 09:09 次阅读

通过CPU负载信息,可以判断程序运行环境是否稳定,帮助分析程序中是否有死循环,造成系统变慢。

通过内存使用信息,可以评估程序内存占用情况,帮助分析程序中是否有内存泄漏的情况。

客户在开发初期,可能经常需要用到以上功能,英创提供一个简单的例程实现以上功能。

CPU负载检测

通过GetTickCount获得系统时间读数,通过GetIdleTime获得CPU空闲时间读数,通过计算它们之间的百分比,就可以获得CPU的负载。代码如下:
DWORD m_dwStartTick;
DWORD m_dwEndTick;
DWORD m_dwStartIdle;
DWORD m_dwEndIdle;
m_dwStartTick = GetTickCount();
m_dwStartIdle = GetIdleTime();
//Sleep(1000);
DWORD dwCpuIdle;
m_dwEndTick = GetTickCount();
m_dwEndIdle = GetIdleTime();
dwCpuIdle = ((100*(m_dwEndIdle - m_dwStartIdle)) / (m_dwEndTick - m_dwStartTick));
RETAILMSG(1, (L'CPU:%d%%\r\n', 100 - dwCpuIdle));

内存占用检测

CE中,内存一部分分配给系统使用,一部分分配给用户程序使用,这个分配的比例可以通过userinfo.txt配置文件中的Store字段来分配。
[SYSTEM]
Store='15'


这里的15表示内存15%大小分配给系统使用,剩下85%分配给用户程序使用。详情请参考光盘《使用必读》文档。

通过函数GlobalMemoryStatus,可以获得分配给用户程序的内存大小(字节为单位),及目前空余的大小。
MEMORYSTATUS memstatus;
GlobalMemoryStatus(&memstatus);
STORE_INFORMATION storeinfo;
GetStoreInformation(&storeinfo);
RETAILMSG(1, (L'MEM:%d%%\r\nuser: total%8dKB\r\n used%8dKB\r\n',
memstatus.dwMemoryLoad,memstatus.dwTotalPhys/1024,(memstatus.dwTotalPhys-memstatus.dwAvailPhys)/1024);
通过函数GetStoreInformation,可以获得分配给系统的内存大小(字节为单位),及目前空余的大小。
STORE_INFORMATION storeinfo;
GetStoreInformation(&storeinfo);
RETAILMSG(1, (L'system:total%8dKB\r\n used%8dKB\r\n\r\n',
storeinfo.dwStoreSize/1024, (storeinfo.dwStoreSize-storeinfo.dwFreeSize)/1024));
例程说明

运行程序,程序会周期性读取CPU占用率及内存占用信息,显示在界面中。

同时将信息打印到DEBUG调试串口,方便无显示屏主板使用。

该程序不会占用太多CPU资源及内存,可以放到后台运行。

例程及源码已包含在最新的开发光盘中,客户也可以联系英创工程师获得。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6064

    浏览量

    34602
收藏 人收藏

    评论

    相关推荐

    linux下查询进程占用内存方法有哪些?

    linux下查询进程占用内存方法
    发表于 04-08 06:03

    在TC387微控制器上实现内存映射,负载增加的原因是什么?

    代码和数据都是一样的。 唯一的变化是链接器脚本中定义的新区域取代了旧的内存区域,观察到核心 1 的 CPU 负载增加了近 6%。 其余内核的 CPU
    发表于 03-04 07:43

    在MDK中使用RTT为什么内存占用这么大?

    为什么在MDK中使用RTT ,内存占用这么大?
    发表于 02-26 07:19

    java中cpu占用过高如何分析

    Java中CPU占用过高是一种常见的问题,需要通过多种方法进行分析和解决。本文将详细介绍Java中CPU占用过高的原因以及如何进行分析和优化
    的头像 发表于 12-05 11:15 3888次阅读

    如何写一个内存泄漏检测工具

    的问题。 内存泄露会导致的现象:作为一个服务器,长时间运行,内存泄露会导致进程虚拟内存占用完,导致进程崩溃吧。(堆上分配的内存) 如何规避
    的头像 发表于 11-11 16:19 513次阅读

    请问该如何测试单片机程序的负载率和内存占用率?

    请问该如何测试单片机程序的负载率和内存占用
    发表于 11-08 06:11

    枚举变量占用多少内存

    枚举变量占用多少内存
    发表于 10-11 08:07

    Linux内存占用分析

    内存占用分析 每颗芯片在出厂时,其bootrom就已经固化在芯片内部,假设bootrom的地址是0x0,即上电后,会从0x0地址处开始运行程序。 在启动RISC-VLinux之前,需要先运行
    的头像 发表于 10-08 10:38 441次阅读
    Linux<b class='flag-5'>内存</b><b class='flag-5'>占用</b>分析

    Windows不明内存占用案例分析:Driver Locked

    前一段有客户反映Windows系统下不明内存占用越来越多,128GB物理内存的主机,启动完成后就有大约一半的内存占用,导致留给应用的
    的头像 发表于 09-25 14:49 761次阅读
    Windows不明<b class='flag-5'>内存</b><b class='flag-5'>占用</b>案例分析:Driver Locked

    信息技术是干什么?

    广播电子技术信息技术
    橙群微电子
    发布于 :2023年09月22日 09:17:48

    使用bm-smi查看信息时发现没有程序运行但是设备内存占用是怎么回事?

    使用bm-smi查看信息时发现,没有程序运行,但是设备内存占用
    发表于 09-20 06:58

    分享排查Linux系统CPU占用的一个Shell脚本

    众所周知,Linux系统CPU占用100%这个异常现象还是经常遇到的,因此分析其导致异常原因是解决问题的根本。
    的头像 发表于 09-04 09:17 1031次阅读
    分享排查Linux系统<b class='flag-5'>CPU</b><b class='flag-5'>占用</b>的一个Shell脚本

    集成电路是现代电子信息技术的基础

    集成电路是现代电子信息技术的基础 随着科技的不断发展,集成电路技术已成为现代电子信息技术的基础之一。它的应用范围已经涉及到电子、通信、计算机、军事等行业,已经为人们的生活和工作带来了极大的便利
    的头像 发表于 08-29 16:25 1266次阅读

    更低内存占用的通用Json库-RyanJson

    RyanJson是一个小巧的c语言json解析器,包含json文本文件解析 / 生成,专门针对内存占用进行优化,相比cJSON内存占用减少30% - 60%,运行速度和cJSON差不多
    的头像 发表于 08-24 17:23 798次阅读
    更低<b class='flag-5'>内存</b><b class='flag-5'>占用</b>的通用Json库-RyanJson

    2023年中海达星推官系列直播再度启航,与您一起探讨空间信息技术

    信息技术
    中海达
    发布于 :2023年06月21日 11:45:49