Linux性能监控命令_pidstat & 统计进程信息

Linux性能监控命令_pidstat & 统计进程信息进程资源监控 进程 I O 监控 进程 cpu 监控 进程内存监控 pidstat

大家好,欢迎来到IT知识分享网。

描述

    pidstat 用于监控正在运行的进程的详细信息,包括进程的 CPU 使用量、内存使用量、I/O 情况和上下文切换次数等。这个命令一般用于配合其他命令一起使用,比如使用 iostat 发现了磁盘瓶颈,那么就需要使用 pidstat 来找到这个进程。

注意

  1. 首次运行时显示自系统启动开始的各项统计信息。
  2. 普通用户无法监控其他用户进程,需要使用root用户监控。

        

文章目录如下

1. 语法

1.1. 常用参数

2. 实时监控

2.1. 正在使用CPU的进程

2.2. 正在使用内存的进程

2.3. 正在使用磁盘的进程

2.4. 指定监控pid

3. 自动化监控

4. 总结


        

1. 语法

pidstat [ 选项 ] [ <时间间隔> [ <监控次数> ] ]

        

1.1. 常用参数

-u:监控CPU -w:监控上下文切换 -r:监控内存 -h:以人类可读的格式显示输出的单位(例如,K、M、G) -d:监控I/O统计信息 -t:显示详细信息,也可以指定pidstat必须监视的内容 {task | child | all} -p:指定PID {pid[,…]| self | all} -C:指定命令名称包含字符串comm的任务

        

2. 实时监控

2.1. 正在使用CPU的进程

pidstat -u 1 #只显示占用CPU的进程

当使用其他命令发现空闲 cpu 已经用完了(idle 为0)

Linux性能监控命令_pidstat & 统计进程信息

这时可以通过 pidstat 来查询正在使用 cpu 的进程

pidstat -u 1

Linux性能监控命令_pidstat & 统计进程信息

PID :某个进程的PID %usr :用户空间使用的cpu% %system:内核空间使用的cpu% %guest :管理程序(hypervisor)为另一个虚拟进程提供服务而等待的虚拟CPU占比 %CPU :整体CPU的使用率 CPU :CPU的编号 #例如总cpu只有4核,那么对应每个CPU的编号为 0,1,2,3 Command:进程的命令名称

         

还能查看进程的上下文切换情况

pidstat -w 1

Linux性能监控命令_pidstat & 统计进程信息

UID :进程所有者的用户 ID(User ID)。 PID :进程的 ID 号。 cswch/s :平均每秒钟发生的上下文切换次数。 nvcswch/s:平均每秒钟发生的进程放弃 CPU 控制权的次数(进程主动放弃 CPU 控制权所引起的上下文切换) Command :进程的命令名称。

上下文切换(Context Switches)是操作系统内核在切换进程或线程之前需要执行的一些操作,例如保存进程当前的上下文(如进程状态、寄存器等),从进程 A 切换到进程 B 时就需要进行两个上下文的切换。因此,上下文切换的次数可以反映出当前系统中进程的切换频繁度,同时也可以作为查找性能问题的关键指标之一。

        

2.2. 正在使用内存的进程

pidstat -r 1 #只显示占用内存的进程

如果使用其他命令发现内存不足

Linux性能监控命令_pidstat & 统计进程信息

这时也可以使用 pidstat 查看占用内存的进程

pidstat -r 1

Linux性能监控命令_pidstat & 统计进程信息

PID :进程的PID minflt/s:每秒发生的小故障总数 #即不需要从磁盘加载内存页的故障 majflt/s:每秒发生的主要故障总数 #即需要从磁盘加载内存页的故障 VSZ :虚拟内存使用情况(以千字节为单位) RSS :物理内存使用情况(以千字节为单位) %MEM :使用总内存占比情况 Command :进程的命令名称

        

2.3. 正在使用磁盘的进程

pidstat -d 1 # 只显示操作磁盘的进程

 在使用其他命令发现磁盘达到了瓶颈

Linux性能监控命令_pidstat & 统计进程信息

我们可以通过 pidstat 找到使用磁盘的进程

pidstat -d 1

Linux性能监控命令_pidstat & 统计进程信息

PID :进程的PID kB_rd/s :磁盘每秒读数据(单位:KB) kB_wr/s :磁盘每秒写数据(单位:KB) kB_ccwr/s:已被任务取消写入磁盘的数据(单位:KB) Command :进程的命令名称

        

2.4. 指定监控pid

# 同时监控CPU、内存、磁盘读写。指定某个PID使用-p,指定多个PID使用逗号分隔 pidstat -urd -p 6548,6551,6555 1 3 #1表示每隔1秒输出一次,3表示共输出3次

Linux性能监控命令_pidstat & 统计进程信息

        

3. 自动化监控

#!/bin/bash Help(){ echo -e "Usage: $0 [ options ] [ <interval> [ <count> ] ]" echo -e "\t -a: Monitoring all processes" echo -e "\t -p{pid}: Specify the pid" echo -e "\t -k: Kill pidstat" } Main(){ local log="`pwd`/logs" [ ! -d ${log} ] && mkdir -p ${log} [ "$1" == "p" ] && options="-p $2 $3 $4" || options="$1 $2" # 输出CPU信息到logs/cpu.log pidstat -u ${options} > ${log}/cpu.log & # 输出内存信息到memory.log pidstat -r ${options} > ${log}/memory.log & # 输出磁盘读写到disk.log pidstat -d ${options} > ${log}/disk.log & # 上下文切换到context.log pidstat -w ${options} > ${log}/context.log & } case $1 in -a) Main $2 $3 ;; -p) Main p "$2" $3 $4 ;; -k) ps -ef |grep "pidstat" |grep `whoami` |grep -v grep |awk '{print $2}' |xargs kill -9 ;; *) Help esac
意义: 同时监控CPU、内存、磁盘、上下文切换信息,输出到不同文件中 作用: 当某个时间段性能出现损耗,可以通过此脚本查看进程的使用情况 使用: sh xxx.sh -a 1 86400          # xxx.sh表示脚本名,每1秒输出一次,共监控一天 sh xxx.sh -p 123,321 1 86400  # xxx.sh表示脚本名,-p指定单个或多个pid(多个使用逗号分隔),只监控指定的pid。每1秒输出一次,共监控一天 sh xxx.sh -k                  # 停止pidstat命令

        

4. 总结

    pidstat 无法直接监控整体的硬件资源,比如 cpu 的整体利用率、内存的使用情况等,该命令的主要作用是监控进程,比如查看正在使用cpu、正在使用内存、正在使用I/O的进程,并且可以详细的查看这些进程的使用情况。所以 pidstat 的作用主要是协助其他命令来分析硬件瓶颈,导致瓶颈的进程是哪些。

  • 查看cpu信息的命令:top、sar、iostat、nmon
  • 查看内存信息的命令:top、sar、nmon
  • 查看磁盘信息的命令:iostat、sar、nmon
  • 查看网络信息的命令:sar、nmon
  • 查看历史记录的命令:sar

 

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/114722.html

(0)
上一篇 2025-12-07 09:15
下一篇 2025-12-07 09:26

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信