一、简介
top 等方式能查看到整个系统的状态,但对于单个进程的状态并不是非常的直观,而 pidstat 命令可以更方便的获取到各进程的状态。
二、源码下载及编译
1.源码交叉编译
# mkdir obj
# ./configure
--prefix=/home/lj/workspace/ztemp/tool/sysstat-master/obj // 执行程序发布目录
--host=x86_64
CFLAGS="-g -O2 -static"
CC=/opt/rockchip/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu-gcc
# make
# make install
2.选项
-u:查看每个进程的cpu相关性能指标
-w:查看每个进程上下文切换情况
-t:查看每个进程线程相关的信息,默认是进程的;常与-w结合使用(cpu的上下文切换包括进程的切换、线程的切换、中断的切换)
-d:展示每个进程磁盘 I/O 统计数据
-p:指明进程号
-r:查看内存
三、查看cpu占用情况
lj@admin:~/workspace/project$ pidstat
Linux 4.15.0-142-generic (admin) 2022年06月16日 _x86_64_ (4 CPU)
20时59分27秒 UID PID %usr %system %guest %CPU CPU Command
20时59分27秒 0 1 0.00 0.17 0.00 0.18 2 systemd
20时59分27秒 0 2 0.00 0.00 0.00 0.00 0 kthreadd
20时59分27秒 0 7 0.00 0.00 0.00 0.00 0 ksoftirqd/0
20时59分27秒 0 8 0.00 0.02 0.00 0.02 0 rcu_sched
20时59分27秒 0 15 0.00 0.01 0.00 0.01 1 migration/1
20时59分27秒 0 16 0.00 0.00 0.00 0.00 1 ksoftirqd/1
---->
%usr --- 用户空间占用CPU百分比
%system --- 内核空间占用CPU百分比
%CPU --- 总的CPU使用百分比
------------------------------------------------------------------------------------------
# 每隔1秒输出一组数据(需要 Ctrl+C 才结束)
# -wt 参数表示输出线程的上下文切换指标
liujun@admin:~$ pidstat -wt 1
Linux 4.15.0-142-generic (admin) 2022年06月16日 _x86_64_ (4 CPU)
21时14分20秒 UID PID cswch/s nvcswch/s Command
21时14分20秒 0 1 0.66 0.47 systemd
21时14分20秒 0 2 0.13 0.00 kthreadd
21时14分20秒 0 4 0.00 0.00 kworker/0:0H
21时14分20秒 0 6 0.00 0.00 mm_percpu_wq
----->
cswch/s:表示每秒自愿上下文切换(voluntary context switches)的次数
ncswch/s:表示每秒非自愿上下文切换(non voluntary context switches)的次数
四、查看内存占用情况
pidstat -r
pidstat -r 命令用于显示进程的内存使用情况。下面是 pidstat -r 命令输出结果的各列含义:
PID:进程ID;
minflt/s:每秒钟发生未在RAM中的页面访问的次数,也就是需要进行“软中断”调用并从虚拟内存系统中取回数据的次数。(软中断是指CPU在执行进程任务时出现一个中断事件。它的区别于硬件中断的机制,可以在进程的上下问中使用);
majflt/s:每秒钟发生在RAM中没有或只有部分会被交换出去的页面访问的次数,也就是“缺页错误的次数”,需要进行“硬中断”调用并从硬盘中取回数据的次数。(在虚拟内存系统中,缺页时会进行一次硬中断,将页面调入内存);
VSZ:进程占用的虚拟内存大小;
RSS:进程实际占用的物理内存大小;
%MEM:进程占用物理内存的百分比;
Command:进程名称。
其中,内存相关列的含义解释如下:
VSZ(Virtual Set Size):进程使用的虚拟内存大小,包括进程使用的所有内存(例如堆、栈、共享库、映射文件等)以及未分配的内存。 VSZ 可能比物理内存和交换空间的总和要大得多。
RSS(Resident Set Size):进程实际驻留在物理内存中的内存大小,也叫物理内存使用量。通常是系统中多个进程共享的内存以及由进程申请空间但未使用的空间除外。
%MEM:物理内存使用率,进程占用的物理内存大小占总内存的百分比,实际上是 RSS 占用内存的大小占系统总内存大小的百分比, 因为 RSS 不一定等于进程的全部内存,其余的部分可能存在于 swap(交换分区)。