Cpu使用率计算(/proc/stat基础使用)

2021-09-23  本文已影响0人  哆啦在这A梦在哪

一。单核情况下Cpu使用率的计算

基本思想

通过读取/proc/stat 、/proc/<pid>/stat、/proc/<pid>/task/<tid>/stat以及/proc/cpuinfo这几个文件获取总的Cpu时间、进程的Cpu时间、线程的Cpu时间以及Cpu的个数的信息,然后通过一定的算法进行计算(采样两个足够短的时间间隔的Cpu快照与进程快照来计算进程的Cpu使用率)。

1.1总的Cpu使用率计算

计算方法:

1.采样两个足够短的时间间隔的Cpu快照,分别记作t1,t2,其中t1、t2的结构均为:

(user、nice、system、idle、iowait、irq、softirq、stealstolen、guest)的9元组;

2.计算总的Cpu时间片totalCpuTime

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

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

c) s2 - s1得到这个时间间隔内的所有时间片,即totalCpuTime = j2 - j1 ;

3、计算空闲时间idle

idle对应第四列的数据,用第二次的第四列 - 第一次的第四列即可

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

6、计算cpu使用率

pcpu =100* (total-idle)/total

1.2 某一进程Cpu使用率的计算

计算方法:

1. 采样两个足够短的时间间隔的cpu快照与进程快照,

a) 每一个cpu快照均为(user、nice、system、idle、iowait、irq、softirq、stealstolen、guest)的9元组;

b) 每一个进程快照均为 (utime、stime、cutime、cstime)的4元组;

2. 分别根据结论****2****、结论3计算出两个时刻的总的cpu时间与进程的cpu时间,分别记作:totalCpuTime1、totalCpuTime2、processCpuTime1、processCpuTime2

3. 计算该进程的cpu使用率pcpu = 100*( processCpuTime2 – processCpuTime1) / (totalCpuTime2 – totalCpuTime1) (按100%计算,如果是多核情况下还需乘以cpu的个数);

实验过程可以使用top命令进行验证

1.3 某一线程Cpu使用率的计算

计算方法:

1. 采样两个足够短的时间隔的cpu快照与线程快照,

a) 每一个cpu快照均为(user、nice、system、idle、iowait、irq、softirq、stealstealon、guest)的9元组;

b) 每一个线程快照均为 (utime、stime)的2元组;

2. 分别根据结论****2****、结论4计算出两个时刻的总的cpu时间与线程的cpu时间,分别记作:totalCpuTime1、totalCpuTime2、threadCpuTime1、threadCpuTime2

3. 计算该线程的cpu使用率pcpu = 100*( threadCpuTime2 – threadCpuTime1) / (totalCpuTime2 – totalCpuTime1) (按100%计算,如果是多核情况下还需乘以cpu的个数);

原文链接参考:https://www.cnblogs.com/liushui-sky/p/9236007.html

上一篇下一篇

猜你喜欢

热点阅读