加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

通过/proc/stat文件计算CPU的利用率

发布时间:2020-12-16 07:43:19 所属栏目:百科 来源:网络整理
导读:今天PHP站长网 52php.cn把收集自互联网的代码分享给大家,仅供参考。 //gino//20150712#include stdio.h#include string.hint main(){ int m_user,m_nice,m_system,m_idle,m_iowait,m_irq,m_softirq,m_stealstolen,m_gues

以下代码由PHP站长网 52php.cn收集自互联网

现在PHP站长网小编把它分享给大家,仅供参考

//gino
//20150712
#include <stdio.h>
#include <string.h>


int main(){
    int m_user,m_nice,m_system,m_idle,m_iowait,m_irq,m_softirq,m_stealstolen,m_guest;
    char buff[128]={''};
    char m_cpu[5];
    int all_1,all_2,idle_1,idle_2;

    FILE *fp = fopen("/proc/stat","r");
    fgets(buff,128,fp);

    sscanf(buff,"%s%d%d%d%d%d%d%d%d%d",

                    m_cpu,&m_user,&m_nice,&m_system,&m_idle,&m_iowait,

                    &m_irq,&m_softirq,&m_stealstolen,&m_guest);

    all_1 = m_user + m_nice + m_system + m_idle + m_iowait + 

                    m_irq + m_softirq + m_stealstolen + m_guest;

    idle_1 = m_idle;

    int m_cpu_1 = m_user + m_nice + m_system;

    rewind(fp);
    sleep(1);

    bzero(buff,128);
    fgets(buff,&m_guest);

    all_2 = m_user + m_nice + m_system + m_idle + m_iowait + 

                    m_irq + m_softirq + m_stealstolen + m_guest;

    idle_2 = m_idle;

    int m_cpu_2 = m_user + m_nice + m_system;

    /*cpu 总使用率计算公式
        cpu_use_rate = 100 * [(taotal_2 - taotal_1) - (idle_2 - idle_1)] / (cpu_2 - cpu_1)  */
    float cpu_use_rate = 100*( (float)(all_2 - all_1) - (float)(idle_2 - idle_1)) / (float)(all_2 - all_1);
    printf("%04.2f%%n",cpu_use_rate);

    /*
        cpu 总使用率计算公式
        [(user_2 +sys_2+nice_2) - (user_1 + sys_1+nice_1)]/(total_2 - total_1)*100
    */
    cpu_use_rate = (float)(m_cpu_2 - m_cpu_1) / (float)(all_2 - all_1) * 100;
    printf("%04.2f%%n",cpu_use_rate);

    /*
        cpu 未使用率计算公式
        (idle2-idle1)/(cpu2-cpu1)*100
    */
    cpu_use_rate = ( (float)(idle_2 - idle_1)) / (float)(all_2 - all_1) *100;
    printf("%04.2f%%n",cpu_use_rate);

    return 0;
}

以上内容由PHP站长网【52php.cn】收集整理供大家参考研究

如果以上内容对您有帮助,欢迎收藏、点赞、推荐、分享。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读