• pidstat 使用


    介绍

    pidstat 是一个用来监控报告被linux 系统管理的任务的统计的数据。

    man pidstat 查看介绍

    PIDSTAT(1)                                                                              Linux User's Manual                                                                              PIDSTAT(1)
    
    NAME
           pidstat - Report statistics for Linux tasks.
    
    SYNOPSIS
           pidstat  [ -d ] [ -h ] [ -I ] [ -l ] [ -r ] [ -s ] [ -t ] [ -U [ username ] ] [ -u ] [ -V ] [ -w ] [ -C comm ] [ -p { pid [,...] | SELF | ALL } ] [ -T { TASK | CHILD | ALL } ] [ interval [
           count ] ]
    
    DESCRIPTION
           The pidstat command is used for monitoring individual tasks currently being managed by the Linux kernel.  It writes to standard output activities for every task selected with option -p  or
           for  every task managed by the Linux kernel if option -p ALL has been used. Not selecting any tasks is equivalent to specifying -p ALL but only active tasks (tasks with non-zero statistics
           values) will appear in the report.
    
           The pidstat command can also be used for monitoring the child processes of selected tasks.  Read about option -T below.
    
           The interval parameter specifies the amount of time in seconds between each report.  A value of 0 (or no parameters at all) indicates that tasks statistics are to be reported for the  time
           since  system  startup  (boot).  The count parameter can be specified in conjunction with the interval parameter if this one is not set to zero. The value of count determines the number of
           reports generated at interval seconds apart. If the interval parameter is specified without the count parameter, the pidstat command generates reports continuously.
    
           You can select information about specific task activities using flags.  Not specifying any flags selects only CPU activity.

    解释:关于描述中的几句话的解释如下

    1、pidstat 被用来监控当前正在被内核管理的任务,它会输出信息到std ,如果命令后面的参数是-p pid 那么就输出的是指定的pid 的进程的信息;如果-p ALL或者不加任何参数那么输出的就是所有的任务的数据。

    2、pidstat 也可以被用来监控所选任务的子进程,详情请查看选项-T下面的介绍

    3、频率参数定义了报告之间的以秒为单位的时间间隔,如果为0或者不写那么就是系统启动以来这段时间的统计数据。具体可以看后面的使用例子

    使用介绍

    注意pidstat  可以查看进程的很多信息,包括cpu使用、内存、io 等等,所以要查看不同性能指标就要指定对应的参数,而不指定默认就是cpu 情况报告,如下命令

    pidstat  2  3    #   每隔2秒出一个报告数据,一共出具3次

    Average: UID PID %usr %system %guest %CPU CPU Command
    Average: 0 9 0.00 0.49 0.00 0.49 - rcu_sched
    Average: 0 848 0.98 0.00 0.00 0.98 - systemd-journal
    Average: 0 1633 59.02 0.98 0.00 60.00 - dockerd
    Average: 0 1792 0.49 0.00 0.00 0.49 - containerd
    Average: 0 2275 0.98 0.00 0.00 0.98 - rancher
    Average: 0 2875 1.95 0.98 0.00 2.93 - etcd
    Average: 0 4663 0.49 0.49 0.00 0.98 - kube-scheduler
    Average: 0 4696 2.93 1.95 0.00 4.88 - kube-proxy

    查看cpu 和上下文切换情况

    # 每隔1秒输出1组数据(需要 Ctrl+C 才结束)
    # -w参数表示输出进程切换指标,而-u参数则表示输出CPU使用指标
    $ pidstat -w -u 1
    08:06:33      UID       PID    %usr %system  %guest   %wait    %CPU   CPU  Command
    08:06:34        0     10488   30.00  100.00    0.00    0.00  100.00     0  sysbench
    08:06:34        0     26326    0.00    1.00    0.00    0.00    1.00     0  kworker/u4:2
    
    08:06:33      UID       PID   cswch/s nvcswch/s  Command
    08:06:34        0         8     11.00      0.00  rcu_sched
    08:06:34        0        16      1.00      0.00  ksoftirqd/1
    08:06:34        0       471      1.00      0.00  hv_balloon
    08:06:34        0      1230      1.00      0.00  iscsid
    08:06:34        0      4089      1.00      0.00  kworker/1:5
    08:06:34        0      4333      1.00      0.00  kworker/0:3
    08:06:34        0     10499      1.00    224.00  pidstat
    08:06:34        0     26326    236.00      0.00  kworker/u4:2
    08:06:34     1000     26784    223.00      0.00  sshd

    pidstat 默认显示的是进程的信息,如果要显示线程信息加上t参数

    # 每隔1秒输出一组数据(需要 Ctrl+C 才结束)
    # -wt 参数表示输出线程的上下文切换指标
    $ pidstat -wt 1
    08:14:05      UID      TGID       TID   cswch/s nvcswch/s  Command
    ...
    08:14:05        0     10551         -      6.00      0.00  sysbench
    08:14:05        0         -     10551      6.00      0.00  |__sysbench
    08:14:05        0         -     10552  18911.00 103740.00  |__sysbench
    08:14:05        0         -     10553  18915.00 100955.00  |__sysbench
    08:14:05        0         -     10554  18827.00 103954.00  |__sysbench
    ...

    版本问题

    旧版本的sysstat 中的pidstat 命令输出没有%wait 指标,只有在systat 11.5.5 版本以后才引进的这个指标。注意这个指标表示的是进程等待cpu 的时间百分比也就是进程处于就绪队列中的状态,而不是等待io 的状态。

  • 相关阅读:
    AppDelegate减负之常用三方封装
    AppDelegate减负之常用三方封装
    基于AFN封装的带缓存的网络请求
    iOS-创建自己的日志系统
    UIImage 图片处理:截图,缩放,设定大小,存储
    /bin/sh^M: bad interpreter:解决办法
    mac上获取手机的uuid
    iOS PureLayout使用
    iOS集成友盟推送
    完全理解Python的 '==' 和 'is'
  • 原文地址:https://www.cnblogs.com/fanggege/p/14224042.html
Copyright © 2020-2023  润新知