【Linux】/proc/stat解析
一. 概述
1.1 CPU时间
cpu指标 含义
user 用户态时间
nice 用户态时间(低优先级,nice>0)
system 内核态时间
idle 空闲时间
iowait I/O等待时间
irq 硬中断
softirq 软中断
iowait时间是不可靠值,理由如下:
CPU不会等待I/O执行完成,而iowait是等待I/O完成的时间。 当CPU进入idle状态,很可能会调度另一个task执行,所以iowait计算时间偏小;
多核CPU,iowait的计算并非某一个核,因此计算每一个cpu的iowait非常困难;
相关资料:http://man7.org/linux/man-pages/man5/proc.5.html
二. proc/stat
proc/stat节点记录的是系统进程整体的统计信息
2.1 stat数据
Gityuan$ adb shell cat /proc/stat
//CPU指标:user,nice, system, idle, iowait, irq, softirq
cpu 130216 19944 162525 1491240 3784 24749 17773 0 0 0
cpu0 40321 11452 49784 403099 2615 6076 6748 0 0 0
cpu1 26585 2425 36639 151166 404 2533 3541 0 0 0
cpu2 22555 2957 31482 152460 330 2236 2473 0 0 0
cpu3 15232 1243 20945 153740 303 1985 3432 0 0 0
cpu4 5903 595 6017 157410 30 10959 605 0 0 0
cpu5 4716 380 3794 157909 23 118 181 0 0 0
cpu6 8001 515 8995 157571 48 571 180 0 0 0
cpu7 6903 377 4869 157885 31 271 613 0 0 0
intr ...
ctxt 22523049
btime 1500827856
processes 23231
procs_running 1
procs_blocked 0
softirq 3552900 843593 733695 19691 93143 468832 12783 257382 610426 0 513355
时间单位,sysconf(_SC_CLK_TCK)一般地定义为jiffies(一般地等于10ms)
2.2 说明
intr:系统启动以来的所有interrupts的次数情况
ctxt: 系统上下文切换次数
btime:启动时长(单位:秒),从Epoch(即1970零时)开始到系统启动所经过的时长,每次启动会改变。
此处指为1500827856,转换北京时间为2017/7/24 0:37:36
processes:系统启动后所创建过的进程数量。当短时间该值特别大,系统可能出现异常
procs_running:处于Runnable状态的进程个数
procs_blocked:处于等待I/O完成的进程个数
另外:
cat /proc/uptime
82044.14 215440.94
第一个值代表从开机到现在的累积时间(单位为秒), 开机后运行82044秒
第二个值代表从开机到现在的CPU空闲时间,单位为秒
技巧:结合btime获取当前的绝对时间,1500827856 + 82044 = 1500909900, 转换成北京时间2017/7/24 23:25:00,也就是当前执行命令cat /proc/uptime的时间点。
三. proc/[pid]>/stat
proc//stat用于获取某一个进程的统计信息,实现过程见fs/proc/array.c的do_task_stat()
3.1 stat数据
cat /proc/31/stat
31 (migration/3) S 2 0 0 0 -1 69238848 //1~9
69238848 0 0 0 0 0 1669 0 0 //10~17
-100 0 1 0 10 0 0 //18~25
18446744073709551615 0 0 0 0 0 0 0 2147483647 0 0 0 0 17 3 99 1 0 0 0 0 0 0 0 0 0 0 0
3.2 解释
pid: 进程ID.
comm: task_struct结构体的进程名
state: 进程状态, 此处为S
ppid: 父进程ID (父进程是指通过fork方式,通过clone并非父进程)
pgrp:进程组ID
session:进程会话组ID
tty_nr:当前进程的tty终点设备号
tpgid:控制进程终端的前台进程号
flags:进程标识位,定义在include/linux/sched.h中的PF_*, 此处等于1077952832
minflt: 次要缺页中断的次数,即无需从磁盘加载内存页. 比如COW和匿名页
cminflt:当前进程等待子进程的minflt
majflt:主要缺页中断的次数,需要从磁盘加载内存页. 比如map文件
majflt:当前进程等待子进程的majflt
utime: 该进程处于用户态的时间,单位jiffies,此处等于166114
stime: 该进程处于内核态的时间,单位jiffies,此处等于129684
cutime:当前进程等待子进程的utime
cstime: 当前进程等待子进程的utime
priority: 进程优先级, 此次等于10.
nice: nice值,取值范围[19, -20],此处等于-10
num_threads: 线程个数, 此处等于221
itrealvalue: 该字段已废弃,恒等于0
starttime:自系统启动后的进程创建时间,单位jiffies,此处等于2284
vsize:进程的虚拟内存大小,单位为bytes
rss: 进程独占内存+共享库,单位pages,此处等于93087
rsslim: rss大小上限
说明:
第10~17行主要是随着时间而改变的量;
内核时间单位,sysconf(_SC_CLK_TCK)一般地定义为jiffies(一般地等于10ms)
starttime: 此值单位为jiffies, 结合/proc/stat的btime,可知道每一个线程启动的时间点
1500827856 + 2284/100 = 1500827856, 转换成北京时间为2017/7/24 0:37:58
第四行数据很少使用,只说一下该行第7至9个数的含义:
signal:即将要处理的信号,十进制,此处等于6660
blocked:阻塞的信号,十进制
sigignore:被忽略的信号,十进制,此处等于36088
四 cat /proc/31/task/31/stat
可以查看该进程包含的所有线程信息
【Linux】/proc/stat解析的更多相关文章
- linux log日志解析
linux log日志解析 其实,可以说成是监控系统的记录,系统一举一动基本会记录下来.这样由于信息非常全面很重要,通常只有 root 可以进行视察!通过登录文件(日志文件)可以根据屏幕上面的错误 ...
- Linux Pthread 深入解析(转-度娘818)
Linux Pthread 深入解析 Outline - 1.线程特点 - 2.pthread创建 - 3.pthread终止 - 4.mutex互斥量使用框架 - ...
- linux mknod命令解析
linux mknod命令解析 http://www.cnblogs.com/cobbliu/archive/2011/07/05/2389014.html mknod:make node 生成设备 ...
- Linux Command Line 解析
Linux Command Line 解析 0 处理模型 Linux kernel的启动包括很多组件的初始化和相关配置,这些配置参数一般是通过command line进行配置的.在进行后续分析之前,先 ...
- Linux 网络配置文件解析
Linux 网络配置文件解析 网络配置文件路径/etc/sysconfig/network-scripts/ifcfg-* *代表网卡名 vim /etc/sysconfig/network- ...
- Linux proc目录下 几个系统文件下的各项参数 (cpuinfo,uptime,meminfo,stat,loadavg)
参考链接: Linux 操作系统内核基本实验.pdf http://max.book118.com/html/2015/0919/25787869.shtm Linux下cpuinfo文件各项参数的详 ...
- [Linux] Proc 文件系统
转载自:http://linux.chinaunix.net/doc/2004-10-05/16.shtml#324lfindex0 目录: /proc --- 一个虚拟文件系统 加载 proc 文件 ...
- LINUX DNS客户端 解析域名慢的问题。
Linux系统下域名解析的配置文件是/etc/resolv.conf cat /etc/resolv.conf # Generated by NetworkManager options single ...
- [转帖]linux /proc目录下的文件为何无法用vi编辑保存
linux /proc目录下的文件为何无法用vi编辑保存 https://blog.51cto.com/xlogin/1216914 学习一下 之前看过书 这一点 没太仔细看.. xlogin关注8人 ...
- Linux服务器配置DNS解析
概述 DNS(Domain Name System,域名系统) DNS的作用,简单的说:就是把我们输入的网站域名翻译成IP地址的系统. 本文建立在已搭建好DNS服务器,这里讨论为linux机器配置DN ...
随机推荐
- 【项目实战】CNN手写识别复杂模型的构造
感谢视频教程:https://www.bilibili.com/video/BV1Y7411d7Ys?p=11 这里开一篇新博客不仅仅是因为教程视频单独出了1p,也是因为这是一种代码编写的套路,特在此 ...
- Kibana:在Kibana 中定制 time picker 及 指标可视化显示格式
文章转载自:https://blog.csdn.net/UbuntuTouch/article/details/107066779
- 24 个 Docker 常见问题处理技巧
转载自:https://mp.weixin.qq.com/s/PoyXyZUVQEiJfNac2qShkw
- 在 Traefik 中使用 Kubernetes Gateway API
文章转载自:https://mp.weixin.qq.com/s/QYy8ETBB-xqU0IMI7YuTWw Gateway API(之前叫 Service API)是由 SIG-NETWORK 社 ...
- Logstash:Logstash-to-Logstash 通信
文章转载自:https://elasticstack.blog.csdn.net/article/details/117253545 在有些时候,我们甚至可以建立 Logstash-to-Logsta ...
- VMware安装Win11+WSA子系统和使用教程
VMware安装Win11+WSA子系统和使用教程 作者:Sna1lGo 时间:2022/9/29 下载相关文件: Win11镜像:Download Windows 11 (microsoft.com ...
- 用 VS Code 搞Qt6:使用 PySide 6
一般来说,用C++写 Qt 应用才是正宗的,不过,为了让小学生也能体验 Qt 的开发过程,或者官方为了增加开发者人数,推出了可用 Python 来编程的 Qt 版本.此版本命名比较奇葩,叫 PySid ...
- 条件期望:Conditional Expectation 举例详解之入门之入门之草履虫都说听懂了
我知道有很多人理解不了 "条件期望" (Conditional Expectation) 这个东西,有的时候没看清把随机变量看成事件,把 \(\sigma\)-algebra 看成 ...
- python今日分享(内置方法)
目录 一.习题详解 二.数据类型的内置方法理论 三.整型相关操作 四.浮点型相关操作 五.字符串相关操作 六.列表相关操作 今日详解 一.习题详解 1.计算1-100所有数据之和 all_num = ...
- 利用POI遍历出层级结构的excel表格
import java.util.ArrayList; import java.util.List; import org.apache.poi.ss.util.CellRangeAddress; p ...