Linux 进程监控
Contents
进程监控
pidstat [option] interval [count]
监控进程的内存使用情况
$ pidstat -r -p 26092 1 5
Linux 2.6.32-33-server (pro-srv4) Wednesday, November 25, 2015 _x86_64_ (8 CPU)
11:16:38 HKT PID minflt/s majflt/s VSZ RSS %MEM Command
11:16:39 HKT 26092 0.00 0.00 2983032 607484 3.69 java
11:16:40 HKT 26092 0.00 0.00 2983032 607484 3.69 java
11:16:41 HKT 26092 0.00 0.00 2983032 607484 3.69 java
11:16:42 HKT 26092 0.00 0.00 2983032 607484 3.69 java
11:16:43 HKT 26092 0.00 0.00 2983032 607484 3.69 java
Average: 26092 0.00 0.00 2983032 607484 3.69 java
列说明:
minflt/s
: 每秒次缺页错误次数(minor page faults),次缺页错误次数意即虚拟内存地址映射成物理内存地址产生的page fault次数
majflt/s
: 每秒主缺页错误次数(major page faults),当虚拟内存地址映射成物理内存地址时,相应的page在swap中,这样的page fault为major page fault,一般在内存使用紧张时产生
VSZ
: 虚拟内存:整个进程使用的虚拟内存(KB)
RSS
: 常驻内存大小,占用的非交换分区的物理内存(KB)
%MEM
: 进程当前占用可用内存的百分比
Command
: 进程对应的命令
监控进程的IO使用情况
➜ ~ pidstat -d -p 2942 1 5
Linux 3.16.0-50-generic (yang) 2015年11月25日 _x86_64_ (4 CPU)
11时53分57秒 UID PID kB_rd/s kB_wr/s kB_ccwr/s Command
11时53分58秒 1000 2942 0.00 0.00 0.00 java
11时53分59秒 1000 2942 0.00 0.00 0.00 java
11时54分00秒 1000 2942 0.00 0.00 0.00 java
11时54分01秒 1000 2942 0.00 0.00 0.00 java
11时54分02秒 1000 2942 0.00 0.00 0.00 java
Average: 1000 2942 0.00 0.00 0.00 java
➜ ~
列说明:
kb_rd/s
:每秒读多少KB
kb_rw/s
:每秒写多少KB
kb_ccwr/s
:每秒多少KB正准备写到磁盘时被进程取消
监控进程的CPU使用情况
➜ ~ pidstat -u -p 2942 1 5
Linux 3.16.0-50-generic (yang) 2015年11月25日 _x86_64_ (4 CPU)
11时59分19秒 UID PID %usr %system %guest %CPU CPU Command
11时59分20秒 1000 2942 1.00 1.00 0.00 2.00 3 java
11时59分21秒 1000 2942 1.00 0.00 0.00 1.00 3 java
11时59分22秒 1000 2942 1.00 1.00 0.00 2.00 3 java
11时59分23秒 1000 2942 1.00 0.00 0.00 1.00 3 java
11时59分24秒 1000 2942 2.00 0.00 0.00 2.00 3 java
Average: 1000 2942 1.20 0.40 0.00 1.60 - java
列说明:
%usr
:用户态CPU占用总CPU使用百分比
%system
:内核态CPU占总CPU使用百分比
%guest
: 进程运行在虚拟CPU上占用的百分比
cpu
: 进程运行在哪个CPU核上.
多处理器情况
pidstat -I 后面接的参数和上面的一样.
说明:这时,CPU的占用率是/CPU核心数后的数据的,没有 -I
的话,是看成单个CPU后的总占用率.
进程堆栈的情况
➜ ~ pidstat -s -p 2942 1 5
Linux 3.16.0-50-generic (yang) 2015年11月25日 _x86_64_ (4 CPU)
14时36分01秒 UID PID StkSize StkRef Command
14时36分02秒 1000 2942 140 44 java
14时36分03秒 1000 2942 140 44 java
14时36分04秒 1000 2942 140 44 java
14时36分05秒 1000 2942 140 44 java
14时36分06秒 1000 2942 140 44 java
Average: 1000 2942 140 44 java
➜ ~
列说明:
StkSize
:为进程预留的栈大小(KB)
StkRef
:进程使用的栈大小(KB)
进程上下文切换情况
➜ ~ pidstat -w -p 2942 1 5
Linux 3.16.0-50-generic (yang) 2015年11月25日 _x86_64_ (4 CPU)
14时38分55秒 UID PID cswch/s nvcswch/s Command
14时38分56秒 1000 2942 0.00 0.00 java
14时38分57秒 1000 2942 0.00 0.00 java
14时38分58秒 1000 2942 0.00 0.00 java
14时38分59秒 1000 2942 0.00 0.00 java
14时39分00秒 1000 2942 0.00 0.00 java
Average: 1000 2942 0.00 0.00 java
➜ ~
列说明:
cswch/s
:进程每秒自愿上下文切换次数,这当一个进程因为一个资源不可用而导致阻塞时就会出现这种自愿上下文切换.
nvcswch/s
: 进程非自愿上下文切换次数。当一个进程在CPU时间片内执行期间被强迫放弃CPU时就会出现这种非自愿上下文切换.
线程的级别
pidstat -t 其他参数和以上相同.