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