zoukankan      html  css  js  c++  java
  • centos8平台使用pidstat监控cpu/内存/io

    一,安装pidstat:

    1,安装

    [root@localhost yum.repos.d]# yum install sysstat

    2,查看版本:

    [root@localhost ~]# pidstat -V
    sysstat 版本 11.7.3
    (C) Sebastien Godard (sysstat <at> orange.fr)

    说明:一般会默认安装,如未安装则可以用上面的yum命令进行安装

    3,如果已安装,可以查看所属的rpm包:

    [root@yjweb ~]# whereis pidstat
    pidstat: /usr/bin/pidstat /usr/share/man/man1/pidstat.1.gz
    [root@yjweb ~]# rpm -qf /usr/bin/pidstat
    sysstat-11.7.3-2.el8.x86_64

    说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

             对应的源码可以访问这里获取: https://github.com/liuhongdi/

     说明:作者:刘宏缔 邮箱: 371125307@qq.com

    二,最常用的六个参数

     -u:监控cpu

     -r:监控内存

     -d:监控硬盘

    -w:  显示每个进程的上下文切换情况

    -t:   显示选择任务的线程的统计信息

    -p:  指定进程id

    三,常用的用法举例:

    1,监控磁盘 

    [root@SearchCacheServer ~]# pidstat -d

    2,监控cpu

    [root@SearchCacheServer ~]# pidstat -u 

    3,监控内存

    [root@SearchCacheServer ~]# pidstat -r

    4,上下文切换

    [root@SearchCacheServer ~]# pidstat -w

    四,io使用情况的输出信息意义:

    [root@SearchCacheServer ~]# pidstat -d
    • PID:进程id

    • kB_rd/s:每秒从磁盘读取的KB

    • kB_wr/s:每秒写入磁盘KB

    • kB_ccwr/s:任务取消的写入磁盘的KB。当任务截断脏的pagecache的时候会发生。

    • 任务取消的写入磁盘的kb数。在任务压缩脏页缓存时可能发生这种情况。在这种情况下,其他任务发起的IO不会处理。

    • iodelay: 表示 I/O 的延迟(单位是时钟周期),包括等待同步块 I/O 和换入块 I/O 结束的时间

      任务的I/O阻塞延迟,以时钟周期为单位。包括同步块I/O和换入块I/O

    • COMMAND:task的命令名

    五,查看上下文切换的输出信息意义:

    [root@yjweb ~]$ pidstat -wt

    上下文切换的输出信息:

    cswch/s:表示每秒自愿上下文切换(voluntary context switches)的次数

    ncswch/s:表示每秒非自愿上下文切换(non voluntary context switches)的次数

    这两个概念一定要牢牢记住,因为它们意味着不同的性能问题:

    所谓自愿上下文切换,是指进程无法获取所需资源,导致的上下文切换。

    比如说, I/O、内存等系统资源不足时,就会发生自愿上下文切换。

    而非自愿上下文切换,则是指进程由于时间片已到等原因,被系统强制调度,进而发生的上下文切换。

    比如说,大量进程都在争抢 CPU 时,就容易发生非自愿上下文切换。

    观察上下文切换的意义:

    自愿上下文切换变多了,说明进程都在等待资源,有可能发生了 I/O 等其他问题;
    
    非自愿上下文切换变多了,说明进程都在被强制调度,也就是都在争抢 CPU,说明 CPU 的确成了瓶颈;

    六,显示线程的统计信息 (-t)

    [root@yjweb ~]# pidstat -t -p 17700

    输出信息:

    • TGID:主线程的表示

    • TID:线程id

    • %usr:进程在用户空间占用cpu的百分比

    • %system:进程在内核空间占用cpu的百分比

    • %guest:进程在虚拟机占用cpu的百分比

    • %CPU:进程占用cpu的百分比

    • %wait: 进程或者线程等待的cpu使用率;此值过高,表示出现进程或线程争抢CPU的情况

    • CPU:处理进程的cpu编号

    • Command:当前进程对应的命令

    七,查看cpu的使用情况

    [root@yjweb ~]# pidstat -u -p 17700

    说明:输出内容与 -t相同,但只显示进程的情况

    八,查看指定进程的内存使用情况:

    [root@yjweb ~]# pidstat -r -p 17700

    输出内容:

    • PID:进程标识符

    • Minflt/s:任务每秒发生的次要错误,不需要从磁盘中加载页

      任务造成的小错误的总数。小错误指的是还不需要从磁盘中加载一个内存页。

    • Majflt/s:任务每秒发生的主要错误,需要从磁盘中加载页

      任务造成的大错误的总数。大错误指的是需要从磁盘中加载一个内存页。

    • VSZ:

      整个任务使用的虚拟内存大小,以kb为单位

    • RSS:常驻集合大小,非交换区物理内存,使用KB

    • 任务使用的没有被交换的物理内存,以kb为单位

      %MEM:任务占用的可用物理内存的比例

    • Command:task命令名

    九,pidstat如何对输出数据做排序?

    #sort: 排序

    #-k :  指定排序用哪一列,下面的例子中是第8列:%CPU

    #-r : 倒序

    [root@blog databak]# pidstat -u | sort -k 8 -r
    02:45:17 PM UID PID %usr %system %guest %wait %CPU CPU Command
    02:45:17 PM 0 30330 0.12 0.07 0.00 0.00 0.19 2 AliYunDun
    02:45:17 PM 1002 17700 0.05 0.02 0.00 0.00 0.06 0 mysqld
    02:45:17 PM 0 23413 0.01 0.01 0.00 0.00 0.03 3 aliyun-service
    02:45:17 PM 0 8240 0.00 0.01 0.00 0.00 0.01 1 redis-server
    02:45:17 PM 0 30315 0.01 0.00 0.00 0.00 0.01 1 AliYunDunUpdate
    02:45:17 PM 0 404 0.00 0.00 0.00 0.00 0.00 3 xfsaild/vda1

    十,查看本地centos的版本

    [root@yjweb ~]# cat /etc/redhat-release
    CentOS Linux release 8.0.1905 (Core) 
  • 相关阅读:
    pythonldap 简单试用
    shell 将文件名读入数组
    pytest命令行传入自定义的参数到测试文件中
    Python实现在不同Linux主机之间拷贝文件
    使用minio搭建私有化对象存储服务
    CPU/GPU/NPU
    pytest 内置和自定义marker
    安装SQLite3引发的库问题
    C标准库——程序员等级
    这样还弄不死指针?
  • 原文地址:https://www.cnblogs.com/architectforest/p/12573756.html
Copyright © 2011-2022 走看看