1. 程式人生 > >嵌入式系統中如何降低CPU佔用率

嵌入式系統中如何降低CPU佔用率

轉載原文

在軟體開發和效能測試中,CPU佔用率是一個很重要的指標,到底有哪些因素會導致CPU佔用率上升呢?又有哪些手段可以降低CPU的佔用率呢?簡單地總結了一下關於CPU佔用率的那些事。

1. 如何測試CPU佔用率?

首先,我們要學會如何測試程式的CPU佔用率,這裡簡單地給出最基礎的方法:

Windows上可以通過Ctrl+Alt+Del組合調出“工作管理員”,然後檢視指定程序的詳細資訊即可。

Linux/Android平臺,可以在命令列輸入:top 命令,找到指定程序即可。

注意,測試的時候,一般要分多組情況來測試,比如:空閒時、中等負荷執行時、高負荷執行時……

2. 有哪些因素導致CPU佔用率上升?

(1) 複雜計算

執行一些演算法處理,比如:音視訊編解碼、影象處理、科學計算等等,特別是一些浮點數的運算。

(2) 持續佔用CPU

某些高優先順序的程序/執行緒持續佔用CPU,很少或者從來不sleep,類似 while(1) {}

(3) 資料拷貝

頻繁進行大量的資料拷貝。

(4) 頻繁的系統呼叫

比如:頻繁呼叫 printf 列印、讀寫硬碟、網路收發等等。

3. 有哪些手段可以降低CPU佔用率?

(1) 硬體加速

常見的硬體加速有:多核計算、GPU、DMA、音視訊的硬體編解碼等,很多硬體加速功能需要平臺提供API或者驅動支援,在需要優化CPU佔用率的時候可以重點關注一下。

(2) 學會“讓出”CPU

在程式中,有多種方法可以“讓出”CPU,第一種是 sleep,第二種是 await/signal 機制,任何程式語言都會有類似的介面。

另外,還有一種策略:適當降低你的程序/執行緒的優先順序。

(3) 避免頻繁的資料拷貝

在多執行緒程式設計中,資料拷貝是難免的,但是完全可以通過一些技巧減少一些不必要的拷貝,心中要有這理念,程式設計時多留點心。

(4) 合併一些系統呼叫

很多時候,多次列印可以儘量合併到一起再列印、多次硬碟/網路訪問請求也可以合併到一起再發送。

4. 小結

關於CPU佔用率的那些事就介紹到這兒了,很多地方只是點到而止,並沒有完全展開,大家可以搜尋相關的文章和資料做深度地優化和分析,有任何疑問或者建議歡迎留言或者來信

相關推薦

嵌入式系統如何降低CPU用率

轉載原文 在軟體開發和效能測試中,CPU佔用率是一個很重要的指標,到底有哪些因素會導致CPU佔用率上升呢?又有哪些手段可以降低CPU的佔用率呢?簡單地總結了一下關於CPU佔用率的那些事。 1. 如何測試CPU佔用率? 首先,我們要學會如何測試程

C++程式設計,利用WINDOWS API獲得系統狀態資訊[CPU用率,硬碟使用情況,記憶體使用情況]

#include <Ice/Ice.h> #include <iostream> #include <GetWinSysState.h> #include <Winbase.h> #include <conio.h>

(轉)linux top命令cpu用率含義及案例分析

原文:https://blog.csdn.net/ydyang1126/article/details/72820349 linux top命令中各cpu佔用率含義 0 效能監控介紹 1 確定應用型別 2 確定基準線統計 0 安裝監控工具

降低 CPU 用率的方法

CPU 佔用率和什麼有關? 答:1.單位時間內執行的指令數目多少(使用者時間);2.I/O操作時間(等待時間);3.執行緒排程花費的時間(軟/硬中斷、優先順序調整時間)。 舉個例子: 好比一個大人,每

雲伺服器 ECS Linux 系統 CPU 用率較高問題排查思路

如果雲伺服器 ECS Linux 系統的 CPU 持續跑高,則會對系統穩定性和業務執行造成影響。本文對 CPU 佔用率較高問題的排查分析做簡要說明。可以通過 vmstat 從系統維度檢視 CPU 資源的使用情況。用法說明:格式:vmstat -n 1-n 1表示結果一秒重新整理一次。示例輸出:$ vmstat

Linux 系統 CPU 用率較高問題排查思路

CPU負載檢視方法: 使用vmstat檢視系統維度的CPU負載 使用top檢視程序維度的CPU負載 使用 vmstat 檢視系統緯度的 CPU 負載: 可以通過 vmstat 從系統維度檢視 CPU 資源的使用情況。 用法說明: 格式:vmstat -n 1# -n 1

降低指定程序的CPU用率(適合遊戲多開)

應用場景舉例 遊戲多開,比如《天書世界》網頁遊戲,單開佔用CPU30%左右;最小化能夠降低到10%以下。 如果多開,那麼CPU就是疊加累計,非常佔用CPU資源,而且掛機嚴重影響CPU溫度。

系統性能統計(CPU用率,記憶體用率系統平均負載)

1、獲取cpu佔用情況[[email protected] utx86]# top -n 1 |grep CpuCpu(s): 1.9%us, 1.3%sy, 0.0%ni, 95.9%id, 0.6%wa, 0.1%hi, 0.2%si, 0.0%st解釋:1.

lorawan在嵌入式系統的實現--節點端(一)--SX1278介紹

swd 介紹 系統 lora jxl jdb dds sdm gbk fn慮雅俸tp咽鵲嘏df劣淤孟http://nlybjdxwz.wikidot.com/p3材俑傅z1藝稅蠶79煤範醫http://gfzkbyzzzo.wikidot.com/17劣琴諏tn式萊旅rt誓

嵌入式系統的目標識別技術

corn 基本 ast 數據 vpd 機器人 同時 質量 關鍵點 在人們生活中大部分信息都是以眼睛來觀察到的。因此對視覺的研究,人們一直沒有停止前進的步伐。就像很多年前人類根據鳥的飛行特征而發明了飛機。實現了曾經遨遊天空的夢想。如今對視覺的研究,也希望有朝一日由機器人來代替

嵌入式系統使用鋰電池系列3-USB充電

By Toradex Andrija Stojkovic   歡迎閱讀本博文,這裡我們將向你介紹在嵌入式系統中鋰電池的應用概況。本文是 4 篇系列文章的第三篇。 當下 USB 充電裝置隨處可見。如果你的嵌入式裝置可以通過現有的充電頭或者類似的配件來充電,那將變得非常有用。不是嗎

嵌入式系統使用鋰電池系列2-電池管理系統

By Toradex Andrija Stojkovic   歡迎閱讀本博文,這裡我們將向你介紹在嵌入式系統中鋰電池的應用概況。本文是 4 篇系列文章的第二篇。 正如我們已經知道的,我們需要在載板上使用智慧系統為電池組實現控制、保護和充電功能。其必須具備電流

嵌入式系統使用鋰電池系列1

By Toradex Andrija Stojkovic 歡迎閱讀本博文,這裡我們將向你介紹在嵌入式系統中鋰電池的應用概況。本文是 4 篇系列文章的第一篇。 相比與其他電池技術,可充電鋰電池具有最高的能量密度。歸功於其在消費領域和高速增長的汽車市場的廣泛使用,鋰電池的價格

java獲取JVM的CPU用率、記憶體用率、執行緒數及伺服器的網口吞吐率、磁碟讀寫速率

怎麼說呢,本人菜鳥一枚,費了幾天時間,終於做了一個用java獲取JVM的CPU佔用率、記憶體佔用率、執行緒數及伺服器的網口吞吐率、磁碟讀寫速率的實現。 其中windows環境下獲取jvm 的cpu佔用率這裡是參考網上別人的東西(在此感謝提供參考的網友),其他的都是基於自己的想法做出來的。該工具類

【轉】Linux下java程序CPU用率高分析方法

文章轉載的地址: https://blog.linuxeye.cn/343.html   在工作當中,肯定會遇到由程式碼所導致的高CPU耗用以及記憶體溢位的情況。這種情況發生時,我們怎麼去找出原因並解決。 一般解決方法是通過top命令找出消耗資源高的執行緒id,利用strace命令檢視該執行緒

Java獲取CPU用率

原文連結:https://www.jianshu.com/p/015cc4805e29 最近做一個Java效能統計的問題,需要統計當前程序佔用CPU的情況,最開始使用Java MxBean來獲取 OperatingSystemMXBean osMxBean = ManagementFactory

Sublime Text 3 CPU用率過高 && WebStorm記憶體佔用過高

  用Sublime Text 3或WebStorm進行前端開發時,遇到了同樣的問題:當專案檔案比較多或檔案比較大時,CPU佔用率或記憶體佔用持續比較高,後來經查閱發現是index files導致的,可以理解為:Sublime Text 3或WebStorm需要不斷重新整理檔案索引,不斷將專案檔案從硬碟中讀到

一行命令讓CPU用率達到100%

一行命令讓CPU佔用率達到100% for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/dev/null & done 說明:

記一次CPU用率和load高的排查

  前不久公司進行了一次大促,晚上值班。大促是從晚上8點多開始的,一開始流量慢慢的進來,觀察了應用的各項指標,一切都是正常的,因為這是雙11過後的第一次大促,想著使用者的購買慾應該不會太強,所以我們的運維同事9點多就回家了在家裡面遠端支援,留下交易組和其它後端的技術值班,樓主就是交易組的。誰知10點整的時候我

用crontab、crond在嵌入式系統新增定時任務

用crontab、crond在嵌入式系統中新增定時任務 在嵌入式系統中,定時任務通過crond和cronttab兩個系統命令來聯合執行。 其中crond是定時任務的守護程序,系統開始時是沒有開啟的。crontab主要作用是管理使用者的crontab files. crontab