美文网首页
Cpu使用率计算(/proc/stat基础使用)

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

作者: 哆啦在这A梦在哪 | 来源:发表于2021-09-23 18:43 被阅读0次

    一。单核情况下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

    相关文章

      网友评论

          本文标题:Cpu使用率计算(/proc/stat基础使用)

          本文链接:https://www.haomeiwen.com/subject/bxmogltx.html