【调试工具】pidstat 编译及使用

一、简介

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)        20220616_x86_64_        (4 CPU)

205927秒   UID       PID    %usr %system  %guest    %CPU   CPU  Command
2059270         1    0.00    0.17    0.00    0.18     2  systemd
2059270         2    0.00    0.00    0.00    0.00     0  kthreadd
2059270         7    0.00    0.00    0.00    0.00     0  ksoftirqd/0
2059270         8    0.00    0.02    0.00    0.02     0  rcu_sched
2059270        15    0.00    0.01    0.00    0.01     1  migration/1
2059270        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)        20220616_x86_64_        (4 CPU)

211420秒   UID       PID   cswch/s nvcswch/s  Command
2114200         1      0.66      0.47  systemd
2114200         2      0.13      0.00  kthreadd
2114200         4      0.00      0.00  kworker/0:0H
2114200         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(交换分区)。
  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值