cpu使用率计算如何进行计算

cpu使用率是如何计算的?如果按照并发的概念来看,不应该有进程的时候直接飙到100%,把进程任务马上处理完吗?

1.进程和进程不一样
如果你是要算π的小数点后6亿位,那肯定直接把cpu跑满了
而如果你的进程是在搞爬虫,那cpu其实很闲的,是网卡在忙
2.此外,就算你死循环在跑计算,也只是占了cpu的其中一个核
现在cpu至少是4核的,那也才25%而已
3.操作系统里同一时间开的进程多了,但是并不是所有进程都在忙
比如你现在开着IE浏览器,但是没有点任何按键,就只是在看内容,那么这个进程其实该干的活已经干完了,不占资源

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7617208
  • 这篇博客你也可以参考下:关于创建线程后CPU使用率100%的问题
  • 除此之外, 这篇博客: 一个C++工程CPU占用100%问题的排查中的 排查过程 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 首先查看该进程的日志文件,未发现异常。

    无意间执行 df 命令,发现磁盘已经满了,经查,是另一进程的日志文件占用过高,已近700GB。利用 scp 将部分日志文件迁移到另一台服务器,用 vim打开日志,定位到1000多行发现出错信息:open read pipe failed : Permission denied,定位到文末,也是相同的出错语句,得到结论,该语句频繁输出,导致文件过大,占用空间。

    删除日志文件,磁盘恢复,但 CPU 依然满载,使用了iotop -oPiostatpidstat -d 1命令查看,发现还跟 rsyslog 有关。

    网上有相关问题的介绍,根据文章,使用service rsyslog status查看 syslog 的服务状态,输出如下:

    Oct 29 11:06:57 localhost.localdomain systemd[1]: Starting System Logging Service...
    Oct 29 11:06:57 localhost.localdomain rsyslogd[4836]:  [origin software="rsyslogd" swVersion="8.24.0-34.el7" x-pid="4836" x-info="http://www.rsyslog.com"] start
    Oct 29 11:06:57 localhost.localdomain systemd[1]: Started System Logging Service.
    Oct 29 11:06:57 localhost.localdomain rsyslogd[4836]: sd_journal_get_cursor() failed: 'Cannot assign requested address'  [v8.24.0-34.el7]
    Oct 29 11:06:57 localhost.localdomain rsyslogd[4836]: imjournal: journal reloaded... [v8.24.0-34.el7 try http://www.rsyslog.com/e/0 ]
    Oct 29 11:06:57 localhost.localdomain rsyslogd[4836]: imjournal: journal reloaded... [v8.24.0-34.el7 try http://www.rsyslog.com/e/0 ]
    Oct 29 11:06:58 localhost.localdomain rsyslogd[4836]: imjournal: begin to drop messages due to rate-limiting
    Oct 29 11:07:00 localhost.localdomain rsyslogd[4836]: sd_journal_get_cursor() failed: 'Cannot assign requested address'  [v8.24.0-34.el7]
    Oct 29 11:07:00 localhost.localdomain rsyslogd[4836]: imjournal: journal reloaded... [v8.24.0-34.el7 try http://www.rsyslog.com/e/0 ]
    Oct 29 11:07:00 localhost.localdomain rsyslogd[4836]: imjournal: journal reloaded... [v8.24.0-34.el7 try http://www.rsyslog.com/e/0 ]
    Oct 29 11:07:04 localhost.localdomain rsyslogd[4836]: sd_journal_get_cursor() failed: 'Cannot assign requested address'  [v8.24.0-34.el7]
    Oct 29 11:07:04 localhost.localdomain rsyslogd[4836]: imjournal: journal reloaded... [v8.24.0-34.el7 try http://www.rsyslog.com/e/0 ]
    Oct 29 11:07:04 localhost.localdomain rsyslogd[4836]: imjournal: journal reloaded... [v8.24.0-34.el7 try http://www.rsyslog.com/e/0 ]
    

    可知系统的日志服务出现问题。根据网上说法,手动删除/var/lib/rsyslog/imjournal.state文件并重启 rsyslog,命令如下:

    rm -rf /var/lib/rsyslog/imjournal.state
    systemctl restart rsyslog
    

    随后查看,问题依旧,再重启多次亦然。问题还是未解决。