手臂裸金属系统CPU使用率测量
CPU usage measurment on arm bare metal system
我在ARM cortex M4
评估板上工作,它是一个bare metal
应用程序,上面没有运行任何操作系统。
现在我想测量给定过程/算法的CPU
使用情况,最好的方法是什么?
我是否应该实现一个操作系统来衡量具有满足这种需求的功能的CPU
使用情况?
这个问题几乎可以自己回答。当裸金属应用程序不在该过程/算法中时,它在做什么?测量其中一个或另一个或两者。如果你有一个裸机应用程序,在这个算法中没有完全消耗cpu,那么你已经有了一个操作系统,可以管理这个应用程序/函数的时间。您可以使用循环中相对于计时器的简单计数器中的许多方法来查看当算法获得时间片与否时,每个循环有多少计数。你可以简单地对算法本身计时,等等。
我认为当你说CPU时,你指的是整个系统,因为你的性能在很大程度上取决于你的代码和它所说的内容(当算法不是烧录时钟时,很容易对算法的处理器性能产生错误的看法)。缓存会屏蔽/操纵性能,如果您不小心并意识到它们在做什么,则很容易对性能产生很大影响。作为一个C++问题,编译器在性能和代码中都扮演着重要角色。当然,只需对命令行或代码进行最小的更改,就可以很容易地使代码运行速度提高或降低几倍。
如果算法是isr的一部分,那么处理器就会进入睡眠状态,否则,你可以使用gpio引脚和范围技术来了解运行与睡眠的比例。
实现一个操作系统来测量CPU的空闲时间对我来说似乎有点过头了。据我所知,Cortex-M4包括一个调试单元(DWT),允许您快照周期计数器。但最简单的方法是将一个引脚挂在示波器上,并在算法的输入和输出时切换。
首先,实现一个操作系统是不切实际的,甚至不可能仅仅为了衡量性能。因此,一种可能的方法是保留一个计数变量,该变量将记录在该持续时间之前发生的滴答次数。并在定时器的中断中增加该变量。
- 编写一个函数以使用 n 百分比的 CPU 使用率
- 对于等待以 std::future wait() 返回的函数的 CPU 使用率或检查标志在循环中休眠一段时间哪个更好?
- 如何降低应用程序的 CPU 使用率?
- 如何以编程方式获取任务管理器进程CPU使用率(不是PerfMon API)
- 一段时间后 CPU 使用率高
- 高CPU使用率,在API桌面复制中获取帧之间具有不同的超时间隔
- GetDC ReleaseDC 在特定上下文中的高 CPU 使用率
- 从 C++11 代码中获取系统内存和 CPU 使用率
- 在 Visual Studio 中记录 CPU 使用率
- C++如何允许等待而不会过多的 CPU 使用率
- Qtcreator 冻结,CPU 使用率为 100%
- 使用 fgets() c++ 读取大型 txt 文件时的 CPU 使用率为 99%
- OpenCL 的 CPU 使用率意外
- Loop Wregex始终返回false和高CPU使用率约50%
- 简单的C++SFML程序高CPU使用率
- 使用 PID 获取内存和 CPU 使用率
- 如何在TCP端口上实时传输数据期间减少CPU使用率
- WinAPI:在WM_PAINT省略 BeginPaint 和 EndPaint 会导致 100% 的 CPU 使用率
- 当CPU使用率高时,OpenCV会堆积内存吗
- 如何在运行SDL程序时降低CPU使用率