多核CPU的利用率怎么計(jì)算
多核CPU的利用率怎么計(jì)算
中央處理器(CentralProcessingUnit)的縮寫,即CPU,CPU是電腦中的核心配件,只有火柴盒那么大,幾十張紙那么厚,但它卻是一臺計(jì)算機(jī)的運(yùn)算核心和控制核心。下面是學(xué)習(xí)啦小編帶來的關(guān)于多核CPU的利用率怎么計(jì)算的內(nèi)容,歡迎閱讀!
多核CPU的利用率怎么計(jì)算:
方法1: 使用CPU的處理能力基準(zhǔn)計(jì)算實(shí)時(shí)CPU占用率
具體描述:
(1) 在RTOS系統(tǒng)啟動前, 使用Tick中斷測試CPU的處理能力基準(zhǔn) CPUPerformanceBase;
(2) 在系統(tǒng)進(jìn)入運(yùn)行后, 使用空閑任務(wù)執(zhí)行與測試CPU處理能力基準(zhǔn)完全相同的算法, 得到RTCPUPerformance.
(3) 周期地計(jì)算CPU占用率, 并清除RTCPUPerformance的值, 一般每秒鐘計(jì)算一次:
RealTime CPU Load = 1 - (RTCPUPerformance/CPUPerformanceBase) * 100%
評價(jià):
這個(gè)算法只適用于工控, 電信等對不需要使CPU進(jìn)入掉電保護(hù)模式的領(lǐng)域.
方法2: 在Tick中斷中對RTOS中的任務(wù)進(jìn)行采樣
具體描述:
(1) 系統(tǒng)進(jìn)入運(yùn)行后, 每次Tick中斷發(fā)生時(shí), 采樣一下當(dāng)前正在執(zhí)行的任務(wù), 如果CPU處于HALT態(tài), 累加haltTimes
(2) 周期性地計(jì)算CPU占用率, 一般每秒鐘計(jì)算一次, 并清除haltTimes:(tickIntFrequance表示Tick中斷的發(fā)生頻率)
RealTime CPU Load = haltTimes / tickIntFrequance
某個(gè)任務(wù)對CPU占用率的貢獻(xiàn) = 一個(gè)周期內(nèi)該任務(wù)被采樣到的次數(shù) / tickIntFrequance * 100%
評價(jià):
這個(gè)算法適用于對CPU占用率精度要求不高的消息電子產(chǎn)品.
方法3: 精確計(jì)算每個(gè)任務(wù)對CPU占用率的貢獻(xiàn)
具體描述:
(1) 除Tick中斷外,另開一個(gè)比Tick中斷頻率快若干倍的周期中斷(就叫AUXTimer中斷吧), 這個(gè)中斷只對一個(gè)計(jì)數(shù)器執(zhí)行一次累加.
(2) 在OS每次執(zhí)行任務(wù)切換時(shí)讀取該計(jì)數(shù)器的值(AUXTimer), 并保存到TCB中, 比如, 從任務(wù)Task1切換到任務(wù)Task2, 算法如下:
Task1, 換出動作:
task1的結(jié)束運(yùn)行時(shí)間 = AUXTimer的當(dāng)前值
task1的總運(yùn)行時(shí)間 = task1的總運(yùn)行時(shí)間 + task1的結(jié)束運(yùn)行時(shí)間 - task1的開始運(yùn)行時(shí)間
Task2, 換入動作:
task2的開始運(yùn)行時(shí)間 = AUXTimer的當(dāng)前值
(以上算法中沒有考慮數(shù)字回繞, 在工程實(shí)現(xiàn)時(shí)應(yīng)當(dāng)考慮, 發(fā)生回繞后任務(wù)的結(jié)束運(yùn)行時(shí)間小于任務(wù)的開始運(yùn)行時(shí)間.
(3) 周期性地計(jì)算CPU占用率, 一般每秒鐘計(jì)算一次, 并清除每個(gè)任務(wù)的總運(yùn)行時(shí)間, 下面的公式中, 一個(gè)周期內(nèi)的總時(shí)間等于AUXTimer周期除以Tick周期得到的倍數(shù):
某個(gè)任務(wù)對CPU占用率的貢獻(xiàn) = 一個(gè)周期內(nèi)該任務(wù)的總運(yùn)行時(shí)間 / 一個(gè)周期內(nèi)的總時(shí)間
RealTime CPU Load = 所有任務(wù)的CPU占用率之和
看了多核CPU的利用率怎么計(jì)算文章內(nèi)容的人還看:
1.Linux top命令查看多核CPU每個(gè)核心的使用率
6.CPU怎么查看
8.什么是多核處理器