首页 > 系统相关 >【Linux】/proc/stat解析

【Linux】/proc/stat解析

时间:2022-12-03 22:55:35浏览次数:58  
标签:stat iowait Linux 时间 等于 进程 proc

一. 概述

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

       可以查看该进程包含的所有线程信息

标签:stat,iowait,Linux,时间,等于,进程,proc
From: https://www.cnblogs.com/aalan/p/16948970.html

相关文章

  • 太神奇,Linux中的虚拟网络
    随着平台虚拟化的迅速发展,对公司生态系统的其他部分进行虚拟化也并不稀奇。最近的之一就是虚拟化网络。平台虚拟化的早期实现创建了虚拟NICs,但是今天,网络中更大的部分......
  • 情景linux–一张图搞懂head -n和tail -n
        转载参考:https://blog.csdn.net/signjing/article/details/69357769 总结head-nk=head-n+k,tail-nk=tail-n-k,可以简单记忆为头正尾负;无论k前面的......
  • linux批量运维工具ansible学习
    ansible学习centos7配置yum源mkdirbaklsmv*.repobak/wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repoyumclea......
  • Linux 系统目录结构
    登录系统后,在当前命令窗口下输入命令:ls/你会看到如下图所示:树状目录结构:以下是对这些目录的解释:/bin:bin是Binaries(二进制文件)的缩写,这个目录存放着最经常使用的命......
  • CentOS7 编译安装最新的Linux Kernel 6.0 rc3
    哪个男孩不想手动编译一份自己的内核呢?安装编译环境CentOS7安装必要的包yumgroupinstall"DevelopmentTools"-y&&yuminstallopenssl-devel-y&&yuminstallrpm-buil......
  • MAFIA:1.1 - OpenFlow statistics (Counters, Timestamps)(mafia-sdn/p4demos/demos/1-o
    1.1-OpenFlowstatistics(Counters,Timestamps)解决的核心问题:如何统计一个流的持续时间如何实现一个操作只在数据包第一次出现的时候执行一次,之后再也不执行:设置默......
  • Linux笔记03: Linux常用命令_3.1命令的基本格式
    3.1命令的基本格式 3.1.1命令提示符[root@localhost~]#这就是Linux系统的命令提示符。各部分含义如下:●[]:这是提示符的分隔符号,没有特殊含义。●ro......
  • Linux已成为世界最大软件开发项目
    ​​Linux​​([ˈlaɪnʌks或ˈlɪnʌks])内核开发者GregKroah-Hartmant在柏林发表演讲时称,Linux已经成为世界最大的软件开发项目。 目前最新的Linux4.5内核包含了超过210......
  • Linux 上安装 PostgreSQL
    打开PostgreSQL官网​​https://www.postgresql.org/​​,点击菜单栏上的DownloadLinux我们可以看到支持Ubuntu和RedHat等各个平台,点击具体的平台链接,即可查看安装......
  • 基于密钥认证登陆Linux服务器
    基于密钥认证登陆Linux服务器环境描述服务端Linux操作系统,服务器上生成公私钥客户端客户端上,只需导入私钥;客户端无限制、建议使用Xshell6、MobaXterm技术点摘要......