0
点赞
收藏
分享

微信扫一扫

Linux命令--统计多项--dstat--使用/教程/实例

一脸伟人痣 2022-01-26 阅读 57

原文网址:Linux命令--统计多项--dstat--使用/教程/实例_IT利刃出鞘的博客-CSDN博客

简介

说明

        本文介绍Linux的统计类命令:dstat。

        dstat 是一个多功能产品,可以替换:vmstat + iostat + netstat + ifstat。dstat扬长避短,即克服了这些命令的局限又增加了一些额外的功能,不但拥有更多的监控项,也更灵活。dstat在性能测试、基准测试和排除故障过程中可以很方便监控系统运行状况。

特性

  1. 结合了vmstat,iostat,ifstat,netstat以及更多的信息
  2. 实时显示统计情况,输出报告
  3. 在分析和排障时可以通过启用监控项并排序
  4. 模块化设计
  5. 使用python编写的,方便扩展现有的工作任务
  6. 容易扩展和添加你的计数器
  7. 包含的许多扩展插件——增加新的监控项目很方便
  8. 可以分组统计块设备/网络设备,并给出总数
  9. 可以显示每台设备的当前状态
  10. 极准确的时间精度,即便是系统负荷较高也不会延迟显示
  11. 显示准确地单位和和限制转换误差范围
  12. 不同的计量单位用不同的颜色显示
  13. 显示中间结果延时小于1秒
  14. 支持输出CSV格式报表,并能导入到Gnumeric和Excel以生成图形

格式

dstat [-afv] [options..] [delay [count]] 

delay    两次输出之间的时间间隔,默认是1s
count    报告输出的次数,默认是没有限制,一直输出直到取消

dstat命令有默认选项,执行dstat命令不加任何参数,它默认会收集-cpu-、-disk-、-net-、-paging-、-system-的数据,一秒钟收集一次。 默认输入 dstat 等于输入了dstat -cdngy 1或dstat -a 1。

选项

OptionsDetails
-c, - -cpu开启cpu统计
-C该选项跟cpu的编号(0~cpu核数-1,多个用都好隔开)如:0,3,total表示分别包含cpu0、cpu3和total
-d, - -disk开启disk统计
-D改选跟具体的设备名(多个用逗号隔开)如:total,hda,hdb表示分别统计total、hda、hdb设备块
-g, - -page开启分页统计
-i, - -int开启中断统计
-I 5,10没弄懂呢~巴拉巴拉
-l, - -load开启负载均衡统计,分别是1m,5m,15m
-m, - -mem开启内存统计,包括used,buffers,cache,free
-n, - -net开启net统计,包括接受和发送
-N该选项可以跟网络设备名多个用逗号隔开,如eth1,total
-p, - -proc开启进程统计,包括runnable, uninterruptible, new
-r, - -ioio开启请求统计,包括read requests, write requests
-s, - -swap开启swap统计,包括used, free
-S该选项可以跟具体的交换区,多个用逗号隔开如swap1,total
-t, - -time启用时间和日期输出
-T, - -epoch启用时间计数,从epoch到现在的秒数
-y, - -sys开启系统统计,包括中断和上下文切换
- -aio开启同步IO统计 (asynchronous I/O)
- -fs开启文件系统统计,包括 (open files, inodes)
- -ipc开启ipc统计,包括 (message queue, semaphores, shared memory)
- -lock开启文件所统计,包括 (posix, flock, read, write)
- -raw开启raw统计 (raw sockets)
- -socket开启sockets统计,包括 (total, tcp, udp, raw, ip-fragments)
- -tcp开启tcp统计,包括(listen, established, syn, time_wait, close)
- -udp开启udp统计 (listen, active)
- -unix开启unix统计(datagram, stream, listen, active)
- -vm开启vm统计 (hard pagefaults, soft pagefaults, allocated, free)
- -stat通过插件名称开启插件扩展,详见命令插件 :可能的内置插件为aio, cpu, cpu24, disk, disk24, disk24old, epoch, fs, int, int24, io, ipc, load, lock, mem, net, page, page24, proc, raw, socket, swap, swapold, sys, tcp, time,udp, unix, vm
- -list列举内置插件扩展的名称
-a, - -all是默认值相当于 -cdngy (default)
-f, - -full相当于 -C, -D, -I, -N and -S
-v, - -vmstat相当于 -pmgdsc -D total
- -bw, - -blackonwhite在白色背景终端上改变显示颜色
- -float在屏幕上的输出强制显示为浮点值(即带小数)(相反的选项设置为 - -integer)
- -integer在屏幕上的输出强制显示为整数值,此为默认值(相反的选项设置为- -float)
- -nocolor禁用颜色(意味着选项 - -noupdate)
- -noheaders禁止重复输出header,默认会打印一屏幕输出一次header
- -noupdate当delay>1时禁止在过程中更新(即在时间间隔内不允许更新)
- -output file输出结果到cvs文件中

命令插件

常用插件

插件名称插件描述
- -disk-util显示某一时间磁盘的忙碌状况
- -freespace显示当前磁盘空间使用率
- -proc-count显示正在运行的程序数量
- -top-bio显示块I/O最大的进程
- -top-cpu显示CPU占用最大的进程
- -top-io显示正常I/O最大的进程
- -top-mem显示占用最多内存的进程

所有插件

插件名称插件描述
- -battery电池电池百分比(需要ACPI)
- -battery-remain电池剩余小时、分钟(需要ACPI)
- -cpufreqCPU频率百分比(需要ACPI)
- -dbusdbus连接的数量(需要python-dbus)
- -disk-util显示某一时间磁盘的忙碌状况
- -fan风扇转速(需要ACPI)
- -freespace每个文件系统的磁盘使用情况
- -gpfsgpfs读/写 I / O(需要mmpmon)
- -gpfs-opsGPFS文件系统操作(需要mmpmon)
- -helloworlddstat插件Hello world示例
- -innodb-buffer显示innodb缓冲区统计
- -innodb-io显示innodb I / O统计数据
- -innodb-ops显示innodb操作计数器
- -lustre显示lustreI / O吞吐量
- -memcache-hits显示memcache 的命中和未命中的数量
- -mysql5-cmds显示MySQL5命令统计
- -mysql5-conn显示MySQL5连接统计
- -mysql5-ioMySQL5 I / O统计数据
- -mysql5-keys显示MySQL5关键字统计
- -mysql-io显示MySQL I / O统计数据
- -mysql-keys显示MySQL关键字统计
- -net-packets显示接收和发送的数据包的数量
- -nfs3显示NFS v3客户端操作
- -nfs3-ops显示扩展NFS v3客户端操作
- -nfsd3显示NFS v3服务器操作
- -nfsd3-ops显示扩展NFS v3服务器操作
- -ntp显示NTP服务器的ntp时间
- -postfix显示后缀队列大小(需要后缀)
- -power显示电源使用量
- -proc-count显示处理器的总数
- -rpc显示rpc客户端调用统计
- -rpcd显示RPC服务器调用统计
- -sendmail显示sendmail队列大小(需要sendmail)
- -snooze显示每秒运算次数
- -test显示插件输出
- -thermal热系统的温度传感器
- -top-bio显示消耗块I/O最大的进程
- -top-cpu显示消耗CPU最大的进程
- -top-cputime显示使用CPU时间最大的进程(单位ms)
- -top-cputime-avg显示使用CPU时间平均最大的进程(单位ms)
- -top-io显示消耗I/O最大进程
- -top-latency显示总延迟最大的进程(单位ms)
- -top-latency-avg显示平均延时最大的进程(单位ms)
- -top-mem显示使用内存最大的进程
- -top-oom显示第一个被OOM结束的进程
- -utmp显示utmp连接的数量(需要python-utmp)
- -vmk-hba显示VMware ESX内核vmhba统计数
- -vmk-int显示VMware ESX内核中断数据
- -vmk-nic显示VMware ESX内核端口统计
- -vz-io显示每个OpenVZ请求CPU使用率
- -vz-ubc显示OpenVZ用户统计
- -wifi无线连接质量和信号噪声比

结果含义

dstat

[root@xiaoagiao ~]# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw
  0   0  99   0   0   0|  21k   13k|   0     0 |   0     0 |  37    90
  0   0 100   0   0   0|   0     0 |  60B  242B|   0     0 |  32    70
  1   0  99   0   0   0|   0     0 |  60B  114B|   0     0 |  34    66
  0   0 100   0   0   0|   0     0 |  60B  106B|   0     0 |  25    56
  0   0 100   0   0   0|   0     0 |  60B   98B|   0     0 |  38    69
  0   1  99   0   0   0|   0     0 |  60B   98B|   0     0 |  30    62
  0   0 100   0   0   0|   0     0 |  60B   98B|   0     0 |  32    60
  0   0 100   0   0   0|   0     0 |  60B   98B|   0     0 |  26    57
  0   0 100   0   0   0|   0     0 |  60B   98B|   0     0 |  36    67
  0   0 100   0   0   0|   0     0 |  60B   98B|   0     0 |  25    58
  0   0 100   0   0   0|   0     0 |  60B   90B|   0     0 |  35    65
  0   1  99   0   0   0|   0  2048B| 120B   98B|   0     0 |  49   239
  0   0 100   0   0   0|   0     0 | 300B  264B|   0     0 |  42    70
  0   0 100   0   0   0|   0     0 | 210B  158B|   0     0 |  36    71
  0   1  99   0   0   0|   0     0 | 120B   98B|   0     0 |  36    70
  0   0 100   0   0   0|   0     0 | 120B   98B|   0     0 |  26    57 ^C

Procs

r:运行的和等待(CPU时间片)运行的进程数,这个值也可以判断是否需要增加CPU(长期大于1) 
b:处于不可中断状态的进程数,常见的情况是由IO引起的

Memory

swpd: 切换到交换内存上的内存(默认以KB为单位)。如果 swpd 的值不为0,或者还比较大,比如超过100M了,但是 si, so 的值长期为 0,这种情况我们可以不用担心,不会影响系统性能。
free: 空闲的物理内存
buff: 作为buffer cache的内存,对块设备的读写进行缓冲
cache: 作为page cache的内存, 文件系统的cache。如果 cache 的值大的时候,说明cache住的文件数多,如果频繁访问到的文件都能被cache住,那么磁盘的读IO bi 会非常小。

Swap

si: 交换内存使用,由磁盘调入内存
so: 交换内存使用,由内存调入磁盘
内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响。磁盘IO和CPU资源都会被消耗。

我发现有些朋友看到空闲内存(free)很少或接近于0时,就认为内存不够用了,实际上不能光看这一点的,还要结合si,so,如果free很少,但是si,so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

磁盘IO

bi: 从块设备读入的数据总量(读磁盘) (KB/s)
bo: 写入到块设备的数据总理(写磁盘) (KB/s)
注:随机磁盘读写的时候,这2个 值越大(如超出1M),能看到CPU在IO等待的值也会越大

System

in: 每秒产生的中断次数
cs: 每秒产生的上下文切换次数
上面这2个值越大,会看到由内核消耗的CPU时间会越多

Cpu

usr: 用户进程消耗的CPU时间百分比
us 的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超过50% 的使用,那么我们就该考虑优化程序算法或者进行加速了(比如 PHP/Perl)

sys: 内核进程消耗的CPU时间百分比 
sys 的值高时,说明系统内核消耗的CPU资源多,这并不是良性的表现,我们应该检查原因。

wai: IO等待消耗的CPU时间百分比
wa 的值高时,说明IO等待比较严重,这可能是由于磁盘大量作随机访问造成,也有可能是磁盘的带宽出现瓶颈(块操作)。
idl: CPU处在空闲状态时间百分比

示例大全

例1:查看当前占用I/O、cpu、内存等最高的进程信息

[root@xiaoagiao ~]# dstat --top-mem --top-cpu --top-io
--most-expensive- -most-expensive- ----most-expensive----
  memory process |  cpu process   |     i/o process
firewalld   28.0M|vmtoolsd     0.1|systemd      48k   33k
firewalld   28.0M|                |sshd: root@ 388B  164B
firewalld   28.0M|vmtoolsd     1.0|vmtoolsd   7517B    0
firewalld   28.0M|                |sshd: root@ 155B   52B
firewalld   28.0M|python2      1.0|sshd: root@ 155B   44B
firewalld   28.0M|                |vmtoolsd   9448B    0
firewalld   28.0M|                |sshd: root@ 148B   44B
firewalld   28.0M|                |sshd: root@ 155B   36B
firewalld   28.0M|                |sshd: root@ 155B   36B
举报

相关推荐

0 条评论