zoukankan      html  css  js  c++  java
  • pidstat 命令(Linux 进程使用资源情况采样)

    pidstat 作用

    pidstat 获取服务器指定进程的使用资源信息(包括 CPU、设备IO、内存、线程、任务切换等)。

    执行一波

    [root@wille ~]# pidstat
    Linux 2.6.32-642.4.2.el6.x86_64 (wille)     06/06/2018  _x86_64_    (4 CPU)
    
    09:01:45 AM       PID    %usr %system  %guest    %CPU   CPU  Command
    09:01:45 AM         1    0.00    0.00    0.00    0.00     1  init
    09:01:45 AM      2033    0.00    0.00    0.00    0.00     0  sshd
    09:01:45 AM      2044    0.00    0.00    0.00    0.00     0  ntpd
    09:01:45 AM      2123    0.00    0.00    0.00    0.00     0  master
    09:01:45 AM      2132    0.00    0.00    0.00    0.00     2  qmgr
    09:01:45 AM      2137    0.00    0.00    0.00    0.00     0  crond
    09:01:45 AM     15667    0.01    0.01    0.00    0.02     2  java
    09:01:45 AM     19061    0.00    0.00    0.00    0.00     0  sshd
    ...
    

    结果说明:

    • 第一行显示服务器内核信息、主机名、日期和 CPU 个数;
    • PID - 被监控的任务的进程号
    • Command - 这个任务的命令名称。

    CPU 统计数据(-u)

    • %usr - 当在用户层执行(应用程序)时这个任务的cpu使用率,和 nice 优先级无关。注意这个字段计算的cpu时间不包括在虚拟处理器中花去的时间。
    • %system - 这个任务在系统层使用时的cpu使用率。
    • %guest - 任务花费在虚拟机上的cpu使用率(运行在虚拟处理器)。
    • %CPU - 任务总的cpu使用率。在SMP环境(多处理器)中,如果在命令行中输入-I参数的话,cpu使用率会除以你的cpu数量。
    • CPU - 正在运行这个任务的处理器编号

    IO 统计数据(-d)

    • kB_rd/s - 任务从硬盘上的读取速度(kb)
    • kB_wr/s - 任务向硬盘中的写入速度(kb)
    • kB_ccwr/s - 任务写入磁盘被取消的速率(kb)

    页面失败和内存使用(-r)

    • minflt/s - 从内存中加载数据时每秒出现的小的错误的数目,这些不要求从磁盘载入内存页面。
    • majflt/s - 从内存中加载数据时每秒出现的较大错误的数目,这些要求从磁盘载入内存页面。
    • VSZ - 虚拟容量:整个进程的虚拟内存使用(kb)
    • RSS - 长期内存使用:任务的不可交换物理内存的使用量(kb)

    上下文切换情况(-w)

    • Cswch/s:每秒主动任务上下文切换数量
    • Nvcswch/s:每秒被动任务上下文切换数量

    命令详解

    [root@wille ~]# pidstat --help
    Usage: pidstat [ options ] [ <interval> [ <count> ] ]
    Options are:
    [ -C <command> ] [ -d ] [ -h ] [ -I ] [ -l ] [ -r ] [ -t ] [ -u ] [ -V ] [ -w ]
    [ -p { <pid> [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ]
    
    > [options]
    > -C <command> 查看对应command进程的状态
    > -d 查看设备IO(磁盘IO状态)
    > -h 状态信息加入时间戳,如:1528246454
    > -I 状态信息加入时间, 如: 08:53:55 AM   
    > -l 显示进程详细命令,多个指标在同一行
    > -r 查看能够得到内存使用情况的数据
    > -u 查看cpu使用情况(默认状态)
    > -V 查看工具版本
    > -w 显示每个进程的上下文切换情况
    > -p 指定进程号 (ALL:所有进程,SELF: 当前进程)
    > -T { TASK | CHILD | ALL }
      这个选项指定了pidstat监控的。TASK表示报告独立的task,CHILD关键字表示报告进程下所有线程统计信息。ALL表示报告独立的task和task下面的所有线程。
    注意:task和子线程的全局的统计信息和pidstat选项无关。这些统计信息不会对应到当前的统计间隔,这些统计信息只有在子线程kill或者完成的时候才会被收集。
    
    > [ <interval> [ <count> ]
    > interval 显示间隔,单位s
    > count 显示次数,默认一直显示。

    转载自:https://www.jianshu.com/p/348b6a81810d

    使用例子

    查看指定进程 CPU,IO,内存情况

    pidstat -w 5 :关注nvcswch/s,如果数量较大,则表示进程被强制切换,亦或抢不到CPU资源

     pidstat -w -U -l :查看用户、进程和进程命令,重点关注进程名和nvcswch/s

    pidstat -wt 1:1秒输出一次




  • 相关阅读:
    icmp隧道手工操作
    Volatility2.4以上版本及fmem使用指南
    服务器解析漏洞总结
    Docker搭建独立服务器
    shell--(二)变量、字符串、数组、注释
    shell--(一)运行示例
    mysql 批量更新,没有就插入
    go 系统监控 cpu、内存等指标
    监控
    maven安装配置 每次都百度,麻烦
  • 原文地址:https://www.cnblogs.com/wx170119/p/11851611.html
Copyright © 2011-2022 走看看