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


    原文链接:
    https://blog.csdn.net/m0_61066945/article/details/126568206

    描述

    pidstat命令用于监视当前由Linux内核管理的各个任务。
    注意:首次运行时显示自系统启动开始的各项统计信息。
    目录

    1. 语法
      1.1. 常用参数
    2. 常见用法
      2.1. 监控CPU
      2.2. 监控内存
      2.3. 监控IO
      2.4. 监控上下文切换
      2.5. 监控多个pid信息
    3. 随手shell
    4. 其他性能监控命令

    1. 语法

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

    1.1. 常用参数

    u:监控CPU
    -r:监控内存
    -d:监控I/O统计信息
    -w:监控上下文切换
    -t:显示详细信息,也可以指定pidstat必须监视的内容 {task | child | all}
    -p:指定PID {pid[,…]| self | all}
    -C:指定命令名称包含字符串comm的任务
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    2. 常见用法

    2.1. 监控CPU

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

    2.2. 监控内存

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

    2.3. 监控IO

    pidstat -d 1    # #只显示操作磁盘的进程
    
    • 1
    PID      :进程的PID
    kB_rd/s  :磁盘每秒读数据(单位:KB)
    kB_wr/s  :磁盘每秒写数据(单位:KB)
    kB_ccwr/s:已被任务取消写入磁盘的数据(单位:KB)
    Command  :进程的命令名称
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.4. 监控上下文切换

    pidstat -w 1    # #只显示正在进行上下文切换的进程
    
    • 1
    PID      :进程的PID
    cswch/s  :每秒自愿上下文切换的总数     #当任务因为需要不可用的资源而阻塞时,就会发生自愿的上下文切换
    nvcswch/s:每秒非自愿上下文切换的总数   #当任务在其时间片期间执行,然后被迫放弃处理器时,就会发生非自愿的上下文切换
    Command  :进程的命令名称
    
    • 1
    • 2
    • 3
    • 4

    2.5. 监控多个pid信息

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

    3. 随手shell

    #!/bin/bash
     
    Help(){
            echo -e "Usage: $0 [ options ] [  [  ] ]"
            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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39

    意义:
    同时监控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. 其他性能监控命令

    Linux性能监控命令_top & 实时监控主机信息

    Linux性能监控命令_sar & 自动保存30天历史信息

    Linux性能监控命令_vmstat & 同时监控cpu、内存、磁盘、分页

    Linux性能监控命令_iostat & 监控I/O状态

  • 相关阅读:
    【GEE】6、在 Google 地球引擎中构建各种遥感指数
    开源软件的利弊
    设计模式5、原型模式 Prototype
    minio文件迁移
    原生js--封装点击上传附件
    v-on的修饰符
    十二、虚拟 DOM 和 render() 函数(1)
    适用于 Windows 10 和 Windows 11 设备的笔记本电脑管理软件
    多旋翼无人机组合导航系统-多源信息融合算法(Matlab代码实现)
    后端工程师之路(8)-springboot
  • 原文地址:https://blog.csdn.net/qq_44768464/article/details/133807833