linux磁盘性能监控


linux下对于查看进程的命令很多也很强大,常用的如:ps top

但是在磁盘性能监控方面就没有那么统一了。

下面列举一些磁盘监控命令,此处只是起到抛砖引玉作用,详细使用参数请参考man手册。

一 df

df命令可以获取硬盘被占用了多少空间,目前还剩下多少空间等信息,它也可以显示所有文件系统对i节点和磁盘块的使用情况。

常见的使用方法如:df -h 以人类容易阅读的方式显示。

二 du

du的英文原义为“disk usage”,含义为显示磁盘空间的使用情况,统计目录(或文件)所占磁盘空间的大小。该命令的功能是逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024字节)的情况。若没有给出指定目录,则对当前目录进行统计。

常见使用方式有:列出当前目录大小:du -sh 如果希望列出当前目录中各个子目录大小 :du -sh *

三 fdisk

可以对磁盘进行分区,同时也可以查看整个磁盘大小,尤其是在磁盘刚买来还没有分区格式化的时候使用,可以使用:

fdisk /dev/(your disk name) 进入后使用p命令可以查看磁盘的详细信息。

四 iostat 可以提供丰富的IO状态数据

$ iostat -d -k 1 10

参数 -d 表示,显示设备(磁盘)使用状态;-k某些使用block为单位的列强制使用Kilobytes为单位;1 10表示,数据显示每隔1秒刷新一次,共显示10次。

使用-x参数可以获得更多统计信息,部分显示参数解释如下:

rrqm/s:每秒这个设备相关的读取请求有多少被Merge了(当系统调用需要读取数据的 时候,VFS将请求发到各个FS,如果FS发现不同的读取请求读取的是相同Block的数据,FS会将这个请求合并Merge);wrqm/s:每秒这个 设备相关的写入请求有多少被Merge了。


rsec/s:每秒读取的扇区数;wsec/: 每秒写入的扇区数。r/s:The number of read requests that were issued to the device per second;w/s:The number of write requests that were issued to the device per second;


await:每一个IO请求的处理的平均时间(单位是微秒)。这里可以理解为IO的响应时 间,一般地系统IO响应时间应该低于5ms,如果大于10ms就比较大了。


%util:在统计时间内所有处理IO时间,除以总共统计时间。例如,如果统计间隔1秒,该 设备有0.8秒在处理IO,而0.2秒闲置,那么该设备的%util = 0.8/1 = 80%,所以该参数暗示了设备的繁忙程度。一般地,如果该参数是100%表示设备已经接近满负荷运行了(当然如果是多磁盘,即使%util是100%,因 为磁盘的并发能力,所以磁盘使用未必就到了瓶颈)。

五 vmstat 实时产看内存使用情况

不解释了,直接上结果:

$ vmstat 
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 2037916 105012 725188    0    0    63    18  206  589  5  2 92  2  0	
想看清楚一些可以加 -S 后面跟 K M

$ vmstat -S M
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0   1903    104    723    0    0    57    17  207  613  5  2 92  2  0	

六 dstat 强大的网络 磁盘 cpu监控命令

彩色显示cpu、磁盘、网络、IO、内存等使用情况。

dstat 
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai hiq siq| read  writ| recv  send|  in   out | int   csw 
  5   2  92   2   0   0| 266k   70k|   0     0 |   0     0 | 825  2532 
  2   2  82  14   0   0|3596k   84k| 352B    0 |   0     0 | 894    12k
  3   3  83  11   0   0|2632k    0 |   0     0 |   0     0 |1025  7427 
  1   1  87  11   0   0|3020k   52k| 128B  142B|   0     0 | 534  4132 
  2   1  88   9   0   0|3236k    0 | 160B   78B|   0     0 | 597  6167 ^C

默认情况下分五个区域:

1、 --total-cpu-usage---- CPU使用率
usr:用户空间的程序所占百分比;
sys:系统空间程序所占百分比;
idel:空闲百分比;
wai:等待磁盘I/O所消耗的百分比;
hiq:硬中断次数;
siq:软中断次数;
2、 -dsk/total- 磁盘统计
read:读总数
writ:写总数
3、 -net/total- 网络统计
recv:网络收包总数
send:网络发包总数
4、 ---paging-- 内存分页统计
in: pagein(换入)
out:page out(换出)
注:系统的分页活动。分页指的是一种内存管理技术用于查找系统场景,一个较大的分页表明系统正在使用大量的交换空间,通常情况下当系统已经开始用交换空间的时候,就说明你的内存已经不够用了,或者说内存非常分散,理想情况下page in(换入)和page out(换出)的值是0 0。
5、 --system-- 系统信息
int:中断次数
csw:上下文切换
注:中断(int)和上下文切换(csw)。这项统计仅在有比较基线时才有意义。这一栏中较高的统计值通常表示大量的进程造成拥塞,需要对CPU进行关注。你的服务器一般情况下都会运行运行一些程序,所以这项总是显示一些数值。
默认情况下,dstat 会每隔一秒刷新一次数据,一直刷新并一直输出,按 Ctrl+C 退出 "dstat"

七 iotop 查看进程的io性能

以上命令只能查看整个硬盘的io性能,不能对每个进程的io性能进行监控。iotop则用于监控每个进程的io性能,

类似于查看进程状态的top命令,我这里需要超级权限才能运行

非常直观的显示每个进程的读写速度,不上结果了,自行验证。

八 nload 命令行实时监控网速

nload <eth0 / wlan0>

\

附:查看系统中某个目录下占用空间最大的前十个文件夹:

<pre name="code" class="python">sudo  du -sh * ./ | sort -n -r | head -n 10




相关内容