pidstat 是 sysstat 工具包含的一个命令,主要用于监控 Linux Kernel 管理的进程资源占用情况,包括 CPU,IO,内存,线程等等。
The pidstat command is used for monitoring individual tasks currently being managed by the Linux kernel.
pidstat 首次运行会显示系统自开机起各项统计,之后运行将显示从上一次运行到该次运行的统计信息。
installation
apt-get install sysstat
usage
pidstat [options] [interval] [times]
常用的参数:
-u
默认参数,显示各个进程的 CPU 统计信息-r
显示各个进程的内存使用情况-d
显示各个进程的 IO 使用-w
显示各个进程的上下文切换-p PID
指定 PID
比如常见的每一秒查看 IO 统计,统计 10 次
pidstat -d 1 10
Examples
所有进程的 CPU 统计信息
直接运行 pidstat
默认显示所有进程的 CPU 使用信息,等效于 pidstat -u -p ALL
pidstat -u 1 10
pidstat
Result fields:
- UID
- PID
- %usr: 进程在用户空间占用 cpu 的百分比
- %system: 进程在内核空间占用 CPU 百分比
- %guest: 进程在虚拟机占用 CPU 百分比
- %wait: 进程等待运行的百分比
- %CPU: 进程占用 CPU 百分比
- CPU: 处理进程的 CPU 编号
- Command: 进程名
显示内存统计信息
Following command will display PID memory usage 10 times every 2 seconds:
pidstat -r 2 10
Result fields:
- UID
- PID
- Minflt/s : 每秒次缺页错误次数 (minor page faults),虚拟内存地址映射成物理内存地址产生的 page fault 次数
- Majflt/s : 每秒主缺页错误次数 (major page faults), 虚拟内存地址映射成物理内存地址时,相应 page 在 swap 中
- VSZ virtual memory usage : 该进程使用的虚拟内存 KB 单位
- RSS : 该进程使用的物理内存 KB 单位
- %MEM : 内存使用率
- Command : 该进程的命令 task name
显示 IO 统计信息
pidstat -d
Result field:
- UID
- PID
- kB_rd/s: 每秒进程从磁盘读取的数据量 KB 单位 read from disk each second KB
- kB_wr/s: 每秒进程向磁盘写的数据量 KB 单位 write to disk each second KB
- kB_ccwr/s: 每秒进程向磁盘写入,但是被取消的数据量,This may occur when the task truncates some dirty pagecache.
- iodelay: Block I/O delay, measured in clock ticks
- Command: 进程名 task name
T 选项来打印更详细信息
使用 -T [TASK|CHILD|ALL]
来报告打印更详细的信息,默认 pidstat 使用 TASK,表示监控独立的任务信息。
- TASK 报告独立的进程
- CHILD 报告进程下所有线程的情况
- ALL 输出进程及线程统计信息
Specific PID
To show CPU, memory, IO:
pidstat -u -p PID
pidstat -r -p PID
pidstat -d -p PID
比如要查看 PID 为 12002 的进程的 CPU 使用情况,并且要查看所有子线程,每隔 1 秒输出一次,输出 10 次,则可以
pidstat -T ALL -u -p 12002 1 10