您当前的位置: 首页 >  linux

恐龙弟旺仔

暂无认证

  • 0浏览

    0关注

    282博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Linux pidstat命令实战

恐龙弟旺仔 发布时间:2022-04-03 12:27:45 ,浏览量:0

前言:

前文中我们了解了vmstat命令,其可以监控操作系统整体的CPU、内存、IO运行情况。但是如果我们相对某一个进程进行监控的话,vmstat就难免心有余而力不足。这时就需要本文主角登场,pidstat命令。

pidstat可用于监控全部或指定进程的CPU、内存、IO等系统资源的占用情况。

下面就一起来实战下该命令吧。

1.常规使用

最常用的pidstat命令就是 pidstat 5(5秒刷新一次,用户也可自定义为其他时间段)

root@7bc18553126f:/# pidstat 5
Linux 5.10.76-linuxkit (7bc18553126f) 03/13/22 _aarch64_ (4 CPU)

02:57:51      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
02:57:56        0     42290    0.40    0.00    0.00    0.00    0.40     0  watch
02:57:56        0     52989  100.00    0.00    0.00    0.00  100.00     3  stress

此时的打印会每5秒输出一次当前所有进程的资源使用情况。

字段含义解释:

PID进程ID%usr进程在用户空间占用CPU的百分比%system进程在内核空间占用的CPU的百分比%guest进程在虚拟机占用的CPU的百分比%wait进程在等待执行所占用的CPU的百分比%CPU进程占用的CPU的百分比CPU处理进程的CPU编号Command当前进程所对应的命令 2.查看内存使用

使用pidstat -r可以查看具体的内存使用情况

root@7bc18553126f:/# pidstat -r 5
Linux 5.10.76-linuxkit (7bc18553126f) 03/13/22 _aarch64_ (4 CPU)

08:05:59      UID       PID  minflt/s  majflt/s     VSZ     RSS   %MEM  Command
08:06:04        0     54333     32.40      0.00    3020    2500   0.12  watch
08:06:04        0     68296     89.40      0.00    4564    2620   0.13  pidstat

08:06:04      UID       PID  minflt/s  majflt/s     VSZ     RSS   %MEM  Command
08:06:09        0     54333     48.40      0.00    3020    2500   0.12  watch
08:06:09        0     68296     20.40      0.00    4564    2860   0.14  pidstat

同样是5秒钟打印一次进程的内存使用情况。

具体输出字段含义如下:

PID进程IDminflt/s每秒次缺页错误次数(minor page faults),当虚拟内存地址映射为物理内存地址时,相应的page数据已经加载到page cache,只需要将该page与进程虚拟地址空间进行映射即可majflt/s每秒主缺页错误次数(major page faults),当虚拟内存映射为物理内存地址时,相应的page数据还在磁盘上,此时则会触发一次major fault,VSZ虚拟内存大小RSS常驻内存大小(非swap内存)%MEM占用内存比Command当前进程所对应的命令

有关于minflt 和 majflt相关的内容更多可以参考:

page fault的两种区别(major、minor)_程序猿Ricky的日常干货的博客-CSDN博客

Linux对内存的管理, 以及page fault的概念 - 简书

3.显示进程IO使用情况

pidstat也支持通过-d命令来查看IO使用情况

root@7bc18553126f:/# pidstat -d 5
Linux 5.10.76-linuxkit (7bc18553126f) 03/13/22 _aarch64_ (4 CPU)

08:38:02      UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
08:38:07        0     71165      0.00      0.00      0.00     297  stress

08:38:07      UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s iodelay  Command
08:38:12        0     71165      0.00      0.00      0.00     298  stress

同样是5秒钟打印一次进程的IO情况。

具体输出字段含义如下:

PID进程IDkB_rd/s每秒从磁盘读取的字节数(KB为单位)kB_wr/s每秒写入磁盘的字节数(KB为单位)kB_ccwr/s任务取消的写入磁盘的字节数(KB为单位),当任务截断脏PageCache时会发生iodelayIO延迟(以时钟周期为单位),该延迟包含了等待同步块IO完成和swap块IO完成所花费的延迟Command当前进程对应的命令 4.显示进程上下文切换情况

在之前介绍vmstat命令时,其中有一个cs(context switch)代表每秒上下文切换的次数。

但vmstat给的是总的进程的切换次数,pidstat -w 命令可以展示出每个继承的上下文切换次数。

有关于上下文切换的知识点可以参考: 深入理解CPU上下文切换 - 暗夜心慌方 - 博客园 

root@7bc18553126f:/# pidstat -w 5
Linux 5.10.76-linuxkit (7bc18553126f) 03/13/22 _aarch64_ (4 CPU)

08:59:17      UID       PID   cswch/s nvcswch/s  Command
08:59:22        0     54333      1.80      0.00  watch
08:59:22        0     72353  14601.80  14605.00  stress
08:59:22        0     73113      0.20      0.00  pidstat

同样是5秒输出一次,输出字段含义如下:

PID进程IDcswch/s每秒主动切换次数nvcswch/s每秒被动切换次数Command当前进程对应的命令

主动切换:当前进程无法获取所需资源导致的上下文切换。当IO、内存等系统资源不足时就会发生;

被动切换:当进程由于CPU时间分片已到等原因,被系统强制调度所发生的上下文切换;当有大量进程在争抢CPU时,就容易发生被动切换;

总结:

在平时的使用中主要也就是使用到上面几种方式。

需要注意的点是:上面的命令都可以查看指定进程的资源使用情况(添加-p pid即可)

关注
打赏
1655041699
查看更多评论
立即登录/注册

微信扫码登录

0.0748s