Welcome 微信登录

首页 / 操作系统 / Linux / 使用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 -aLinux 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 -ltotal 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: NOKEYPreparing...                ########################################### [100%] 1:dstat                  ########################################### [100%][root@xxx-MIGPC-DB uploads]# rpm -qa | grep dstatdstat-0.7.2-1.el6.rfx.noarch2、Dstat使用方法从官方途径上,我们可以找到正式的dstat的html格式说明文档。在实际中,我们可以通过help参数来显示功能参数。[root@xxx-MIGPC-DB uploads]# dstat --helpUsage: dstat [-afv] [options..] [delay [count]]Versatile tool for generating system resource statisticsDstat 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 filedelay 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]# dstatYou 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.csvcsv还是比较规整的类型。3、结论当我们进行操作系统层面全面监控的时候,Dstat作为一个开源工具,还是比较有实际价值的。本文永久更新链接地址