學(xué)習(xí)啦>學(xué)習(xí)電腦>選購(gòu)與維護(hù)>選購(gòu)指南>

CPU使用率是如何計(jì)算的

時(shí)間: 黎正888 分享

  當(dāng)我們的程序開得多了,CPU的使用率就會(huì)上升,那CPU使用率是如何計(jì)算的呢?下面就讓學(xué)習(xí)啦小編給大家說(shuō)一下CPU使用率是如何計(jì)算的。

  CPU使用率的算法

  方法1: 使用CPU的處理能力基準(zhǔn)計(jì)算實(shí)時(shí)CPU占用率

  具體描述:

  (1) 在RTOS系統(tǒng)啟動(dòng)前, 使用Tick中斷測(cè)試CPU的處理能力基準(zhǔn) CPUPerformanceBase;

  (2) 在系統(tǒng)進(jìn)入運(yùn)行后, 使用空閑任務(wù)執(zhí)行與測(cè)試CPU處理能力基準(zhǔn)完全相同的算法, 得到RTCPUPerformance.

  (3) 周期地計(jì)算CPU占用率, 并清除RTCPUPerformance的值, 一般每秒鐘計(jì)算一次:

  RealTime CPU Load = 1 - (RTCPUPerformance/CPUPerformanceBase) * 100%

  優(yōu)點(diǎn):

  (1) 實(shí)現(xiàn)簡(jiǎn)單

  (2) 所得到的CPU占用率非常準(zhǔn)確, 誤差只取決于CPUPerformanceBase的測(cè)試結(jié)果和整除時(shí)的余數(shù), 通常誤差小于

  1%

  (3) 不占用硬件資源

  缺點(diǎn):

  (1) CPU必須一直全速運(yùn)行, 不能修改CPU主頻, 也不能使CPU進(jìn)入掉電保護(hù)模式

  (2) 不能得到系統(tǒng)中每個(gè)任務(wù)對(duì)CPU占用率的貢獻(xiàn)

  (3) 必須有一個(gè)空閑任務(wù)才能計(jì)算

  評(píng)價(jià):

  這個(gè)算法只適用于工控, 電信等對(duì)不需要使CPU進(jìn)入掉電保護(hù)模式的領(lǐng)域.

  方法2: 在Tick中斷中對(duì)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ù)對(duì)CPU占用率的貢獻(xiàn) = 一個(gè)周期內(nèi)該任務(wù)被采樣到的次數(shù) / tickIntFrequance * 100%

  優(yōu)點(diǎn):

  (1) 實(shí)現(xiàn)簡(jiǎn)單

  (2) 支持CPU掉電模式

  (3) 可以大致得到每個(gè)任務(wù)對(duì)CPU占用率的貢獻(xiàn)

  缺點(diǎn):

  (1) 誤差取決于Tick的頻率和OS中每個(gè)任務(wù)的運(yùn)行時(shí)長(zhǎng), 因此誤差非常大

  評(píng)價(jià):

  這個(gè)算法適用于對(duì)CPU占用率精度要求不高的消息電子產(chǎn)品.

  方法3: 精確計(jì)算每個(gè)任務(wù)對(duì)CPU占用率的貢獻(xiàn)

  具體描述:

  (1) 除Tick中斷外,另開一個(gè)比Tick中斷頻率快若干倍的周期中斷(就叫AUXTimer中斷吧), 這個(gè)中斷只對(duì)一個(gè)計(jì)數(shù)器執(zhí)

  行一次累加.

  (2) 在OS每次執(zhí)行任務(wù)切換時(shí)讀取該計(jì)數(shù)器的值(AUXTimer), 并保存到TCB中, 比如, 從任務(wù)Task1切換到任務(wù)Task2,

  算法如下:

  Task1, 換出動(dòng)作:

  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, 換入動(dòng)作:

  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ù)對(duì)CPU占用率的貢獻(xiàn) = 一個(gè)周期內(nèi)該任務(wù)的總運(yùn)行時(shí)間 / 一個(gè)周期內(nèi)的總時(shí)間

  RealTime CPU Load = 所有任務(wù)的CPU占用率之和

  對(duì)這個(gè)方法進(jìn)行簡(jiǎn)單改進(jìn), 就可以實(shí)現(xiàn)對(duì)CPU占用率進(jìn)行實(shí)時(shí)測(cè)量, 看官自己動(dòng)動(dòng)腦筋吧.

  優(yōu)點(diǎn):

  (1) 誤差取決于AUXTimer中斷的頻率, 可以非常精確地得到每個(gè)任務(wù)對(duì)CPU占用率的貢獻(xiàn)

  缺點(diǎn):

  (1) 復(fù)雜, 加大了任務(wù)切換時(shí)的開銷

  (2) 和前兩種算法相比, 這個(gè)算法要多占用一個(gè)硬件資源

CPU使用率是如何計(jì)算的相關(guān)文章

1.cpu使用率如何計(jì)算

2.cpu正常使用率多少

3.如何查看cpu使用率

4.服務(wù)器cpu使用率多少算正常

5.CPU是如何進(jìn)行運(yùn)算的

.

CPU使用率是如何計(jì)算的

當(dāng)我們的程序開得多了,CPU的使用率就會(huì)上升,那CPU使用率是如何計(jì)算的呢?下面就讓學(xué)習(xí)啦小編給大家說(shuō)一下CPU使用率是如何計(jì)算的。 CPU使用率的算法 方法1: 使用CPU的處理能力基準(zhǔn)計(jì)算實(shí)時(shí)CPU占用率 具體描述: (1) 在RTOS系統(tǒng)啟動(dòng)前, 使
推薦度:
點(diǎn)擊下載文檔文檔為doc格式

精選文章

  • cpu是如何制造出來(lái)的
    cpu是如何制造出來(lái)的

    作為一個(gè)數(shù)碼愛好者,我想很多人都會(huì)好奇,CPU是如何被制造出來(lái)的呢?下面就讓學(xué)習(xí)啦小編給大家分享一下CPU是如何制造出來(lái)的。 CPU的制造過程 硅片制備

  • 如何安裝CPU
    如何安裝CPU

    DIY大家都知道是自己動(dòng)手做的意思。CPU安裝到主板上是DIY組裝電腦最重要的一個(gè)環(huán)節(jié),如果沒有安裝好,整臺(tái)電腦就是組裝失敗的結(jié)果。下面就讓學(xué)習(xí)啦小

  • 臺(tái)式機(jī)如何換CPU
    臺(tái)式機(jī)如何換CPU

    臺(tái)式機(jī)升級(jí)CPU通常是比較有效的為電腦提升性能的方法 ,學(xué)習(xí)啦小編給大家介紹下?lián)Q裝CPU的過程。 臺(tái)式機(jī)更換cpu CPU的型號(hào)不同其接腳也不相同,所以升級(jí)

  • 臺(tái)式機(jī)CPU怎么涂硅膠
    臺(tái)式機(jī)CPU怎么涂硅膠

    人們?cè)谏钪袑?duì)微小的細(xì)節(jié)有人重視有人忽視,每一個(gè)微小的細(xì)節(jié)可能就是一件事情或一個(gè)人成敗的關(guān)鍵。其實(shí)涂抹散熱硅脂也是一樣,不要把它看做是一

1758651