硬盘实用工具

slabtop

安装:

yum install procps-ng

slabtop -d 5              //每5s显示一次
选项 说明
-d n / --delay=n 设置显示的时间间隔
-s S / --sort=S 设置排序规则。a,以活动对象数目排序;b,以每个slab对象数目排序;c,以缓存大小排序;l,以slab数量排序;v,以多动的slab排序;n,以名字排序;o,以对象数目排序;p,以每slab的页数排序;u,以缓存利用率排序
-o /--once 只显示一次,之后退出
-V / --version 显示版本信息,并且退出
--help 显示帮助信息,并且退出

sar

-r     Report memory utilization statistics.  The following values are displayed:

kbmemfree : 这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
kbmemused : 这个值和free命令中的free值基本一致,所以它不包括buffer和cache的空间.
%memused  : 这个值是kbmemused和内存总量(不包括swap)的一个百分比.
kbbuffers :这个值就是free命令中的buffer.
kbcached  :这个值就是free命令中的cache.
kbcommit  :保证当前系统所需要的内存,即为了确保不溢出而需要的内存(RAM+swap).
%commit   :这个值是kbcommit与内存总量(包括swap)的一个百分比.

可参考:https://i.cnblogs.com/posts/edit-done;postId=8945991

pidstat

使用-d选项,我们可以查看进程IO的统计信息:

[root@master ~]# pidstat -d 2 2
Linux 3.10.0-693.el7.x86_64 (master)    01/23/2019      _x86_64_        (8 CPU)

09:47:33 AM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
09:47:35 AM     0      1627      0.00      7.92      0.00  etcd

09:47:35 AM   UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
09:47:37 AM     0      1627      0.00      8.00      0.00  etcd

Average:      UID       PID   kB_rd/s   kB_wr/s kB_ccwr/s  Command
Average:        0      1627      0.00      7.96      0.00  etcd

iostat

-x     Display extended statistics.
-z     Tell iostat to omit output for any devices for which there was no activity during the sample period.

[root@localhost ~]# iostat -xz 1
Linux 3.10.0-693.el7.x86_64 (localhost.localdomain)     08/29/2019      _x86_64_        (2 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.02    0.00    0.05    0.00    0.11   99.81

Device:    rrqm/s   wrqm/s     r/s     w/s    rkB/s    wkB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
xvda        0.00     0.01    0.78    0.10     2.21     0.70     6.59     0.00    0.36    0.20    1.54   0.14   0.01
dm-0        0.00     0.00    0.18    0.09     0.47     0.69     8.68     0.00    0.94    0.46    1.94   0.17   0.00
dm-1        0.00     0.00    0.17    0.00     0.67     0.00     8.02     0.00    0.08    0.08    0.00   0.08   0.00
rrqm/s: 每秒对该设备的读请求被合并次数,文件系统会对读取同块(block)的请求进行合并
wrqm/s: 每秒对该设备的写请求被合并次数
r/s: 每秒完成的读次数
w/s: 每秒完成的写次数
rkB/s: 每秒读数据量(kB为单位)
wkB/s: 每秒写数据量(kB为单位)
avgrq-sz:平均每次IO操作的数据量(扇区数为单位)
avgqu-sz: 平均等待处理的IO请求队列长度,对于单个磁盘如果值>1表明设备饱和,对于多个磁盘阵列的逻辑磁盘情况除外
await(r_await、w_await): 平均每次IO请求等待时间(包括等待时间和处理时间,毫秒为单位)
svctm:发送给设备 I/O 请求的平均服务时间(ms),如果 svctm 与 await 很接近,表示几乎没有 I/O 等待,磁盘性能很好,否则磁盘队列等待时间较长,磁盘响应较差;
%util:设备的使用率,表明每秒中用于 I/O 工作时间的占比,单个磁盘当 %util>60% 的时候性能就会下降(体现在 await 也会增加),当接近100%时候就设备饱和了,但对于有多个磁盘阵列的逻辑磁盘情况除外;
还有,虽然监测到的磁盘性能比较差,但是不一定会对应用程序的响应造成影响,内核通常使用 I/O asynchronously 技术,使用读写缓存技术来改善性能,不过这又跟上面的物理内存的限制相制约了。

iotop

yum install iotop -y


iotp 拿到的是 TID,我们要转成 PID,可以通过 readlinklai 找到 PID

readlink -f /proc/*/task/tid/../..

# 找到 PID 之后就可以看这个进程具体的读写情况
cat /proc/pid/io

# 还可以通过 lsof 命令来确定具体的文件读写情况
lsof -p pid
原文地址:https://www.cnblogs.com/klvchen/p/10056960.html