博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
慢慢欣赏linux CPU占用率和负载
阅读量:4070 次
发布时间:2019-05-25

本文共 2801 字,大约阅读时间需要 9 分钟。

CPU使用率如何计算,可以参考busybox的实现

其原理是每隔5s读一次/proc/stat,两次的值相减作为CPU占用率。

/proc/stat的含义详见附件。

int top_main(int argc UNUSED_PARAM, char **argv)    cpu_jif = &cur_jif;    cpu_prev_jif = &prev_jif;        while (scan_mask != EXIT_MASK)        interval = 5; /* default update interval is 5 seconds */        sleep_for_duration(interval);        do_stats();        =>static void do_stats(void)            get_jiffy_counts();            =>static void get_jiffy_counts(void)                FILE* fp = xfopen_for_read("stat");//访问/proc/stat                read_cpu_jiffy(fp, &cpu_jif[num_cpus])                    =>static NOINLINE int read_cpu_jiffy(FILE *fp, jiffy_counts_t *p_jif)                        #if !ENABLE_FEATURE_TOP_SMP_CPU                            static const char fmt[] ALIGN1 = "cpu %llu %llu %llu %llu %llu %llu %llu %llu";                        #else                            static const char fmt[] ALIGN1 = "cp%*s %llu %llu %llu %llu %llu %llu %llu %llu";                        #endif                                                fgets(line_buf, LINE_BUF_SIZE, fp)                         ret = sscanf(line_buf, fmt,                            &p_jif->usr, &p_jif->nic, &p_jif->sys, &p_jif->idle,                            &p_jif->iowait, &p_jif->irq, &p_jif->softirq,                            &p_jif->steal);                                                    if (ret >= 4) {                            p_jif->total = p_jif->usr + p_jif->nic + p_jif->sys + p_jif->idle                                + p_jif->iowait + p_jif->irq + p_jif->softirq + p_jif->steal;                            /* procps 2.x does not count iowait as busy time */                            p_jif->busy = p_jif->total - p_jif->idle - p_jif->iowait;                        }        display_process_list(G.lines, col);                =>static NOINLINE void display_process_list(int lines_rem, int scr_width)                unsigned long total_memory = display_header(scr_width, &lines_rem);                 =>static unsigned long display_header(int scr_width, int *lines_rem_p)                    display_cpus(scr_width, scrbuf, lines_rem_p);

    

理解Linux CPU负载和 CPU使用率

https://www.cnblogs.com/muahao/p/6492665.html

Linux CPU使用率含义及原理

https://www.cnblogs.com/aresxin/p/9152127.html

Linux CPU占用率原理与 精确度分析

https://blog.csdn.net/lmjssjj/article/details/72401474

linux cpu占用100%排查

https://blog.csdn.net/qinshi501/article/details/77442770

linux环境下cpu利用率的计算

https://blog.csdn.net/ustclu/article/details/1721673

Linux平台Cpu使用率的计算

http://www.blogjava.net/fjzag/articles/317773.html

/proc/stat 详解

https://blog.csdn.net/new_abc/article/details/12942525

【Linux】/proc/stat详解 完整验证版

https://blog.csdn.net/zd199218/article/details/80698192?utm_source=blogxgwz8

shell脚本--截取系统一分钟的平均负载,只取整数部分

https://my.oschina.net/AnnaWu/blog/1539880

你可能感兴趣的文章
Spring AOP + Redis + 注解实现redis 分布式锁
查看>>
elastic-job 和springboot 集成干货
查看>>
php开发微服务注册到eureka中(使用sidecar)
查看>>
mybatis mybatis plus mybatis jpa hibernate spring data jpa比较
查看>>
支付宝生活号服务号 用户信息获取 oauth2 登录对接 springboot java
查看>>
CodeForces #196(Div. 2) 337D Book of Evil (树形dp)
查看>>
uva 12260 - Free Goodies (dp,贪心 | 好题)
查看>>
uva-1427 Parade (单调队列优化dp)
查看>>
【设计模式】学习笔记13:组合模式(Composite)
查看>>
hdu 1011 Starship Troopers (树形背包dp)
查看>>
hdu 1561 The more, The Better (树形背包dp)
查看>>
【设计模式】学习笔记14:状态模式(State)
查看>>
poj 1976 A Mini Locomotive (dp 二维01背包)
查看>>
斯坦福大学机器学习——因子分析(Factor analysis)
查看>>
项目导入时报错:The import javax.servlet.http.HttpServletRequest cannot be resolved
查看>>
linux对于没有写权限的文件如何保存退出vim
查看>>
Windows下安装ElasticSearch6.3.1以及ElasticSearch6.3.1的Head插件
查看>>
IntelliJ IDEA 下的svn配置及使用的非常详细的图文总结
查看>>
【IntelliJ IDEA】idea导入项目只显示项目中的文件,不显示项目结构
查看>>
ssh 如何方便的切换到其他节点??
查看>>