使用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还是比较规整的类型。
3、结论
当我们进行操作系统层面全面监控的时候,Dstat作为一个开源工具,还是比较有实际价值的。