<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>


    posts - 1,  comments - 20,  trackbacks - 0

    Linux平臺(tái)Cpu使用率的計(jì)算

    proc文件系統(tǒng)

    /proc文件系統(tǒng)是一個(gè)偽文件系統(tǒng),它只存在內(nèi)存當(dāng)中,而不占用外存空間。它以文件系統(tǒng)的方式為內(nèi)核與進(jìn)程提供通信的接口。用戶和應(yīng)用程序可以通過(guò)/proc得到系統(tǒng)的信息,并可以改變內(nèi)核的某些參數(shù)。由于系統(tǒng)的信息,如進(jìn)程,是動(dòng)態(tài)改變的,所以用戶或應(yīng)用程序讀取/proc目錄中的文件時(shí),proc文件系統(tǒng)是動(dòng)態(tài)從系統(tǒng)內(nèi)核讀出所需信息并提交的。

    /proc目錄中有一些以數(shù)字命名的目錄,它們是進(jìn)程目錄。系統(tǒng)中當(dāng)前運(yùn)行的每一個(gè)進(jìn)程在/proc下都對(duì)應(yīng)一個(gè)以進(jìn)程號(hào)為目錄名的目錄/proc/pid,它們是讀取進(jìn)程信息的接口。此外,Linux 2.6.0-test6以上的版本/proc/pid目錄中有一個(gè)task目錄,/proc/pid/task目錄中也有一些以該進(jìn)程所擁有的線程的線程號(hào)命名的目錄/proc/pid/task/tid,它們是讀取線程信息的接口。

    /proc/cpuinfo文件

             該文件中存放了有關(guān) cpu的相關(guān)信息(型號(hào),緩存大小等)

    [zhengangen@buick ~]$ cat /proc/cpuinfo

    processor       : 0

    vendor_id       : GenuineIntel

    cpu family      : 15

    model           : 4

    model name      : Intel(R) Xeon(TM) CPU 3.00GHz

    stepping        : 10

    cpu MHz         : 3001.177

    cache size      : 2048 KB

    physical id     : 0

    siblings        : 2

    core id         : 0

    cpu cores       : 1

    fdiv_bug        : no

    hlt_bug         : no

    f00f_bug        : no

    coma_bug        : no

    fpu             : yes

    fpu_exception   : yes

    cpuid level     : 5

    wp              : yes

    flags           : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm pni monitor ds_cpl cid xtpr

    bogomips        : 6004.52

     

    說(shuō)明:以下只解釋對(duì)我們計(jì)算Cpu使用率有用的相關(guān)參數(shù)。

             參數(shù)                            解釋

    processor (0)                       cpu的一個(gè)物理標(biāo)識(shí)

     

    結(jié)論1:可以通過(guò)該文件根據(jù)processor出現(xiàn)的次數(shù)統(tǒng)計(jì)cpu的邏輯個(gè)數(shù)(包括多核、超線程)

    /proc/stat文件

             該文件包含了所有CPU活動(dòng)的信息,該文件中的所有值都是從系統(tǒng)啟動(dòng)開(kāi)始累計(jì)到當(dāng)前時(shí)刻。不同內(nèi)核版本中該文件的格式可能不大一致,以下通過(guò)實(shí)例來(lái)說(shuō)明數(shù)據(jù)該文件中各字段的含義。

    實(shí)例數(shù)據(jù):2.6.24-24版本上的

     

    fjzag@fjzag-desktop:~$ cat /proc/stat

    cpu  38082 627 27594 893908 12256 581 895 0 0

    cpu0 22880 472 16855 430287 10617 576 661 0 0

    cpu1 15202 154 10739 463620 1639 4 234 0 0

    intr 120053 222 2686 0 1 1 0 5 0 3 0 0 0 47302 0 0 34194 29775 0 5019 845 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

    ctxt 1434984

    btime 1252028243

    processes 8113

    procs_running 1

    procs_blocked 0

    第一行的數(shù)值表示的是CPU總的使用情況,所以我們只要用第一行的數(shù)字計(jì)算就可以了。下表解析第一行各數(shù)值的含義:

    參數(shù)          解析(單位:jiffies

    (jiffies是內(nèi)核中的一個(gè)全局變量,用來(lái)記錄自系統(tǒng)啟動(dòng)一來(lái)產(chǎn)生的節(jié)拍數(shù),在linux中,一個(gè)節(jié)拍大致可理解為操作系統(tǒng)進(jìn)程調(diào)度的最小時(shí)間片,不同linux內(nèi)核可能值有不同,通常在1ms10ms之間)

    user (38082)    從系統(tǒng)啟動(dòng)開(kāi)始累計(jì)到當(dāng)前時(shí)刻,處于用戶態(tài)的運(yùn)行時(shí)間,不包含 nice值為負(fù)進(jìn)程。

    nice (627)      從系統(tǒng)啟動(dòng)開(kāi)始累計(jì)到當(dāng)前時(shí)刻,nice值為負(fù)的進(jìn)程所占用的CPU時(shí)間

    system (27594)  從系統(tǒng)啟動(dòng)開(kāi)始累計(jì)到當(dāng)前時(shí)刻,處于核心態(tài)的運(yùn)行時(shí)間

    idle (893908)   從系統(tǒng)啟動(dòng)開(kāi)始累計(jì)到當(dāng)前時(shí)刻,除IO等待時(shí)間以外的其它等待時(shí)間iowait (12256) 從系統(tǒng)啟動(dòng)開(kāi)始累計(jì)到當(dāng)前時(shí)刻,IO等待時(shí)間(since 2.5.41)

    irq (581)           從系統(tǒng)啟動(dòng)開(kāi)始累計(jì)到當(dāng)前時(shí)刻,硬中斷時(shí)間(since 2.6.0-test4)

    softirq (895)      從系統(tǒng)啟動(dòng)開(kāi)始累計(jì)到當(dāng)前時(shí)刻,軟中斷時(shí)間(since 2.6.0-test4)stealstolen(0)                   which is the time spent in other operating systems when running in a virtualized environment(since 2.6.11)

    guest(0)                               which is the time spent running a virtual  CPU  for  guest operating systems under the control of the Linux kernel(since 2.6.24)

     

    結(jié)論2:總的cpu時(shí)間totalCpuTime = user + nice + system + idle + iowait + irq + softirq + stealstolen  +  guest

    /proc/<pid>/stat文件                                          

    該文件包含了某一進(jìn)程所有的活動(dòng)的信息,該文件中的所有值都是從系統(tǒng)啟動(dòng)開(kāi)始累計(jì)

    到當(dāng)前時(shí)刻。以下通過(guò)實(shí)例數(shù)據(jù)來(lái)說(shuō)明該文件中各字段的含義。

     

    [zhengangen@buick ~]# cat /proc/6873/stat

    6873 (a.out) R 6723 6873 6723 34819 6873 8388608 77 0 0 0 41958 31 0 0 25 0 3 0 5882654 1409024 56 4294967295 134512640 134513720 3215579040 0 2097798 0 0 0 0 0 0 0 17 0 0 0

     

    說(shuō)明:以下只解釋對(duì)我們計(jì)算Cpu使用率有用相關(guān)參數(shù)

    參數(shù)                                                                解釋

    pid=6873                            進(jìn)程號(hào)

    utime=1587                       該任務(wù)在用戶態(tài)運(yùn)行的時(shí)間,單位為jiffies

    stime=41958                      該任務(wù)在核心態(tài)運(yùn)行的時(shí)間,單位為jiffies

    cutime=0                            所有已死線程在用戶態(tài)運(yùn)行的時(shí)間,單位為jiffies

    cstime=0                            所有已死在核心態(tài)運(yùn)行的時(shí)間,單位為jiffies

     

    結(jié)論3進(jìn)程的總Cpu時(shí)間processCpuTime = utime + stime + cutime + cstime,該值包括其所有線程的cpu時(shí)間。

    /proc/<pid>/task/<tid>/stat文件

    該文件包含了某一進(jìn)程所有的活動(dòng)的信息,該文件中的所有值都是從系統(tǒng)啟動(dòng)開(kāi)始累計(jì)到當(dāng)前時(shí)刻。該文件的內(nèi)容格式以及各字段的含義同/proc/<pid>/stat文件。

             注意,該文件中的tid字段表示的不再是進(jìn)程號(hào),而是linux中的輕量級(jí)進(jìn)程(lwp),即我們通常所說(shuō)的線程。

     

    結(jié)論4:線程Cpu時(shí)間threadCpuTime = utime + stime

    系統(tǒng)中有關(guān)進(jìn)程cpu使用率的常用命令

    ps 命令

    通過(guò)ps命令可以查看系統(tǒng)中相關(guān)進(jìn)程的Cpu使用率的信息。以下在linux man文檔中對(duì)ps命令輸出中有關(guān)cpu使用率的解釋:

     

    CPU usage is currently expressed as the percentage of time spent running during the entire lifetime of a process. This is not ideal, and it does not conform to the standards that ps otherwise conforms to. CPU usage is unlikely to add up to exactly 100%.

     

    %cpu   cpu utilization of the process in "##.#" format. It is the CPU time used                           divided by the time the process has been running (cputime/realtime ratio),                           expressed as a percentage. It will not add up to 100% unless you are lucky.

     

    結(jié)論5ps命令算出來(lái)的cpu使用率相對(duì)于進(jìn)程啟動(dòng)時(shí)的平均值,隨著進(jìn)程運(yùn)行時(shí)間的增大,該值會(huì)趨向于平緩。

    top命令

    通過(guò)top命令可以查看系統(tǒng)中相關(guān)進(jìn)程的實(shí)時(shí)信息(cpu使用率等)。以下是man文檔中對(duì)top命令輸出中有關(guān)進(jìn)程cpu使用率的解釋。

     

    #C  --  Last used CPU (SMP)                   A number representing the last used processor. In a true  SMP  environment  this  will  likely change  frequently  since  the  kernel intentionally uses weak affinity.  Also, the very act of running top may break this weak affinity and cause more processes to  change  CPUs  more  often (because of the extra demand for cpu time).

     

    %CPU  --  CPU usage                   The  task’s share of the elapsed CPU time since the last screen update, expressed as a percent-age of total CPU time.  In a true SMP environment, if  Irix mode is Off, top will operate in Solaris mode where a task’s cpu usage will be divided by the total number of CPUs.

     

    結(jié)論6某一個(gè)線程在其運(yùn)行期間其所使用的cpu可能會(huì)發(fā)生變化。

    結(jié)論7在多核的情況下top命令輸出的cpu使用率實(shí)質(zhì)是按cpu個(gè)數(shù)*100%計(jì)算的。

    單核情況下Cpu使用率的計(jì)算

    基本思想

    通過(guò)讀取/proc/stat /proc/<pid>/stat/proc/<pid>/task/<tid>/stat以及/proc/cpuinfo這幾個(gè)文件獲取總的Cpu時(shí)間、進(jìn)程的Cpu時(shí)間、線程的Cpu時(shí)間以及Cpu的個(gè)數(shù)的信息,然后通過(guò)一定的算法進(jìn)行計(jì)算(采樣兩個(gè)足夠短的時(shí)間間隔的Cpu快照與進(jìn)程快照來(lái)計(jì)算進(jìn)程的Cpu使用率)

     

    總的Cpu使用率計(jì)算

    計(jì)算方法:

    1、  采樣兩個(gè)足夠短的時(shí)間間隔的Cpu快照,分別記作t1,t2,其中t1t2的結(jié)構(gòu)均為:

    (usernicesystemidleiowaitirqsoftirqstealstolenguest)9元組;

    2、  計(jì)算總的Cpu時(shí)間片totalCpuTime

    a)         把第一次的所有cpu使用情況求和,得到s1;

    b)         把第二次的所有cpu使用情況求和,得到s2;

    c)         s2 - s1得到這個(gè)時(shí)間間隔內(nèi)的所有時(shí)間片,即totalCpuTime = j2 - j1 ;

    3、計(jì)算空閑時(shí)間idle

    idle對(duì)應(yīng)第四列的數(shù)據(jù),用第二次的第四列 - 第一次的第四列即可

    idle=第二次的第四列 - 第一次的第四列

    6、計(jì)算cpu使用率

    pcpu =100* (total-idle)/total

    某一進(jìn)程Cpu使用率的計(jì)算

    計(jì)算方法:  

    1.               采樣兩個(gè)足夠短的時(shí)間間隔的cpu快照與進(jìn)程快照,

    a)         每一個(gè)cpu快照均為(usernicesystemidleiowaitirqsoftirqstealstolenguest)9元組;

    b)         每一個(gè)進(jìn)程快照均為 (utimestimecutimecstime)4元組;

    2.               分別根據(jù)結(jié)論2、結(jié)論3計(jì)算出兩個(gè)時(shí)刻的總的cpu時(shí)間與進(jìn)程的cpu時(shí)間,分別記作:totalCpuTime1totalCpuTime2processCpuTime1processCpuTime2

    3.               計(jì)算該進(jìn)程的cpu使用率pcpu = 100*( processCpuTime2 – processCpuTime1) / (totalCpuTime2 – totalCpuTime1) (100%計(jì)算,如果是多核情況下還需乘以cpu的個(gè)數(shù));

    實(shí)驗(yàn)數(shù)據(jù)

    實(shí)驗(yàn)一: 監(jiān)控一空循環(huán)的進(jìn)程的cpu使用率。

    說(shuō)明:左邊的數(shù)據(jù)是按以上算法得到的數(shù)據(jù),其中采樣的時(shí)間間隔與top命令刷新屏幕的時(shí)間間隔相同。

    按以上方法計(jì)算得到的cpu使用率

    通過(guò)top命令得到的

     

    99.50083

    98.333336

    98.0

    98.83138

    99.0

    99.0

    99.83361

    98.83527

    98.4975

     

    PID    USER      PR   NI   VIRT   RES   SHR   S  %CPU %MEM  TIME+  COMMAND 

    7639 fjzag     20   0  206m  10m 7136 S   99  2.2   1:00.74 java              

     7639 fjzag     20   0  206m  10m 7136 S   99  2.2   1:03.71 java              

     7639 fjzag     20   0  206m  10m 7136 S   99  2.2   1:06.67 java              

     7639 fjzag     20   0  206m  10m 7136 S   99  2.2   1:09.63 java              

     7639 fjzag     20   0  206m  10m 7136 S   98  2.2   1:12.59 java              

     7639 fjzag     20   0  206m  10m 7136 S   99  2.2   1:15.55 java              

     7639 fjzag     20   0  206m  10m 7136 S  100  2.2   1:18.55 java              

     7639 fjzag     20   0  206m  10m 7136 S  100  2.2   1:21.54 java              

     7639 fjzag     20   0  206m  10m 7136 S   99  2.2   1:24.52 java              

     7639 fjzag     20   0  206m  10m 7136 S   98  2.2   1:27.46 java

     

    實(shí)驗(yàn)二: 監(jiān)控jconsole進(jìn)程的cpu使用率。

    說(shuō)明:左邊的數(shù)據(jù)是按以上算法得到的數(shù)據(jù),其中采樣的時(shí)間間隔與top命令刷新屏幕的時(shí)間間隔相同。

    按以上方法計(jì)算得到的cpu使用率

    通過(guò)top命令得到的

     

    8.681135

    12.0

    10.350584

    7.6539097

    7.6539097

    5.0

    13.021703

    11.0

    8.666667

    PID   USER      PR   NI  VIRT   RES   SHR  S  %CPU %MEM  TIME+  COMMAND 

    7753 fjzag     20   0  252m  72m  22m S   10 14.4   0:18.70 jconsole          

     7753 fjzag     20   0  252m  72m  22m S   12 14.4   0:19.07 jconsole          

     7753 fjzag     20   0  252m  72m  22m S   11 14.4   0:19.39 jconsole          

     7753 fjzag     20   0  252m  72m  22m S    7 14.4   0:19.61 jconsole          

     7753 fjzag     20   0  252m  72m  22m S    7 14.4   0:19.83 jconsole          

     7753 fjzag     20   0  252m  72m  22m S    5 14.4   0:19.97 jconsole          

     7753 fjzag     20   0  252m  72m  22m S   14 14.4   0:20.38 jconsole          

     7753 fjzag     20   0  252m  72m  22m S   10 14.4   0:20.68 jconsole          

     7753 fjzag     20   0  252m  72m  22m S    9 14.5   0:20.96 jconsole

    某一線程Cpu使用率的計(jì)算

    計(jì)算方法:  

    1.               采樣兩個(gè)足夠短的時(shí)間隔的cpu快照與線程快照,

    a)         每一個(gè)cpu快照均為(usernicesystemidleiowaitirqsoftirqstealstealonguest)9元組;

    b)         每一個(gè)線程快照均為 (utimestime)2元組;

    2.               分別根據(jù)結(jié)論2、結(jié)論4計(jì)算出兩個(gè)時(shí)刻的總的cpu時(shí)間與線程的cpu時(shí)間,分別記作:totalCpuTime1totalCpuTime2threadCpuTime1threadCpuTime2

    3.               計(jì)算該線程的cpu使用率pcpu = 100*( threadCpuTime2 – threadCpuTime1) / (totalCpuTime2 – totalCpuTime1) (100%計(jì)算,如果是多核情況下還需乘以cpu的個(gè)數(shù));

    實(shí)驗(yàn)數(shù)據(jù)

    實(shí)驗(yàn)一: 監(jiān)控一空循環(huán)的線程的cpu使用率。

    說(shuō)明:左邊的數(shù)據(jù)是按以上算法得到的數(shù)據(jù),其中采樣的時(shí)間間隔與top命令刷新屏幕的時(shí)間間隔相同。

    按以上方法計(jì)算得到的cpu使用率

    通過(guò)top命令得到的

     

    98.83138

    97.00997

    96.98997

    97.49583

    98.169716

    96.8386

    97.333336

    93.82304

    98.66667

    PID    USER      PR   NI   VIRT   RES   SHR   S  %CPU %MEM  TIME+  COMMAND 

    7649 fjzag     20   0  206m  10m 7136 R   97  2.2   7:22.94 java              

     7649 fjzag     20   0  206m  10m 7136 R   97  2.2   7:25.86 java              

     7649 fjzag     20   0  206m  10m 7136 R   97  2.2   7:28.76 java              

     7649 fjzag     20   0  206m  10m 7136 R   99  2.2   7:31.72 java              

     7649 fjzag     20   0  206m  10m 7136 R   98  2.2   7:34.65 java              

     7649 fjzag     20   0  206m  10m 7136 R   96  2.2   7:37.53 java              

     7649 fjzag     20   0  206m  10m 7136 R   98  2.2   7:40.47 java              

     7649 fjzag     20   0  206m  10m 7136 R   96  2.2   7:43.34 java              

     7649 fjzag     20   0  206m  10m 7136 R   97  2.2   7:46.25 java

     

    實(shí)驗(yàn)二: 監(jiān)控jconsole程序某一線程的cpu使用率。

    說(shuō)明:左邊的數(shù)據(jù)是按以上算法得到的數(shù)據(jù),其中采樣的時(shí)間間隔與top命令刷新屏幕的時(shí)間間隔相同。

    按以上方法計(jì)算得到的cpu使用率

    通過(guò)top命令得到的

     

    1.3400335

    6.644518

    1.3333334

    0.6677796

    0.6666667

    1.3333334

    1.3333334

     PID    USER      PR   NI   VIRT   RES  SHR  S  %CPU %MEM  TIME+  COMMAND 

    7755 fjzag     20   0  251m  72m  22m S    1 14.4   0:11.92 jconsole          

     7755 fjzag     20   0  251m  72m  22m S    7 14.4   0:12.12 jconsole          

     7755 fjzag     20   0  251m  72m  22m S    2 14.4   0:12.18 jconsole          

     7755 fjzag     20   0  251m  72m  22m S    0 14.4   0:12.18 jconsole          

     7755 fjzag     20   0  251m  72m  22m S    1 14.4   0:12.20 jconsole          

     7755 fjzag     20   0  251m  72m  22m S    1 14.4   0:12.24 jconsole          

     7755 fjzag     20   0  251m  72m  22m S    1 14.4   0:12.28 jconsole

    多核情況下cpu使用率的計(jì)算                                                    

    以下通過(guò)實(shí)驗(yàn)數(shù)據(jù)來(lái)說(shuō)明多核情況下某一進(jìn)程cpu使用率是按cpu個(gè)數(shù)*100%計(jì)算的.

    實(shí)驗(yàn)一

    描述:

    雙核的情況下作的一組實(shí)驗(yàn),第一組數(shù)據(jù)是通過(guò)ps  -eLo pid,lwp,pcpu | grep 9140命令查看進(jìn)程號(hào)為9140的進(jìn)程中各線程的詳細(xì)信息。第二組數(shù)據(jù)是通過(guò) ps命令查看進(jìn)程號(hào)為9140進(jìn)程的cpu使用率。

    數(shù)據(jù)一:

    pid   lwp  %cpu

    9140  9140  0.0
     9140  9141  0.0
     9140  9142  0.0
     9140  9143  0.0
     9140  9144  0.0
     9140  9149  0.0
     9140  9150  0.0
     9140  9151  0.0
     9140  9152  0.1
     
    9140  9153 96.6                         該線程是一個(gè)空循環(huán)
     9140  9154 95.9
                             該線程是一個(gè)空循環(huán)

    以上除了紅色標(biāo)注出來(lái)的兩個(gè)線程以外,其他的線程都是后臺(tái)線程。

    數(shù)據(jù)二:

    pid   %cpu

    9140  193

    實(shí)驗(yàn)二

    描述:

    單核的情況下作的一組實(shí)驗(yàn),第一組數(shù)據(jù)是通過(guò)ps  -eLo pid,lwp,pcpu | grep 6137命令查看進(jìn)程號(hào)為6137的進(jìn)程中各線程的詳細(xì)信息。第二組數(shù)據(jù)是通過(guò) ps命令查看進(jìn)程號(hào)為6137進(jìn)程的cpu使用率。

    數(shù)據(jù)一:

     pid    lwp   %cpu

     6137  6137  0.0

     6137  6138  0.1

     6137  6143  0.0

     6137  6144  0.0

     6137  6145  0.0

     6137  6146  0.0

     6137  6147  0.0

     6137  6148  0.0

     6137  6149  0.0

     6137  6150 46.9                                                 空循環(huán)線程

     6137  6151 46.9                                                 空循環(huán)線程

    以上除了紅色標(biāo)注出來(lái)的兩個(gè)線程以外,其他的線程都是后臺(tái)線程。

    數(shù)據(jù)二

    pid %cpu

    6137 92.9

    主要問(wèn)題:

    1.       不同內(nèi)核版本/proc/stat文件格式不大一致。/proc/stat文件中第一行為總的cpu使用情況。

    各個(gè)版本都有的4個(gè)字段: usernicesystemidle

    2.5.41版本新增字段:iowait

    2.6.0-test4新增字段:irqsoftirq

    2.6.11新增字段:stealstolen                    which is the time spent in other operating

    systems when running in a virtualized environment

    2.6.24新增字段:guest:                                    which is the time spent running a virtual  CPU  for  guest operating systems under the control of the Linux kernel

    2/proc/pid/task目錄是Linux 2.6.0-test6之后才有的功能。

     

    3.關(guān)于出現(xiàn)cpu使用率為負(fù)的情況,目前想到的解決方案是如果出現(xiàn)負(fù)值,連續(xù)采樣計(jì)算cpu使用率直到為非負(fù)。

     

    4. 有些線程生命周期較短,可能在我們采樣期間就已經(jīng)死掉了.

     

    posted on 2010-04-08 22:57 csgeek? 閱讀(97643) 評(píng)論(20)  編輯  收藏

    FeedBack:
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率
    2011-10-07 02:07 | hackerain
    mark ! 很有用啊!  回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率
    2012-07-06 10:28 | MKhaha
    好東西,解決了關(guān)于多核的疑問(wèn)!  回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率[未登錄](méi)
    2012-11-15 09:28 | salomon
    為什么會(huì)出現(xiàn)CPU使用率為負(fù)的情況?這種計(jì)算方法的誤差范圍是多少?除了這種計(jì)算方法外,有沒(méi)有其他方法計(jì)算某一進(jìn)程CPU使用率?  回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率[未登錄](méi)
    2013-06-09 16:43 | Max
    為什么會(huì)出現(xiàn)CPU使用率為負(fù)的情況???!!!
    有沒(méi)有其他方法計(jì)算某一進(jìn)程CPU使用率?  回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率
    2013-10-05 14:29 | wee
    請(qǐng)問(wèn)utime = 1587 在哪兒呢。。。我怎么都找不到1587這數(shù)字  回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率
    2014-02-28 17:50 | likeyiyy
    威武霸氣,借用了。  回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率
    2014-03-05 11:30 | likeyiyy
    @wee
    我看了多篇文章,也沒(méi)有找到,我想大家都抄來(lái)抄去的吧。  回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率
    2014-03-07 02:39 | 鄭安根
    這是好幾年前寫的第一篇博客,可惜后來(lái)沒(méi)繼續(xù)寫呢@likeyiyy  回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率
    2014-10-30 11:41 | copyMan
    @wee
    媽蛋,哥也找不到,坑啊。。。   回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率
    2014-10-31 23:49 | 鄭安根
    這個(gè)問(wèn)題應(yīng)該是當(dāng)初寫文章時(shí)寫錯(cuò)了。現(xiàn)在來(lái)統(tǒng)一回答一下。具體數(shù)值并不重要,關(guān)鍵要弄清楚在文件中的第幾個(gè)field. linux幫助文檔的解釋在這:http://linux.die.net/man/5/proc @copyMan
    @likeyiyy
    @wee
      回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率
    2014-10-31 23:51 | 鄭安根
    很有可能是采樣頻率的問(wèn)題,至于有沒(méi)有其他方法我也不大清楚。@Max
    @salomon
      回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率
    2015-01-12 10:15 | ghost
    @likeyiyy
    看一下文檔就有了
    utime %lu

    (14) Amount of time that this process has been scheduled in user mode, measured in clock ticks (divide by sysconf(_SC_CLK_TCK)). This includes guest time, guest_time (time spent running a virtual CPU, see below), so that applications that are not aware of the guest time field do not lose that time from their calculations.

    stime %lu

    (15) Amount of time that this process has been scheduled in kernel mode, measured in clock ticks (divide by sysconf(_SC_CLK_TCK)).

    cutime %ld

    (16) Amount of time that this process's waited-for children have been scheduled in user mode, measured in clock ticks (divide by sysconf(_SC_CLK_TCK)). (See also times(2).) This includes guest time, cguest_time (time spent running a virtual CPU, see below).

    cstime %ld

    (17) Amount of time that this process's waited-for children have been scheduled in kernel mode, measured in clock ticks (divide by sysconf(_SC_CLK_TCK)).  回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率[未登錄](méi)
    2015-06-01 17:55 | 小魚
    通過(guò)獲取proc/stat計(jì)算某進(jìn)程Cpu占有率和直接通過(guò)top命令獲取有什么不同嗎?  回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率
    2015-06-05 19:26 | 鄭安根
    @小魚
    如果我沒(méi)有記錯(cuò)的話,top只能查整個(gè)進(jìn)程的cpu使用率,可是有時(shí)候我們可能希望得到該進(jìn)程所有隸屬進(jìn)程的cpu使用率進(jìn)而找出可能有問(wèn)題的線程。  回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率
    2015-06-05 19:47 | 鄭安根
    今天剛剛看到salomon很久以前給我發(fā)的私信,問(wèn)了幾個(gè)有關(guān)該博客的問(wèn)題。突然腦袋一閃想起了一些有關(guān)這些問(wèn)題的可能原因,在此跟大家分享一下。

    問(wèn)題1. 單個(gè)進(jìn)程CPU使用率為什么出現(xiàn)負(fù)數(shù)?是proc的輸出值不精確,還是采樣的問(wèn)題?

    應(yīng)該是我們第二次采樣時(shí)那個(gè)進(jìn)程或線程已經(jīng)死掉了,而剛好有一個(gè)新的進(jìn)程或線程使用同樣的id出現(xiàn)導(dǎo)致的。

    問(wèn)題2:誤差范圍是多少? 有沒(méi)有更理想的算取單個(gè)進(jìn)程CPU占用率的方法

    至于誤差我沒(méi)有詳細(xì)的考究過(guò),從博客已經(jīng)列出的實(shí)驗(yàn)數(shù)據(jù)可以看出還是蠻接近ps/top輸出的結(jié)果。跟top相比以上方法的優(yōu)勢(shì)是top只能查看真?zhèn)€進(jìn)程的cpu使用率無(wú)法查看他所有隸屬線程的cpu使用率。  回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率
    2015-11-19 10:25 | h_mingg
    @鄭安根
    加上H就能查看線程的信息  回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率
    2015-11-20 11:45 | 鄭安根
    @h_mingg
    多謝!看來(lái)功夫還沒(méi)到家呢!:)  回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率
    2016-01-13 17:32 | 福娃
    /proc/<pid>/stat 這里面的時(shí)間跟cpu頻段時(shí)間怎么換算呢  回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率[未登錄](méi)
    2016-01-16 04:38 | 鄭安根
    我不確定這跟cpu頻率有什么直接的關(guān)系,cpu頻率指的是Cpu的處理速度:cycles per second是一個(gè)硬件特性. 你可以去簡(jiǎn)單了解一下Cpu指令的調(diào)度應(yīng)該會(huì)有更好的理解@福娃
      回復(fù)  更多評(píng)論
      
    # re: Linux中通過(guò)/proc/stat等文件計(jì)算Cpu使用率[未登錄](méi)
    2016-01-16 05:00 | 鄭安根
    好像可以通過(guò)hardware performance counter獲取更加準(zhǔn)確的cpu使用率。感興趣可以了解一下諸如PAPI, perf, Intel PCM等相關(guān)的工具@鄭安根
      回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    留言簿(1)

    文章檔案(5)

    Personal Website

    搜索

    •  

    最新評(píng)論

    主站蜘蛛池模板: a在线观看免费网址大全| 亚洲熟妇AV一区二区三区宅男| 亚洲国产精品不卡毛片a在线| 在线观看免费宅男视频| 无码人妻一区二区三区免费手机 | 亚洲AV色香蕉一区二区| 亚洲av永久无码精品国产精品| 亚洲日韩精品无码一区二区三区| 中文字幕亚洲一区二区va在线| 久久久久亚洲AV无码专区网站| 丁香五月亚洲综合深深爱| 亚洲色大成网站www永久一区| 国产AV无码专区亚洲AVJULIA| 亚洲Av无码精品色午夜| 亚洲AV日韩AV永久无码下载| 亚洲综合一区二区国产精品| 亚洲校园春色小说| 亚洲欧美国产国产一区二区三区 | 亚洲AV无码成人网站久久精品大| 亚洲大成色www永久网站| 亚洲视频在线观看一区| 亚洲一区二区三区精品视频| 亚洲精品无码av片| 高清免费久久午夜精品| 成人免费乱码大片A毛片| 99爱在线精品视频免费观看9| 美女内射毛片在线看免费人动物| 成人性生活免费视频| 啊v在线免费观看| 国产亚洲AV无码AV男人的天堂| 久久亚洲AV成人无码软件| 亚洲综合小说另类图片动图| 四虎精品免费永久免费视频| 成人片黄网站色大片免费观看APP| 97公开免费视频| 亚洲伊人久久大香线蕉啊| 亚洲爆乳少妇无码激情| 一区二区三区免费精品视频| 少妇人妻偷人精品免费视频| 全免费a级毛片免费**视频| 国产成人毛片亚洲精品|