国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

進程cpu使用率的計算

kid143 / 3445人閱讀

摘要:計算公式亦或亦或相當于中的值的計算是內核提供的該進程在時間內消耗的。分別是該進程的子進程在用戶態和內核態消耗的。注意中的是一個絕對累計值,所以要取兩個時間點,算中消耗的。內核中,進程線程消耗的時間,單位都是這個。

計算公式
(process jiffies) * 100.0f / ((float)Hertz * (float)et * cpuCoresCount)

亦或

(process jiffies) * 100.0f / (float)Hertz / (float)et / cpuCoresCount

亦或

100 * (process jiffies)/ (float)Hertz / (float)et  / cpuCoresCount

相當于top -p pid 中 %CPU 的值

process jiffies的計算

process jiffies是內核提供的該進程在DeltaT時間內消耗的jiffies。具體是/proc//stat文件的第14-17 token。14-17token分別是utime, stime, cutime, cstime。cutime/cstime分別是該進程spawn的子進程在用戶態和內核態消耗的jiffies。

process jiffies = utime + stime + cutime + cstime

Jiffies 為Linux核心變數(unsigned long),它被用來記錄系統自開機以來,已經過了多少tick。每發生一次timer interrupt,Jiffies變數會被加一。

注意stat中的jiffies是一個絕對累計值,所以要取兩個時間點,算DeltaT中消耗的jiffies。

(process jiffies) = (current process jiffies) - (last process jiffies)

Hertz(tick per second)

什么是jiffies呢?其實就是Linux內核定義的一個時間單位,值就是1/Hertz。Linux內核中,進程/線程消耗的時間,單位都是這個 jiffies。

Hertz就是CLK_TCK,可以根據getconf CLK_TCK獲取

LINUX系統時鐘頻率是一個常數HZ來決定的, 通常HZ=100,即100Hz,一個周期即為 1/100s = 10ms = 10^7 ns,那么他的精度度就是10ms(毫秒)。也就是說每10ms一次中斷。所以一般來說Linux的精確度是10毫秒。

et

這里是每次統計的間隔時間,單位為秒

(System.nanoTime() - lastNanoTime) * 1E-9

cpu核數

/usr/bin/nproc

或者

cat /proc/cpuinfo | grep processor | wc -l
doc

man-proc

Linux內核中的jiffies及其作用介紹及jiffies等相關函數詳解

Top中是如何取到Linux內核中的Hertz的?以及CPU使用率到底是怎么算出來的?

Docker 監控的一點想法

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/66748.html

相關文章

  • (一)線程發展歷史

    摘要:從多線程的發展來看,可以操作系統的發展分為三個歷史階段真空管和穿孔卡片晶體管和批處理系統集成電路和多道程序設計最早的計算機只能解決簡單的數學運算問題,比如正弦余弦等。我們用了比較長的篇幅介紹了進程線程發展的歷史。 專題簡介 作為一個合格的Java程序員,必須要對并發編程有一個深層次的了解,在很多互聯網企業都會重點考察這一塊。可能很多工作3年以上的Java程序員對于這一領域幾乎沒有太多研...

    noONE 評論0 收藏0
  • 終于明白:有了線程,為什么還要有協程?

    摘要:每個進程的第一個線程都會隨著該進程的啟動而被創建,它們可以被稱為其所屬進程的主線程。因此,線程也被稱為輕量級進程。與進程調度類似,在線程之間快速切換,制造了線程并行運行的假象。也就是說,線程之間是沒有保護的。其中的指代的就是系統級線程。 并發的發展歷史 其實,在早期計算機并沒有包含操作系統,...

    不知名網友 評論0 收藏0
  • 進程與線程

    摘要:進程與線程進程和線程是操作系統的基本概念但是它們比較抽象不容易掌握。線程,有時被稱為輕量進程,,是程序執行流的最小單元。 進程與線程 進程(process)和線程(thread)是操作系統的基本概念,但是它們比較抽象,不容易掌握。 有一個很好的類比,可以把它們解釋地清晰易懂。 CPU 計算機的核心是CPU,它承擔了所有的計算任務。它就像一座工廠,時刻在運行。 假定工廠的電力有限,一次...

    Jingbin_ 評論0 收藏0
  • Java 線程實現方式

    摘要:線程的可能實現方式基本上主流的操作系統都支持線程,也提供了線程的實現。使用用戶線程和內核線程混合實現在這種混合實現下,既存在用戶線程,也存在內核線程。 進程與線程 在傳統的操作系統中,最核心的概念是進程,進程是對正在運行的程序的一個抽象。進程的存在讓并行成為了可能,在一個操作系統中,允許運行著多個進程,這些進程看起來是同時在運行的。如果我們的計算機同時運行著 web 瀏覽器、電子郵件客...

    曹金海 評論0 收藏0
  • 深入理解Node.js 進程與線程(8000長文徹底搞懂)

    摘要:在單核系統之上我們采用單進程單線程的模式來開發。由進程來管理所有的子進程,主進程不負責具體的任務處理,主要工作是負責調度和管理。模塊與模塊總結無論是模塊還是模塊,為了解決實例單線程運行,無法利用多核的問題而出現的。 前言 進程與線程是一個程序員的必知概念,面試經常被問及,但是一些文章內容只是講講理論知識,可能一些小伙伴并沒有真的理解,在實際開發中應用也比較少。本篇文章除了介紹概念,通過...

    Harpsichord1207 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<