mpstat命令和/proc/stat文件
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文件相关推荐
- linux cpu intr s,mpstat命令(linux cpu监控工具)
mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具.其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中.在多CPUs系统里,其不但能查看所有 ...
- mpstat命令(linux cpu监控工具)
mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具.其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中.在多CPUs系统里,其不但能查看所有 ...
- Linux下mpstat命令下,linux mpstat命令详解
一.mpstat说明 mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具.其报告与CPU的一些统计信息,这些信息存放在/proc/stat文件中.在多CPUs系 ...
- mpstat命令使用
目录 一.mpstat是什么 二.mpstat的语法 三.mpstat的使用 1.mpstat 2. mpstat -P ALL 5 2 3.mpstat命令的各列含义 4.平均负载信息 四.压力测试 ...
- linux服务器mpstat,linux mpstat命令使用详解
mpstat,全称为Multiprocessor Statistics.是实时系统监控工具.报告与cpu的一些统计信息这些信息都存在/proc/stat文件中,在多CPU系统里,其不但能查看所有的CP ...
- linux 命令 mpstat,Linux命令---mpstat命令详解
mpstat是MultiProcessor Statistics的缩写,是实时系统监控工具.报告CPU的一些统计信息,这些信息存放在/proc/stat文件中.在多CPUs系统里,其不但能查看所有CP ...
- Linux运维05:mpstat命令详解
系列专题:Linux运维入门教程 mpstat是Multiprocessor Statistics的缩写,是CPU实时监控工具.它会显示CPU的一些统计信息,这些信息存放在/proc/stat文件中. ...
- linux /proc目录文件详解
Linux中/proc目录下文件详解(一) /proc文件系统下的多种文件提供的系统信息不是针对某个特定进程的,而是能够在整个系统范围的上下文中使用.可以使用的文件随系统配置的变化而变化.命令proc ...
- /proc/cpuinfo_Linux中的/ proc / cpuinfo和/ proc / meminfo文件
/proc/cpuinfo /proc is a directory in the Linux system that contains information about the system. / ...
最新文章
- Java中使用FTPClient上传下载
- Logparser 分析 Exchange 日志文件
- 恢复博客更新 --- 逆序单项链表 要求空间复杂度o(1) 时间复杂度o(n)
- C#继承与多态 virtual虚方法的使用 在子类中使用override重写父类函数
- 嵌入式系统Linux内核开发工程师必须掌握的三十道题
- mysql事务和非事物_mysql事务型与非事务型表1.8.5.3. 事务和原子操作
- html表格中的内容只读,HTML表单只读选择标记/输入
- 第一课--BD的使用
- Bluetooth LE for iOS demo. LightBlue like demo.
- Android车牌识别sdk开发包,基于Android和iOS平台的车牌识别SDK开发包
- 网页中MP4视频格式要求
- 做好产品需求文档的这十步
- 1000:有一分数序列: 2/1 3/2 5/3 8/5 13/8 21/13...... 求出这个数列的前N项之和,保留两位小数:
- 腾讯云区块链,产业区块链的坚守者
- 真我Realme GT Neo5有无线充电吗? 真我Realme GT Neo5快充速度是多少瓦?
- MSP430晶振配置详解
- python应用环境
- 前端开发者如何与UI设计师沟通
- matlab引言,MatLab 2018a 官方教程
- 饿了么在即时零售的胜算
热门文章
- 解决nginx: [emerg] “ssl“ directive is not allowed here in /etc/nginx/conf.d/xxx.conf:5
- rx590 黑苹果 无货_黑苹果10.14免驱显卡表
- 深度学习半自动标注_拯救深度学习:标注数据不足下的深度学习方法
- 计算机自带游戏删掉还能装吗,电脑自带游戏删除后怎么恢复
- DC-DC开关电源电感选型指南
- 知识图谱概述(图谱学苑课程)
- 中国杀毒软件业应该向国际厂商学什么?
- bilibili首页导航
- 考研数学真题虐你千百遍,学渣教你如何逆袭数学130+
- 短连接http方式如何转变为'长连接'模式