mpstat,top等命令都能显示出当前cpu的平均负载。这里总结一下实现原理。和磁盘容量相同,主要信息依然来自proc文件夹中的文件。

/proc/stat文件

文件中包含了所有cpu活动信息,所有值都是从系统启动开始累计到当前的值。

cat /proc/stat 可以看到

01 cpu  338689 491 148834 421508071 144932 147 2393 0 0
02 cpu0 76231 102 27936 105287866 65496 131 1279 0 0
03 cpu1 61032 124 33826 105461911 7878 5 327 0 0
04 cpu2 99959 119 48815 105348407 61499 4 270 0 0
05 cpu3 101465 145 38256 105409886 10058 5 516 0 0
06 intr #内容过长,省略。。
07 btime 1404887530
08 processes 67847
09 procs_running 1
10 procs_blocked 0
11 softirq 143606318 0 48818619 0 7394692 207606 0 2 37354272 37556 49793571
12 per_cpu_ctxt 89704992 16150309 18333905 18496328

“cpu”开头的几行给出的是cpu不同状态下时间片(单位:jiffies)。

cpu为总的信息,cpu0,cpu1….cpu<n>对应各个cpu的信息。

“cpu”后面的数值是对应(user、nice、system、idle、iowait、irq、softirq、stealstolen、guest)的9元组:

数值对应cpu这行。

urt    用户时间(User time) 从系统启动开始累计到当前时刻,处于用户态的运行时间,不包括nice啥时间。 

net     Nice时间(Nice time)     系统调整进程优先级所花费的时间

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

iet     空闲时间(Idle time)     系统空闲时间

wgt    等待时间(Waiting time)  从系统启动开始累计到当前时刻,IO等待时间(since 2.5.41)

hdt     硬中断处理时间(Hard Irq time)             从系统启动开始累计到当前时刻,硬中断时间(since 2.6.0-test4)

sqt     丢失时间(Steal  time)        从系统启动开始累计到当前时刻,软中断时间(since 2.6.0-test4)

以下两个参数可能有的系统不存在

slt       丢失时间(Steal  time)   丢失的时间片,如果系统运行于虚拟机中,则会有时间片用在别的操作系统上。         which is the time spent in other operating systems when running in a virtualized environment(since 2.6.11)

gst     客户时间(guest  time)  系统中运行了虚拟机,会有时间片用于调度虚拟机中的操作系统内核。   which is the time spent running a virtual  CPU  for  guest operating systems under the control of the Linux kernel(since 2.6.24)

“intr”这行给出中断的信息,第一个为自系统启动以来,发生的所有的中断的次数;然后每个数对应一个特定的中断自系统启动以来所发生的次数。
“ctxt”给出了自系统启动以来CPU发生的上下文交换的次数。
“btime”给出了从系统启动到现在为止的时间,单位为秒。(实际查看发现这个值不变,原因未知)
“processes” (total_forks) 自系统启动以来所创建的任务的个数目。
“procs_running”当前运行队列的任务的数目。
“procs_blocked”当前被阻塞的任务的数目。

CPU占用率计算公式:

注意这里使用的是一个阶段的差值来计算使用率的,这个使用率是个平均值。

注意最后两个数值(slt,gst)可能有的版本不存在。

01 cut=urt+net+smt+iet+wgt+hdt+sqt+slt+gst
02 rate['us']=(urt+net)/cut*100       #us — (User time)用户空间占用CPU的百分比。
03 rate['sy']=(smt+hdt+sqt)/cut*100   #sy — (System time)内核空间占用CPU的百分比。
04 rate['ni']=net/cut*100             #ni — (Nice time)改变过优先级的进程占用CPU的百分比
05 rate['id']=iet/cut*100             #id — (Idle time)空闲CPU百分比
06 rate['wa']=wgt/cut*100             #wa — (Waiting time)IO等待占用CPU的百分比
07 rate['hi']=hdt/cut*100             #hi — (Hardware IRQ time)硬中断占用CPU的百分比
08 rate['si']=sqt/cut*100             #si — (Software Interrupts)软中断占用CPU的百分比
09 rate['st']=slt/cut*100             #st — (Steal time)丢失事件占用CPU的百分比
10 rate['gt']=gst/cut*100             #gt — (Guest time)系统中虚拟机使用的CPU占总CPU的百分比

转载请注明:旅途@KryptosX » mpstat命令和/proc/stat文件

mpstat命令和/proc/stat文件相关推荐

  1. linux cpu intr s,mpstat命令(linux cpu监控工具)

    mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具.其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中.在多CPUs系统里,其不但能查看所有 ...

  2. mpstat命令(linux cpu监控工具)

    mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具.其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中.在多CPUs系统里,其不但能查看所有 ...

  3. Linux下mpstat命令下,linux mpstat命令详解

    一.mpstat说明 mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具.其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中.在多CPUs系 ...

  4. mpstat命令使用

    目录 一.mpstat是什么 二.mpstat的语法 三.mpstat的使用 1.mpstat 2. mpstat -P ALL 5 2 3.mpstat命令的各列含义 4.平均负载信息 四.压力测试 ...

  5. linux服务器mpstat,linux mpstat命令使用详解

    mpstat,全称为Multiprocessor Statistics.是实时系统监控工具.报告与cpu的一些统计信息这些信息都存在/proc/stat文件中,在多CPU系统里,其不但能查看所有的CP ...

  6. linux 命令 mpstat,Linux命令---mpstat命令详解

    mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具.报告CPU的一些统计信息,这些信息存放在/proc/stat文件中.在多CPUs系统里,其不但能查看所有CP ...

  7. Linux运维05:mpstat命令详解

    系列专题:Linux运维入门教程 mpstat是Multiprocessor Statistics的缩写,是CPU实时监控工具.它会显示CPU的一些统计信息,这些信息存放在/proc/stat文件中. ...

  8. linux /proc目录文件详解

    Linux中/proc目录下文件详解(一) /proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用.可以使用的文件随系统配置的变化而变化.命令proc ...

  9. /proc/cpuinfo_Linux中的/ proc / cpuinfo和/ proc / meminfo文件

    /proc/cpuinfo /proc is a directory in the Linux system that contains information about the system. / ...

最新文章

  1. Java中使用FTPClient上传下载
  2. Logparser 分析 Exchange 日志文件
  3. 恢复博客更新 --- 逆序单项链表 要求空间复杂度o(1) 时间复杂度o(n)
  4. C#继承与多态 virtual虚方法的使用 在子类中使用override重写父类函数
  5. 嵌入式系统Linux内核开发工程师必须掌握的三十道题
  6. mysql事务和非事物_mysql事务型与非事务型表1.8.5.3. 事务和原子操作
  7. html表格中的内容只读,HTML表单只读选择标记/输入
  8. 第一课--BD的使用
  9. Bluetooth LE for iOS demo. LightBlue like demo.
  10. Android车牌识别sdk开发包,基于Android和iOS平台的车牌识别SDK开发包
  11. 网页中MP4视频格式要求
  12. 做好产品需求文档的这十步
  13. 1000:有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数:
  14. 腾讯云区块链,产业区块链的坚守者
  15. 真我Realme GT Neo5有无线充电吗? 真我Realme GT Neo5快充速度是多少瓦?
  16. MSP430晶振配置详解
  17. python应用环境
  18. 前端开发者如何与UI设计师沟通
  19. matlab引言,MatLab 2018a 官方教程
  20. 饿了么在即时零售的胜算

热门文章

  1. 解决nginx: [emerg] “ssl“ directive is not allowed here in /etc/nginx/conf.d/xxx.conf:5
  2. rx590 黑苹果 无货_黑苹果10.14免驱显卡表
  3. 深度学习半自动标注_拯救深度学习:标注数据不足下的深度学习方法
  4. 计算机自带游戏删掉还能装吗,电脑自带游戏删除后怎么恢复
  5. DC-DC开关电源电感选型指南
  6. 知识图谱概述(图谱学苑课程)
  7. 中国杀毒软件业应该向国际厂商学什么?
  8. bilibili首页导航
  9. 考研数学真题虐你千百遍,学渣教你如何逆袭数学130+
  10. 短连接http方式如何转变为'长连接'模式