dstat 命令详解

8 篇文章 0 订阅
1 篇文章 0 订阅

dstat 命令详解

原文地址https://blog.csdn.net/zwjzqqb/article/details/80766743

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列确认,
       进一步根据-g的in列确认是否是内存瓶颈后的恢复期,
       配合-s参数查看换页使用情况,-d查看当前bio情况,
       如果-d的bio的read和-g的in差不多,
       表名当前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,
       只有频繁的in和out才表明内存不足。

-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脚本放入对应位置。

 

 

原文地址https://blog.csdn.net/zwjzqqb/article/details/80766743

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值