linux系统/proc/stat信息与top的cup信息的联系及区别
一、 /proc 目录
Linux系统上的/proc目录是一种文件系统,即proc文件系统,与其它常见的文件系统不同的是,/proc文件系统是一个伪文件系统,它只存在内存当中,而不占用外存空间。它以文件系统的方式为内核与进程提供通信的接口。用户和应用程序可以通过/proc得到系统的信息,并可以改变内核的某些参数。由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取/proc目录中的文件时,proc文件系统是动态从系统内核读出所需信息并提交的。
二、/proc/stat与top的cpu信息
1. /proc/stat
该文件包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。不同内核版本中该文件的格式可能不大一致,以下通过实例来说明数据该文件中各字段的含义。(内核2.6.32-431版本)
[root@harry proc]# cat /proc/stat
cpu 638 0 1677 868357 2397 7 510 0 0
cpu0 638 0 1677 868357 2397 7 510 0 0
...(后面省略)
第一行的数值表示的是CPU总的使用情况,各数值的含义如下:
参数 |
解析(单位:jiffies) |
user(638) |
从系统启动开始累计到当前时刻,处于用户态的运行时间,不包含 nice值为负进程。 |
nice(0) |
从系统启动开始累计到当前时刻,nice值为负的进程所占用的CPU时间 |
system(1677) |
从系统启动开始累计到当前时刻,处于核心态的运行时间 |
idle(868357) |
从系统启动开始累计到当前时刻,除IO等待时间以外的其它等待时间 |
iowait(2397) |
从系统启动开始累计到当前时刻,IO等待时间(since 2.5.41) |
irq(7) |
从系统启动开始累计到当前时刻,硬中断时间(since 2.6.0-test4) |
softirq(510) |
从系统启动开始累计到当前时刻,软中断时间(since 2.6.0-test4) |
steal(0) |
从系统启动开始累计到当前时刻,这是在虚拟环境中运行时在其他操作系统上花费的时间。(Since Linux 2.6.11) |
guest(0) |
从系统启动开始累计到当前时刻,在Linux内核的控制下为客户操作系统运行虚拟CPU的时间。(Since Linux 2.6.24) |
(jiffies是内核中的一个全局变量,用来记录自系统启动一来产生的节拍数,在linux中,一个节拍大致可理解为操作系统进程调度的最小时间片,不同linux内核可能值有不同,通常在1ms到10ms之间)
总的cpu时间:totalCpuTime = user + nice + system + idle + iowait + irq + softirq + stealstolen + guest。
可以看出,stat文件中记录的时间是从开机到当前时间积累的所有cpu时间。
2. top的cpu信息
输入top命令,输出如下:
top - 00:09:46 up 2:55, 1 user, load average: 0.00, 0.00, 0.00
Tasks: 88 total, 1 running, 87 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3%us, 0.3%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
...(省略)
Cup(s)那行的含义如下:
0.3%us |
用户空间占用CPU百分比 |
0.3%sy |
内核空间占用CPU百分比 |
0.0%ni |
用户进程空间内改变过优先级的进程占用CPU百分比 |
99.3%id |
空闲CPU百分比 |
0.0%wa |
等待输入输出的CPU时间百分比 |
0.0%hi |
硬中断(Hardware IRQ)占用CPU的百分比 |
0.0%si |
软中断(Software Interrupts)占用CPU的百分比 |
0.0%st |
在虚拟环境中运行时在其他操作系统上花费的时间 |
可以看出,top中显示的cpu信息都是实时的各种参数占用的cpu百分比。
3. /proc/stat与top的cpu信息的联系与区别
区别:/proc/stat文件显示的是从启动到当前时间,各种cup时间的累计值;而top则是显示实时的cpu使用情况。
联系:top通过读取/proc/stat去计算cpu占用情况。
/proc/stat 就像汽车仪表盘上的里程数,而top显示的cpu信息则是这辆车的速度。
三、参考
1. Linux中通过/proc/stat等文件计算Cpu使用率
3. Linux: /proc/stat info is not consistent with top command
(完)
linux系统/proc/stat信息与top的cup信息的联系及区别的更多相关文章
- 获得Unix/Linux系统中的IP、MAC地址等信息
获得Unix/Linux系统中的IP.MAC地址等信息 中高级 | 2010-07-13 16:03 | 分类:①C语言. Unix/Linux. 网络编程 ②手册 | 4,471 次阅读 ...
- 类linux系统/proc/sysrq-trigger文件功能作用
立即重启计算机 echo "b" > /proc/sysrq-trigger 立即关闭计算机 echo "o" > /proc/ ...
- Linux 系统 /proc/[pid]/stat 文件解释
转载:http://www.net527.cn/a/caozuoxitong/Linux/2012/0823/24385.html [root@localhost ~]# cat /proc/6873 ...
- Linux 系统中环境变量/etc/profile、/etc/bashrc、~/.bashrc的区别
/etc/profile./etc/bashrc.~/.bashrc的区别 1> etc目录下存放系统管理和配置文件 (系统配置) etc/profile: profile为所有的用户 ...
- Linux系统中/etc/rc.local和/etc/rc.d/rc.local的区别
/etc/rc.d/rc.local 用于添加开机启动命令 /etc/rc.local是/etc/rc.d/rc.local的软连接
- 详解linux系统的启动过程及系统初始化
一.linux系统的启动流程 关于linux系统的启动流程我们可以按步进行划分为如下: POST加电自检 -->BIOS(Boot Sequence)-->加载对应引导上的MBR(boot ...
- CentOS 6.5结合busybox完成自制Linux系统及远程登录和nginx安装测试
前言 系统定制在前面的博文中我们就有谈到过了,不过那个裁减制作有简单了点,只是能让系统跑起来而,没有太多的功能,也没的用户登录入口,而这里我们将详细和深入的来谈谈Linux系统的详细定制过程和实 ...
- linux系统中毒排查学习记录
linux有许多的版本,主要关注redhat(centos)和ubuntu这两个主流版本 以下命令基本都需要root权限,执行命令前记得加sudo 第一步 top,ps命令查看系统资源和负载情况,查看 ...
- ubuntu系统中查看本机cpu和内存信息的命令和用法
https://zhidao.baidu.com/question/192966322.html 写出ubuntu linux系统中查看本机cpu和内存信息的命令和用法,以及如何解读这些命令 ubun ...
随机推荐
- 【转载】探寻C++最快的读取文件的方案
原文地址:https://www.byvoid.com/blog/fast-readfile/ 在竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式.相信几乎所有的C++学习者 ...
- 1072. Gas Station (30) 多源最短路
A gas station has to be built at such a location that the minimum distance between the station and a ...
- 搭建基于hyperledger fabric的联盟社区(七) --升级chaincode
上个版本的chaincode有很多功能不完备,所以要部署新版本的chaincode.Fabric支持在保留现有状态的前提对chaincode进行升级. 一.新版chaincode 新版本的chainc ...
- Netty--使用TCP协议传输文件
简介: 用于将文件通过TCP协议传输到另一台机器,两台机器需要通过网络互联. 实现: 使用Netty进行文件传输,服务端读取文件并将文件拆分为多个数据块发送,接收端接收数据块,并按顺序将数据写入文件. ...
- GC之八--GC 触发Full GC执行的情况及应对策略
目录: GC之一--GC 的算法分析.垃圾收集器.内存分配策略介绍 GC之二--GC日志分析(jdk1.8)整理中 GC之三--GC 触发Full GC执行的情况及应对策略 gc之四--Minor G ...
- Java-Runoob:Java String 类
ylbtech-Java-Runoob:Java String 类 1.返回顶部 1. Java String 类 字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 ...
- docker监控的一点想法
目前项目内部署了docker,于是涉及到关于监控的事情,参考一些经典实例以及一些自己的想法,总结一下思路. 1.关于监控的内容 监控宿主机本身 监控宿主机本身还是比较简单的,同其他服务器监控类似,对c ...
- Git操作行
基础层:-----------------#初始化一个版本仓库git init #复制远程版本库git clone url #添加远程版本库origingit remote add origin ur ...
- Android:不同drawable文件夹的区别
4.0后,新建android工程,会自动生成drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi,drawable-xxh ...
- Django的视图层
HttpResquest对象: request属性: /* 1.HttpRequest.GET 一个类似于字典的对象,包含 HTTP GET 的所有参数.详情请参考 QueryDict 对象. 2.H ...