计算公式

(process jiffies) * 100.0f / ((float)Hertz * (float)et * cpuCoresCount)

亦或

(process jiffies) * 100.0f / (float)Hertz / (float)et / cpuCoresCount

亦或

100 * (process jiffies)/ (float)Hertz / (float)et  / cpuCoresCount

相当于top -p pid 中 %CPU 的值

process jiffies的计算

process jiffies是内核提供的该进程在DeltaT时间内消耗的jiffies。具体是/proc/<pid>/stat文件的第14-17 token。14-17token分别是utime, stime, cutime, cstime。cutime/cstime分别是该进程spawn的子进程在用户态和内核态消耗的jiffies。

process jiffies = utime + stime + cutime + cstime

Jiffies 为Linux核心变数(unsigned long),它被用来记录系统自开机以来,已经过了多少tick。每发生一次timer interrupt,Jiffies变数会被加一。

注意stat中的jiffies是一个绝对累计值,所以要取两个时间点,算DeltaT中消耗的jiffies。

(process jiffies) = (current process jiffies) - (last process jiffies)

Hertz(tick per second)

什么是jiffies呢?其实就是Linux内核定义的一个时间单位,值就是1/Hertz。Linux内核中,进程/线程消耗的时间,单位都是这个 jiffies。

Hertz就是CLK_TCK,可以根据getconf CLK_TCK获取

LINUX系统时钟频率是一个常数HZ来决定的, 通常HZ=100,即100Hz,一个周期即为 1/100s = 10ms = 10^7 ns,那么他的精度度就是10ms(毫秒)。也就是说每10ms一次中断。所以一般来说Linux的精确度是10毫秒。

et

这里是每次统计的间隔时间,单位为秒

(System.nanoTime() - lastNanoTime) * 1E-9

cpu核数

/usr/bin/nproc

或者

cat /proc/cpuinfo | grep processor | wc -l

doc

  • man-proc

  • Linux内核中的jiffies及其作用介绍及jiffies等相关函数详解

  • Top中是如何取到Linux内核中的Hertz的?以及CPU使用率到底是怎么算出来的?

  • Docker 监控的一点想法

进程cpu使用率的计算相关推荐

  1. 进程CPU使用率计算

    1.查看进程相关信息 cat /proc/进程号/stat 间隔period 秒再次查看进程信息,分别记录两次的utime和stime utime是第14位 stime是第15位 lastutime是 ...

  2. Ubuntu kswapd0 进程CPU使用率 超高

    今天租户的云主机遇到了一个很奇怪的问题,CPU占用一直100%居高不下. 客户环境: Ubuntu 18.04 LTS 应用:MYsql , Ngnix 使用top命令查看,kswapd0 进程CPU ...

  3. java进程cpu使用率高_什么会导致Java应用程序的CPU使用率飙升?

    问题 无限循环的while会导致CPU使用率飙升吗? 经常使用Young GC会导致CPU占用率飙升吗? 具有大量线程的应用程序的CPU使用率是否较高? CPU使用率高的应用程序的线程数是多少? 处于 ...

  4. Windows下用C语言获取进程cpu使用率,内存使用,IO情况

    /** @file * @brief 进程统计信息函数的声明 * @author 张亚霏 * @date 2009/05/03 * @version 0.1 * */ #ifndef PROCESS_ ...

  5. c语言占用cpu的程序,Windows下用C语言获取进程cpu使用率,内存使用,IO情况

    转自: http://zhangyafeikimi.iteye.com/blog/378658 process_stat.h /** @file * @brief 进程统计信息函数的声明 * @aut ...

  6. CpuLimit脚本进程CPU使用率限制

    第零章 序 在嵌入式平台调试程序的时候,经常会遇到进程占用cpu资源过高的情况,导致系统的稳定性降低,我们怎么来解决这个问题呢? 我们可以通过cpulimit工具来限制每个进程的cpu使用率,提供系统 ...

  7. redis进程CPU使用率100%,kdevtmpfsi木马清除

    病毒表现 CPU使用率无限接近100%,我的四核系统CPU使用率一直再395%-399%波动. 故障出现时间 宝塔面板安装redis之后 问题查找(百度) 木马病毒--kdevtmpfsi 通过red ...

  8. Java进程CPU使用率高排查

    1.使用top 定位到占用CPU高的进程PID top 通过ps aux | grep PID命令 2.获取线程信息,并找到占用CPU高的线程 ps -mp pid -o THREAD,tid,tim ...

  9. 查看cpu使用率。查看进程占用cpu百分比

     /proc/ /stat 包含了所有CPU活跃的信息,该文件中的所有值都是从系统启动开始累计到当前时刻. [root@localhost ~]# cat /proc/6873/stat 6873 ( ...

  10. linux查看cpu的赫兹,linux平台jiffies和HZ Cpu使用率

    HZ:1秒钟内,时钟中断的次数,即1秒钟内,系统时钟的节拍次数. jiffies:全局变量,用来记录系统自启动以来产生的节拍总数 系统运行时间(以秒为单位):system_time=(jiffies) ...

最新文章

  1. 为什么 Java 中“1000==1000”为false,而”100==100“为true?
  2. 图解Java中那18 把锁
  3. 【Qt】QBoxLayout类详解
  4. cesium米转换经纬度_cesium 常见坐标系及坐标转换(工具篇)
  5. Eclipse搭建Cocos2d-x运行环境问题汇总(不含CygWin)
  6. 更改npm淘宝源,并设置cnpm
  7. yii直接执行sql
  8. ❤️《微服务开发—Swagger》(建议收藏)
  9. Linux安装SQLite轻量级数据库
  10. nginx反向代理异常
  11. Android Navigation 详解
  12. 迅雷html什么意思,迅雷达到高速状态是什么意思?带图
  13. JSCORE01-(达)
  14. substring字符串截取
  15. 家庭版Windows10/Windows11不支持远程桌面的解决办法
  16. php手机打开pdf文件怎么打开,PDF文件怎么打开?手机打开PDF及编辑的技巧
  17. fn映射 mac 键盘_如何在Mac OS X下修改Fn键的属性?
  18. ftp服务器型号,ftp服务器的类型及其特点
  19. CMA认证与CNAS认可的八大区别,你知道几个?
  20. sql实现查询学习了所有课程的学生信息

热门文章

  1. CCBPM 同表单分合流说明
  2. unity自带的方法
  3. hdu1536 S-Nim(博弈)
  4. 我的书《编写高质量代码—Web前端开发修炼之道》面市了,请大家多多支持
  5. Linux 下安装Node.js
  6. IntelliJ IDEA 创建 maven 创建java web 项目
  7. unity 相机的问题
  8. 20130418定义全局变量
  9. 判断用户什么时候离开,以什么方式离开
  10. [HNOI 2018]道路