CentOS dstat 命令详解(二)参数详解

2023-11-07

CPU相关参数

-l, --load
       展示1分钟、5分钟和15分钟内的平均负载

这里写图片描述

-c, --cpu
       展示cpu状态,usr用户占比,sys系统占比,idl空闲占比,
       wai等待次数,这四个加和是100,
       hiq硬中断次数,siq软中断次数

这里写图片描述

-C 必须和-c配合使用:dstat -cC 0,3,total
       分别展示第0颗和第3颗以及总体cpu状态

这里写图片描述

--snooze
       展示每秒的CPU时钟频率,
       脚本位置/usr/share/dstat/dstat_snooze.py

这里写图片描述

进程相关参数

-p, --proc
       展示当前时刻的进程状态:可运行态(就绪态),
       无法中断的睡眠态(等待态),新进程,
       文档原文为:runnable, uninterruptible, new。
       就绪态进程多代表负载较高,配合-l参数确认,
       比如run为80,即当前有80个进程等待CPU处理,
       等待态进程多代表当前IO可能有问题,
       等待态进程是内存中等待非CPU资源的进程,
       一般是等待IO,可以根据-c的wai列确认,
       进一步根据-gin列确认是否是内存瓶颈后的恢复期,
       配合-s参数查看换页使用情况,-d查看当前bio情况,
       如果-d的bio的read和-gin差不多,
       表名当前IO主要是换页到内存加载造成的,
       即内存不足后的恢复期,
       如果-g-s表名换页未使用,但是-d居高,
       则说明当前有大量进程等待磁盘IO,
       使用--top-bio-adv确定bio最高的进程,
       如果-d也不高,但是-n较高,说明进程等待网络IO
       使用--top-io-adv确定IO最高的进程。

这里写图片描述

--proc-count
       展示进程数量,侧面反映系统负载

这里写图片描述

-y, --sys
       展示系统中断次数int和上限文切换次数csw,
       上下文切换:CPU运行任务1,切换运行就绪态任务2,
       任务1可能变成就绪态(CPU时间片耗光),
       也可能变成等待态(等待IO等非CPU资源),
       CPU的处理时间片教短,中断和上下文切换次数数字会很大,
       也能从侧面反映负载,如果中断和上下文切换暴涨,
       表明负载过大,或者程序设计不合理,或者kernel级别的BUG。

这里写图片描述

-i, --int
       展示中断状态,如下图,设备号为32、33和35的设备产生了中断,
       查看/proc/interrupts确定设备号对应的设备信息。

这里写图片描述

-I 必须和-i配合使用:dstat -i -I 32,35
       指定设备号展示中断状态

这里写图片描述

--ipc
       展示IPC(进程间通信)状态, 
       包括msg消息队列 ,sem线程队列,shm共享内存使用

这里写图片描述

--dbus number of dbus connections (needs python-dbus)
       展示dbus连接数

这里写图片描述

进程最耗资源统计

以下脚本都存在于目录/usr/share/dstat中

--top-cpu
       展示最耗CPU的进程名和CPU占比

这里写图片描述

--top-cpu-adv
       展示最耗CPU的进程名、PID和CPU占比以及读写信息,
       这个读写信息是一个差值,推测是内存的读写。

这里写图片描述

--top-cputime
       展示耗费CPU时间最多的进程名和耗费时间(ms)

这里写图片描述

--top-cputime-avg
       展示平均最耗CPU时间片的进程名和时间耗费(ms)

这里写图片描述

--top-latency
       显示延迟最高的进程名和延迟时间(ms)

这里写图片描述

--top-latency-avg
       显示平均延迟最高的进程名和延迟时间(ms)

这里写图片描述

--top-bio
       展示当前最耗block I/O的进程名和读写的容量

这里写图片描述

--top-bio-adv
       展示当前最耗block I/O的进程名、PID和读写容量以及CPU占比
       即最高磁盘IO的进程。

这里写图片描述

--top-io
       展示最耗IO的进程名和IO读写信息,
       被统计的IO信息包括blockIO和内存还有网络等全部,
       因此如果要判定最耗磁盘读写的进程,应该使用--top-bio,
       某一时刻,最耗IO和最耗blockIO的进程不一定是同一个。

这里写图片描述

--top-io-adv
       展示最耗IO的进程名、PID和读写信息以及CPU使用占比

这里写图片描述

--top-mem
       展示最耗内存的进程名和内存消耗

这里写图片描述

--top-oom
       展示最先OOM杀死的进程,OOM是内存回收机制

这里写图片描述

--top-int
       show most frequent interrupt
       命令报错,暂未研究。
--top-childwait
       展示等待子进程相应最多的进程,
       即等待子进程最多的父进程。
       show process waiting for child the most

内存相关参数

-m, --mem
       展示内存状态,包括used, buffers, cache, free

这里写图片描述

--vm       (hard pagefaults, soft pagefaults, allocated, free)
       展示虚拟内存状态,包括:majpf(hard pagefaults),
       minpf(soft pagefaults),alloc和free,具体意义未知。

这里写图片描述

换页空间相关参数

-g, --page
       展示内存到换页空间(swap)的使用情况,
       从内存到换页是out,从换页到内存是in,
       只有频繁的inout才表明内存不足。

这里写图片描述

-s, --swap
       展示换页空间使用状态,换页空间有空间使用不代表内存不足,
       通过-g参数查看是否有频繁的换入换出来判断内存是否不足。

这里写图片描述

-S 必须和-s配合使用:dstat -sS swap1,total
       当存在多个换页空间时,指定展示某个swap和总体使用情况

网络相关参数

-n, --net
       展示总体网络收发状态,折算后附带单位友好展示

这里写图片描述

-N 必须和-n配合使用:dstat -n -N eth0,total
       当存在多网卡时,可以分别指定展示各个网卡的收发状态

这里写图片描述

--net-packets
       展示收发的包数量

这里写图片描述

--socket
       展示套接字状态,包括tot总数量,tcp套接字数量,udp套接字数量,
       raw原始套接字数量,frg(ip-fragments IP碎片)套接字数量。

这里写图片描述

--raw
       展示原始套接字(raw sockets接收本机网卡上的数据帧或者数据包的套接字)状态。

这里写图片描述

--tcp  (listen, established, syn, time_wait, close)
       展示tcp网络连接状态,lis监听的数量,act(established)活动的确立的数量,
       synTCP/IP的握手数量,tim(time_wait)发起关闭后的等待关闭态数量,
       clo关闭态数量,即命令netstat -tpln对应记录的搂取合并。

这里写图片描述

--udp
       展示udp网络连接状态,包括lis监听数量和act活动数量。

这里写图片描述

--unix (datagram, stream, listen, active)
       展示数据报(实现UDP)和虚电路(实现TCP/IP)数量,包括:
       dgm数据报数量,str虚电路数量,lis虚电路监听数量,act虚电路活动数量

这里写图片描述

硬盘相关参数

-d, --disk
       展示磁盘设备读写总计,折算后附带单位友好展示

这里写图片描述

-D 必须和-d配合使用:dstat -dD sda,sda2,total
       分别展示设备sda和sda2以及总体的读写状态

这里写图片描述

-r, --io
       展示I/O请求状态,包括读请求次数和写请求次数

这里写图片描述

--aio
       展示异步io状态速度

这里写图片描述

--disk-tps
       展示每个磁盘每秒事物读写数量

这里写图片描述

--disk-util
       展示每个磁盘使用百分比

这里写图片描述

文件系统参数

--freespace
       展示每个文件系统的使用情况

这里写图片描述

--fs
       展示文件系统状态,包括打开的文件数量和正在使用的inode数量

这里写图片描述

--lock
       展示文件锁状态(posix, flock, read, write):
       pos锁数量,lck锁数量,rea读锁数量,wri写锁数量

这里写图片描述

MYSQL相关参数

# mysql相关参数使用配置:
yum -y install MySQL-python
export DSTAT_MYSQL_HOST=127.0.0.1
export DSTAT_MYSQL_USER=root
export DSTAT_MYSQL_PWD='ecpss@123'
mkdir /var/lib/mysql
ln -s /usr/local/mysql/mysql.sock /var/lib/mysql/mysql.sock
# 如果功能报错,请修改/usr/share/dstat目录内对应脚本
# 如果参数--mysql5-cmds报错,则修改dstat_mysql5_cmds.py
--innodb-buffer
       show innodb buffer stats
--innodb-io
       show innodb I/O stats
--innodb-ops
       show innodb operations counters
# 以上三个参数信息都由"show engine innodb status\G\n"获得,
# 因涉及os.popen3兼容问题,暂不研究
--mysql5-cmds
       展示mysql库所有的dml操作次数,包括:
       sel查询次数,ins插入次数,upd更新次数,del删除次数,
       加大dstat_mysql5_cmds.py的self.width参数,以免数据展示不全,
       该参数是展示数据的最大长度,数据由以下mysql库SQL提供:
       show global status like 'Com_select';
       show global status like 'Com_insert';
       show global status like 'Com_update';
       show global status like 'Com_delete';
       是mysql库的内存状态,重启后数据清零。

这里写图片描述

--mysql5-conn
       展示mysql库的已经打开的连接数数量和占比,
       数据由以下mysql库SQL提供:
       show global variables like 'max_connections';
       show global status like 'Threads_connected';
       ThCo当前打开的连接数数量,%Con数量占总连接数的百分比。

这里写图片描述

--mysql5-io
       展示mysql库与所有客户端的交互字节数:
       recv(Bytes_received)从所有客户端接收到的字节数,
       sent(Bytes_sent)发送给所有客户端的字节数,
       数据由以下mysql库SQL提供:
       show global status like 'Bytes_%';

这里写图片描述

--mysql5-keys
       展示mysql库的键缓存信息:
       used(Key_blocks_used)键缓存内使用的块数量,
              该值为高水位线标记,说明已经同时最多使用了多少块。
       read(Key_reads)从硬盘读取键的数据块的次数,
              如果Key_reads较大,则Key_buffer_size值可能太小,
              可以用Key_reads/Key_read_requests计算缓存损失率。
       writ(Key_writes)向硬盘写入将键的数据块的物理写操作的次数。
       rreq(Key_read_requests)从缓存读键的数据块的请求数。
       wreq(Key_write_requests)将键的数据块写入缓存的请求数。
       数据由以下mysql库SQL提供:
       show global status like 'Key_%';

这里写图片描述

--mysql-io
       和参数--mysql5-io功能相似,但只展示当前会话的IO信息,
       数据由以下mysql库SQL提供:
       show status like 'Bytes_%';
--mysql-keys
       和参数--mysql5-keys功能相似,但只展示当前会话的keys信息,
       数据由以下mysql库SQL提供:
       show status like 'Key_%';

dstat数据展示相关参数

-t, --time
       展示时间和日期,可以使用DSTAT_TIMEFMT参数改变格式
       export DSTAT_TIMEFMT='%Y-%d-%m %H:%M:%S'

这里写图片描述

-T, --epoch
       展示当前时间到1970-01-01 00:00:00 UTC间隔的秒数,即date +%s功能

这里写图片描述

--noheaders
       监控项的名称和参数信息(头两行信息)只输出一次,
       数据满屏后不再重复输出。
--output outputfile.csv
       将监控信息以csv格式写入文件
--float
       使用小数显示数据,与参数--integer互斥
--integer
       使用整数显示数据,与参数--float互斥
--bw, --blackonwhite
       改变数据输出的颜色,白色背景
--nocolor
       关闭彩色显示
--noupdate
       当数据刷新间隔大于1秒时,当前数据行会不断刷新,
       使用该参数关闭刷新功能。
--profile
       记录dstat命令调用的组件和时间资源消耗,生成日志文件,
       例:dstat --profile 1 5 
--list
       列出内部和外部插件名称。

这里写图片描述

# 文本测试参数
# 修改dstat_test.py和dstat_helloworld.py脚本
# 更换测试文本
--test show test plugin output
--helloworld
       Hello world example dstat plugin

这里写图片描述

Linux系统服务相关参数

# mail服务相关
--postfix
       show postfix queue sizes (needs postfix)
--sendmail
       show sendmail queue size (needs sendmail) 
--qmail
       show qmail queue sizes (needs qmail)
# portmap服务相关
--rpc  show RPC client calls stats
--rpcd show RPC server calls stats
# squid服务相关
--squid
       show squid usage statistics
# nfs服务相关
--nfs3 show NFS v3 client operations
--nfs3-ops
       show extended NFS v3 client operations
--nfsd3
       show NFS v3 server operations
--nfsd3-ops
       show extended NFS v3 server operations
# gpfs服务相关
--gpfs GPFS read/write I/O (needs mmpmon)
--gpfs-ops
       GPFS filesystem operations (needs mmpmon)
# ntp服务相关
--ntp  show NTP time from an NTP server
# 分布式文件系统lustre相关
--lustre
       展示lustre文件系统IO吞吐,
       lustre文件系统是一种平行分布式文件系统。
# memcache相关
--memcache-hits
       展示memcache的命中和失误

dstat自我耗费相关参数

--dstat
       展示dstat命令的cpu时间消耗cput和延迟late
--dstat-cpu
       展示dstat命令的详细cpu使用情况
--dstat-ctxt
       展示dstat命令的上下文切换
--dstat-mem
       展示dstat命令的详细内存使用

硬件相关参数

# 以下数据需要ACPI模块支持:
lsmod | grep "acpi_cpufreq"
yum install -y cpufreq-utils
modprobe acpi_cpufreq
find /sys/ -name scaling_cur_freq
# 该模块支持x86架构,不支持xeon架构,
# 编译内核,加入P4-clockmod模块支持xeon。
--battery
       展示电池使用百分比,需要ACPI支持。
--battery-remain
       展示电池剩余使用时间,需要ACPI支持。
--cpufreq
       展示各个CPU频率百分比,需要ACPI支持。
--fan
       展示CPU风扇速度,需要ACPI支持。
--power
       展示当前功率消耗,需要ACPI支持。
--thermal
       展示硬件温度,需要ACPI支持。
# wifi监控和utmp监控,未找到对应模块
--wifi wireless link quality and signal to noise ratio
--utmp show number of utmp connections (needs python-utmp)

虚拟化架构参数

# 虚拟机ESX架构相关
--vm-memctl
       show ballooning status inside VMware guests
--vmk-hba
       show VMware ESX kernel vmhba stats
--vmk-int
       show VMware ESX kernel interrupt stats
--vmk-nic
       show VMware ESX kernel port stats
# 虚拟机OpenVZ架构相关
--vz-cpu
       show CPU usage per OpenVZ guest
--vz-io
       show I/O usage per OpenVZ guest
--vz-ubc
       show OpenVZ user beancounters

其他非重要参数

-a, --all
       展示5个默认参数-cdngy信息

这里写图片描述

-f, --full
       展示-C, -D, -I, -N, -S,需要和-cdins参数连用
-v, --vmstat
       等同于参数 -pmgdsc -D total

这里写图片描述

--plugin-name
       展示外部插件状态,外部插件是指用户自建的检测项目。
       根据man手册PLUGINS部分显示,
       应以支持的PLUGINS设备名替换--plugin-name,
       如:dstat --dstat-cpu
       这些外部插件实际上就是python脚本,
       可以在/usr/share/dstat找到对应脚本,
       也可以自己编写python脚本放入对应位置。

这里写图片描述

[TOC]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CentOS dstat 命令详解(二)参数详解 的相关文章

  • 多处理:仅使用物理核心?

    我有一个函数foo它消耗大量内存 我想并行运行多个实例 假设我有一个有 4 个物理核心的 CPU 每个核心有两个逻辑核心 我的系统有足够的内存来容纳 4 个实例foo并行但不是 8 个 此外 由于这 8 个核心中的 4 个是逻辑核心 我也不
  • 查找哪些页面不再与写入时复制共享

    假设我在 Linux 中有一个进程 我从中fork 另一个相同的过程 后forking 因为原始进程将开始写入内存 Linux写时复制机制将为进程提供与分叉进程使用的不同的唯一物理内存页 在执行的某个时刻 我如何知道原始进程的哪些页面已被写
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • 在脚本内使用不带密码的 sudo

    由于某种原因 我需要作为用户在没有 sudo 的情况下运行脚本 script sh 该脚本需要 root 权限才能工作 我认为将 sudo 放入 script sh 中是唯一的解决方案 让我们举个例子 script sh bin sh su
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 按进程名称过滤并记录 CPU 使用情况

    Linux 下有选项吗顶部命令 https www man7 org linux man pages man1 top 1 html我可以在哪里按名称过滤进程并将每秒该进程的 CPU 使用情况写入日志文件 top pgrep 过滤输出top
  • 如何构建任务“gems:install”

    我正在将 Rails 应用程序部署到 Linux 服务器 并且缺少一些 rake 任务 包括 rake gems install 和 rake db 我正在运行来自 GEM 的 Rails 2 3 4 为什么是这样 我该如何解决 我可以以某
  • Windows CE 与嵌入式 Linux [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在我确信我们都清楚 Linux 与 Windows 桌面的相对优点 然而 我对嵌入式开发世界的了解却少得多 我主要对行业解决方案感兴
  • 高效的内存屏障

    我有一个多线程应用程序 其中每个线程都有一个整数类型的变量 这些变量在程序执行期间递增 在代码中的某些点 线程将其计数变量与其他线程的计数变量进行比较 现在 我们知道在多核上运行的线程可能会无序执行 一个线程可能无法读取其他线程的预期计数器
  • PyQt5 - 无法使用 QVideoWidget 播放视频

    from PyQt5 QtWidgets import from PyQt5 QtMultimedia import from PyQt5 QtMultimediaWidgets import from PyQt5 QtCore impor
  • 在 unix 中编译 dhrystone 时出错

    我是使用基准测试和 makefile 的新手 我已经从下面的链接下载了 Dhrystone 基准测试 我正在尝试编译它 但我遇到了奇怪的错误 我尝试解决它 但没有成功 有人可以帮助我运行 dhrystone 基准测试吗 以下是我尝试编译的两
  • Mcrt1.o和Scrt1.o有什么用?

    我坚持使用以下两个文件 即 Mcrt1 o 和 Scrt1 o 谁能帮我知道这两个文件的用途 如何使用它 我们以 gcrt1 o 为例 在使用 pg 选项编译进行性能测试时非常有用 谢谢 表格的文件 crt o总是 C 运行时启动代码 大部
  • 从 systemd bash 内联脚本创建 filename_$(date %Y-%m-%d)

    我正在尝试执行systemd计时器并希望将执行脚本的输出保存在每个日期的文件中 这是我的ExecStart脚本中的 service file ExecStart bin bash c echo date Y m d gt gt home u
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • Fedora dnf 更新不起作用?

    当我尝试使用 update 命令更新 Fedora 22 时 sudo dnf update 我收到以下错误 错误 无法同步存储库 更新 的缓存 无法准备内部镜像列表 Curl 错误 6 无法解析主机名 无法解析主机 mirrors fed
  • 为什么我的 Dockerfile CMD 不起作用?

    所以在我的 Dockerfile 的末尾我有这样的内容 WORKDIR home CMD django admin startproject whattt CMD bin bash 当我创建映像然后运行容器时 一切都按预期运行 没有错误 D
  • C:如果文件描述符被删除,阻塞读取应该返回

    我正在以阻塞的方式从设备 文件描述符中读取 可能会发生这样的情况 在不同的线程中 设备被关闭并且文件描述符被删除 不幸的是 读取没有返回或注意到并且一直阻塞 作为一种解决方法 我可以使用 select 作为超时来执行 while 循环 如果
  • 无法在 64 位 Linux 上从汇编 (yasm) 代码调用 C 标准库函数

    我有一个函数foo以汇编语言编写 并在 Linux Ubuntu 64 位上使用 yasm 和 GCC 编译 它只是使用以下命令将消息打印到标准输出puts 如下所示 bits 64 extern puts global foo secti
  • PyPI 上的轮子平台约束有什么限制吗?

    是否有任何地方 PEP 或其他地方 声明关于 Linux 轮子上传范围的限制 PyPI http pypi io 应该有 具体来说 上传是否被认为是可接受的做法linux x86 64轮子到 PyPI 而不是manylinux1 x86 6
  • 配置:错误:无法运行C编译的程序

    我正在尝试使用 Debian Wheezy 操作系统在我的 Raspberry Pi 上安装不同的软件 当我运行尝试配置软件时 我尝试安装我得到此输出 checking for C compiler default output file

随机推荐