1 概述
一个嵌入式系统通常在开发或是发布的时候经常会有遇到性能的问题,参考整个系统的硬件情况,一般还有以下几种的维度可以考虑:
- CPU Bound
- IO Bound
- Memory Bound
- GPU Bound
- NPU Bound
- NetWork Bound
2 CPU Bound
计算密集型
CPU bound指的是系统的硬盘和内存的性能,相对于CPU的性能要好很多,此时系统运作CPU Loading 100% ,CPU要读写,I/O在很短时间完成,而CPU还有很多运算要处理,CPU Loading很高。
- 大部分时间用来做计算和逻辑判断等CPU动作的程序称之为CPU bound。例如计算圆周率,在执行过程中绝大部分时间用在三角函数和开根号的计算,便是CPU bound程序
检查是否是CPU Bound,推荐一个非常好用的工具htop。
3 IO Bound
I/O bound指的是系统CPU效能相对硬盘和内存好很多,此时大部分CPU在等io的读写,此时CPU Loading不高。
I/O bound的程序一般在达到性能极限时,CPU占用率仍然较低。这可能是因为任务本身需要大量I/O操作,而pipeline(管道通信)做得不是很好,没有充分利用处理器能力
;还可能是因为数据局部性不是很好,导致较多page error,结果产生了大量disk I/O的开销。
https://blog.csdn.net/csdnnews/article/details/88265308
4 Memory Bound
内存密集型。这个常指在做频繁的内存操作。
5 GPU Bound
GPU图片绘制需求很大。比如Android中的SurfaceFlinger模块
6 NPU Bound
需要调用到大量的NPU来做深度学习计算。比如我们这雾计算系统中的人脸识别过程。
7 NetWork Bound
需要等待一些网络的数据。
【参考文献】