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
需要等待一些網絡的數據。
【參考文獻】