HZ:1秒钟内,时钟中断的次数,即1秒钟内,系统时钟的节拍次数。

jiffies:全局变量,用来记录系统自启动以来产生的节拍总数

系统运行时间(以秒为单位):system_time=(jiffies)/HZ。

eg:jiffies定时器,HZ=1000,精度只能达到1ms。,HZ=100,精度只能达到10ms,

jiffies+msecs_to_jiffies(xx ms);   可做到ms级,

Linux中的软定时器(低分辨率的timer_list定时器)利用CPU时钟中断来感知时间更新,并通过TIMER_SOFTIRQ软中断来运行到期的定时器。时钟中断每秒触发HZ次,HZ的值可在编译时通过CONFIG_HZ选项来配置。

较高的HZ可使系统具有更好的交互性和相应速度,适合于桌面系统等交互性强的系统,但HZ增高也会导致内核中处理定时中断以及调用定时器例程更频繁,使系统开销也随之增高。

proc文件系统

/proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为内核与进程提供通信的接口。用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取/proc目录中的文件时,proc文件系统是动态从系统内核读出所需信息并提交的。

/proc目录中有一些以数字命名的目录,它们是进程目录。系统中当前运行的每一个进程在/proc下都对应一个以进程号为目录名的目录/proc/pid,它们是读取进程信息的接口。此外,在Linux 2.6.0-test6以上的版本中/proc/pid目录中有一个task目录,/proc/pid/task目录中也有一些以该进程所拥有的线程的线程号命名的目录/proc/pid/task/tid,它们是读取线程信息的接口。

/proc/cpuinfo文件

该文件中存放了有关 cpu的相关信息(型号,缓存大小等)。

processor (0)                       cpu的一个物理标识

结论1:可以通过该文件根据processor出现的次数统计cpu的逻辑个数(包括多核、超线程)。

/proc/stat文件

该文件包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。不同内核版本中该文件的格式可能不大一致,

第一行的数值表示的是CPU总的使用情况,所以我们只要用第一行的数字计算就可以了。下表解析第一行各数值的含义:

参数          解析(单位:jiffies)

(jiffies是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数,在linux中,一个节拍大致可理解为操作系统进程调度的最小时间片,不同linux内核可能值有不同,通常在1ms到10ms之间)

user(38082)从系统启动开始累计到当前时刻,处于用户态的运行时间,不包含 nice值为负进程。

nice(627)从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间

system(27594)从系统启动开始累计到当前时刻,处于核心态的运行时间

idle(893908)从系统启动开始累计到当前时刻,除IO等待时间以外的其它等待时间iowait (12256)从系统启动开始累计到当前时刻,IO等待时间(since 2.5.41)

irq(581)从系统启动开始累计到当前时刻,硬中断时间(since 2.6.0-test4)

softirq(895)从系统启动开始累计到当前时刻,软中断时间(since 2.6.0-test4)stealstolen(0)                   which is the time spent in other operating systems when running in a virtualized environment(since 2.6.11)

guest(0)                               which is the time spent running a virtual  CPU  for  guest operating systems under the control of the Linux kernel(since 2.6.24)

结论2:总的cpu时间totalCpuTime = user + nice + system + idle + iowait + irq + softirq+ stealstolen  +  guest

/proc//stat文件

该文件包含了某一进程所有的活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。以下通过实例数据来说明该文件中各字段的含义。

说明:以下只解释对我们计算Cpu使用率有用相关参数

参数                                                                解释

pid=6873进程号

utime=1587该任务在用户态运行的时间,单位为jiffies

stime=41958该任务在核心态运行的时间,单位为jiffies

cutime=0所有已死线程在用户态运行的时间,单位为jiffies

cstime=0所有已死在核心态运行的时间,单位为jiffies

结论3:进程的总Cpu时间processCpuTime = utime + stime + cutime + cstime,该值包括其所有线程的cpu时间。

/proc//task//stat文件

该文件包含了某一进程所有的活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。该文件的内容格式以及各字段的含义同/proc//stat文件。

注意,该文件中的tid字段表示的不再是进程号,而是linux中的轻量级进程(lwp),即我们通常所说的线程。

结论4:线程Cpu时间threadCpuTime = utime + stime

ps 命令

结论5:ps命令算出来的cpu使用率相对于进程启动时的平均值,随着进程运行时间的增大,该值会趋向于平缓。

top命令

通过top命令可以查看系统中相关进程的实时信息(cpu使用率等)。

结论7:在多核的情况下top命令输出的cpu使用率实质是按cpu个数*100%计算的。

单核情况下Cpu使用率的计算

基本思想

通过读取/proc/stat 、/proc//stat、/proc//task//stat以及/proc/cpuinfo这几个文件获取总的Cpu时间、进程的Cpu时间、线程的Cpu时间以及Cpu的个数的信息,然后通过一定的算法进行计算(采样两个足够短的时间间隔的Cpu快照与进程快照来计算进程的Cpu使用率)。

总的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

某一进程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的个数);

某一线程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://my.oschina.net/u/347414/blog/1924400

linux查看cpu的赫兹,linux平台jiffies和HZ Cpu使用率相关推荐

  1. linux查看显卡核心数,linux查看硬件信息,linux查看硬盘信息,linux查看CPU信息,linux查看显卡,硬件型号信息 | 帮助信息-动天数据...

    linux查看硬件信息,linux查看硬盘信息,linux查看CPU信息,linux查看显卡,硬件型号信息 作者:dthost | 时间:2015-09-30 | 8,325 次阅读 linux服务器 ...

  2. linux查看虚拟内存占用高,linux查看虚拟内存和cpu占用率

    top free cat /proc/meminfo cat /proc/cpuinfo [root@centerlisdb proc]# dmidecode |grep -A16 "Mem ...

  3. linux查看内存的生产商,linux下查看CPU.内存型号.pci 转自《Ivan-blog》

    cat /proc/cpuinfo | grep 'physical id' physical id : 0 physical id : 0 physical id : 0 physical id : ...

  4. linux查看设备内存代码,Linux下内存查看命令(示例代码)

    在Linux下面,我们常用top命令来查看系统进程,top也能显示系统内存.我们常用的Linux下查看内容的专用工具是free命令. Linux下内存查看命令free详解: 在Linux下查看内存我们 ...

  5. linux 查看san链路状态,linux系统运行状态检查

    1 CPU状态检查 1.1 运行时间 信息: 运行时间 / Uptime 工具: uptime 示例: [root@paris ~]# uptime 17:03:12 up 2 days, 20:08 ...

  6. linux查看机器配置命令,linux 下查看机器配置的几个命令

    查看硬盘信息:dmesg | grep hd username@node01:~> dmesg|grep hd activating NMI Watchdog ... done. testing ...

  7. linux下查看系统硬件,Linux 查看系统硬件信息 Linux 查看系统硬件信息(实例详解)...

    linux查看系统的硬件信息,并不像windows那么直观,这里我罗列了查看系统信息的实用命令,并作了分类,实例解说.html cpu lscpu命令,查看的是cpu的统计信息.linux blue@ ...

  8. linux查看程序的快捷键,linux操作系统的快捷键及命令讲解

    GNU是为Linux提供免费软件支持的工具;红帽与乌邦图都是Linux的一个版本. Linux登入时登入名为root的是最高级别 Linux系统中的文件夹: /:根目标 bin:二进制可执行文件 li ...

  9. linux查看显示器名称命令,linux 查看显示器信息Linux下查看硬件信息命令大全

    /proc 虚拟的目录,是系统内存的映射.可直接访问这个目录来获取系统信息.其中也包含下面的信息: 主机CPU信息:cpuinfo 主机DMA通道信息:dma 文件系统信息:filesystems 主 ...

最新文章

  1. idea解决@Data注解报红问题
  2. python第三方库有哪些-我常用的几个第三方 Python 库
  3. MySQL通讯协议研究3(Text模式查询)
  4. 音视频领域或将开启”外卷“之路
  5. 【智能AI】准确率97%的开源肺炎检测模型
  6. 买SUV要不要选四驱,有哪些区别?
  7. android 6.0 ndk版本,[推荐]android-ndk6.0翻译(1)
  8. HDU 4915 Parenthese sequence
  9. C语言里面邻接表的创建
  10. xgboost算法_Xgboost调参小结
  11. 小牛uqi几个版本区别_川崎ZX25R便宜版本长这样?
  12. 2022 chrome离线下载包
  13. Xshell_4.0绿色版
  14. 蓝牙SBC开发笔记(一)
  15. sas sata ssd硬盘类型,硬盘接口
  16. MPU6050原始数据分析——学习笔记
  17. 题解-CTS2019氪金手游
  18. 一位北大才子的光棍节情诗
  19. http://www.makepic.com/print.php,在线制作印章
  20. JavaScript实现双色球随机一注

热门文章

  1. C++围棋小游戏1.2
  2. 3G的发展:(4)大洋洲
  3. 【JavaScript】函数应用
  4. 遍历dataframe每一行的每一个元素
  5. 概率统计及其应用第三章知识总结_2020考研数学概率论与数理统计:各章节考试重点分析...
  6. 计算机类期刊 SCI 、EI 收录,核心期刊目录
  7. i5 10400f参数 i5 10400f可以超频吗
  8. 记一篇IT培训日记042-暴脾气
  9. 蓝软服务器文件监控同步系统,文件系统监控同步传输系统
  10. 【HaaS Python 硬件积木】INA219电压电流计