使用Dstat来进行Linux综合性能诊断

性能测试、评估和优化一直是系统管理维护人员工作的重点。当我们针对一台生产应用进行分析的时候,获取如CPU、内存、IO、网络吞吐和进程负载的基础数据,对于后续的性能评测和优化是至关重要的。

Linux作为目前应用最广泛的服务器操作系统,为了应对各种性能问题,已经发展出很多原生的性能检测工具。从top、vmstat、iostat到mpstat,已经可以对操作系统主要性能方面进行详细的分析。

面对越来越复杂的分析情况,我们在实践中往往需要那种全局综合性的性能工具。在一个工具里面,将所有的数据收集展现在一起。本篇主要介绍一下基于开源架构的dstat性能分析工具。

1、Dstat下载与安装

Dstat是一个自由开放团体开发的开源软件,可以从作者网站上下载到,网址为:http://dag.wiee.rs/home-made/dstat/。

根据不同的操作系统版本,Dstat提供了不同版本的安装RPM或者其他格式安装包。笔者系统为红帽6.5,所以选择适合版本进行安装。

[root@xxx-MIGPC-DB uploads]# uname -a

Linux xxx-MIGPC-DB 2.6.32-358.el6.x86_64 #1 SMP Tue Jan 29 11:47:41 EST 2013 x86_64 x86_64 x86_64 GNU/Linux

[root@xxx-MIGPC-DB uploads]# ls -l

total 164

-rw-r--r-- 1 root root 164276 Dec  3 09:25 dstat-0.7.2-1.el6.rfx.noarch.rpm

安装Dstat及其简单,借助rpm工具可以直接安装。

[root@xxx-MIGPC-DB uploads]# rpm -ivh dstat-0.7.2-1.el6.rfx.noarch.rpm 

warning: dstat-0.7.2-1.el6.rfx.noarch.rpm: Header V3 DSA/SHA1 Signature, key ID 6b8d79e6: NOKEY

Preparing...                ########################################### [100%]

  1:dstat                  ########################################### [100%]

[root@xxx-MIGPC-DB uploads]# rpm -qa | grep dstat

dstat-0.7.2-1.el6.rfx.noarch

2、Dstat使用方法

从官方途径上,我们可以找到正式的dstat的html格式说明文档。在实际中,我们可以通过help参数来显示功能参数。

[root@xxx-MIGPC-DB uploads]# dstat --help

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

Versatile tool for generating system resource statistics

Dstat options:

  -c, --cpu              enable cpu stats

    -C 0,3,total          include cpu0, cpu3 and total

  -d, --disk            enable disk stats

    -D total,hda          include hda and total

  -g, --page            enable page stats

  -i, --int              enable interrupt stats

    -I 5,eth2              include int5 and interrupt used by eth2

  -l, --load            enable load stats

  -m, --mem              enable memory stats

  -n, --net              enable network stats

    -N eth1,total          include eth1 and total

  -p, --proc            enable process stats

  -r, --io              enable io stats (I/O requests completed)

  -s, --swap            enable swap stats

    -S swap1,total        include swap1 and total

  -t, --time            enable time/date output

  -T, --epoch            enable time counter (seconds since epoch)

  -y, --sys              enable system stats

  --aio                  enable aio stats

  --fs, --filesystem    enable fs stats

  --ipc                  enable ipc stats

  --lock                enable lock stats

  --raw                  enable raw stats

  --socket              enable socket stats

  --tcp                  enable tcp stats

  --udp                  enable udp stats

  --unix                enable unix stats

  --vm                  enable vm stats

  --plugin-name          enable plugins by plugin name (see manual)

  --list                list all available plugins

  -a, --all              equals -cdngy (default)

  -f, --full            automatically expand -C, -D, -I, -N and -S lists

  -v, --vmstat          equals -pmgdsc -D total

  --float                force float values on screen

  --integer              force integer values on screen

  --bw, --blackonwhite  change colors for white background terminal

  --nocolor              disable colors (implies --noupdate)

  --noheaders            disable repetitive headers

  --noupdate            disable intermediate updates

  --output file          write CSV output to file

delay is the delay in seconds between each update (default: 1)

count is the number of updates to display before exiting (default: unlimited)

从参数类型上,我们可以看到Dstat对于操作系统的监控支持是比较全面的,包括CPU、内存、磁盘和网络等多个方面。针对不同的监控需要,用户只需要输入不同的控制参数,就可以在一个结果集合中进行持续性监控。

默认情况下,Dstat监控行为如下:

[root@xxx-MIGPC-DB uploads]# 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 

  1  0  98  0  0  0|1395B  41k|  0    0 |  0    11B| 410  2134 

 25  0  75  0  0  0|  0    0 |  60B  378B|  0    0 |2058  2057 

 25  0  75  0  0  0|  0    32k| 401B  635B|  0    0 |2112  2128 

 26  0  75  0  0  0|  0    0 |  60B  170B|  0    0 |2075  2067 

 25  1  75  0  0  0|  0    0 | 303B  170B|  0    0 |2069  2091 

 25  0  75  0  0  0|  0    64k| 120B  170B|  0    0 |2042  2052 

 25  0  75  0  0  0|  0    0 |  60B  170B|  0    0 |2121  2102 

 25  0  75  0  0  0|  0    0 |  60B  170B|  0    0 |2055  2075 

 25  1  74  0  0  0|  0    32k| 120B  170B|  0    0 |2091  2094

默认情况下,采用cdngy参数,监控CPU、磁盘、网络、内存分页和系统统计量。

如果需要单项监控,只需要输入单个参数即可。

[root@xxx-MIGPC-DB dev]# dstat -c

----total-cpu-usage----

usr sys idl wai hiq siq

  1  0  98  0  0  0

 16  1  83  0  0  0

 16  1  83  0  0  0

 17  2  78  4  0  0

 16  1  83  0  0  0

如果需要显示时间,可以通过-t参数来指定。

[root@xxx-MIGPC-DB dev]# dstat -a -t

----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- ----system----

usr sys idl wai hiq siq| read  writ| recv  send|  in  out | int  csw |    time     

  1  0  98  0  0  0|1403B  41k|  0    0 |  0    11B| 410  2134 |03-12 10:18:34

 16  1  80  3  0  0|  0  2280k|  53k  99k|  0    0 |2855  3135 |03-12 10:18:35

 16  1  83  0  0  0|  0    32k|  53k  100k|  0    0 |2539  2842 |03-12 10:18:36

 16  1  83  0  0  0|  0    0 |  53k  98k|  0    0 |2504  2799 |03-12 10:18:37

默认情况是每秒钟收集一次,如果希望和vmstat类似指定时间间隔和采样数量,可以直接在后面输入参数。

[root@xxx-MIGPC-DB dev]# dstat -at 3 10

----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system-- ----system----

usr sys idl wai hiq siq| read  writ| recv  send|  in  out | int  csw |    time     

  1  0  98  0  0  0|1404B  41k|  0    0 |  0    11B| 410  2134 |03-12 10:24:42

 16  1  83  0  0  0|  0    11k|  54k  97k|  0    0 |2513  2828 |03-12 10:24:45

 17  1  83  0  0  0|  0    19k|  53k  96k|  0    0 |2493  2807 |03-12 10:24:48

 17  1  82  0  0  0|  0    16k|  47k  93k|  0    0 |2460  2727 |03-12 10:24:51

 17  1  82  0  0  0|  0    17k|  45k  92k|  0    0 |2423  2683 |03-12 10:24:54

从经验看,推荐使用的一种参数是-cdlmnpsy,可以比较充分的显示系统全貌。

[root@xxx-MIGPC-DB dev]# dstat -cdlmnpsy

----total-cpu-usage---- -dsk/total- ---load-avg--- ------memory-usage----- -net/total- ---procs--- ----swap--- ---system--

usr sys idl wai hiq siq| read  writ| 1m  5m  15m | used  buff  cach  free| recv  send|run blk new| used  free| int  csw 

  1  0  98  0  0  0|1404B  41k|0.12 0.19 0.18|1458M  125M 13.6G  611M|  0    0 |0.0  0 0.4| 286M 7730M| 410  2134 

 17  1  82  0  0  0|  0    32k|0.19 0.21 0.18|1458M  125M 13.6G  611M|  51k  98k|  0  0  0| 286M 7730M|2540  2828 

 16  1  83  0  0  0|  0    0 |0.19 0.21 0.18|1458M  125M 13.6G  611M|  57k  103k|  0  0  0| 286M 7730M|2530  2862 

 17  1  82  0  0  0|  0    0 |0.19 0.21 0.18|1458M  125M 13.6G  611M|  52k  96k|  0  0  0| 286M 7730M|2498  2810 

Dstat还支持将收集结果导出csv文件中。

[root@xxx-MIGPC-DB ~]# dstat -c --output res.csv

----total-cpu-usage----

usr sys idl wai hiq siq

  1  0  98  0  0  0

 18  1  82  0  0  0

 17  1  82  0  0  0

 17  1  82  0  0  0

 18  1  82  0  0  0

 16  1  83  0  0  0

 16  1  83  0  0  0

 16  1  83  0  0  0

 15  1  84  0  0  0

 17  1  83  0  0  0

[root@xxx-MIGPC-DB ~]# ls -l | grep res.csv

-rw-r--r--  1 root root  1955 Dec  3 10:28 res.csv

csv还是比较规整的类型。

使用Dstat来进行Linux综合性能诊断

3、结论

当我们进行操作系统层面全面监控的时候,Dstat作为一个开源工具,还是比较有实际价值的。

相关推荐