磁盘性能指标
五个常见指标: 使用率、饱和度、IOPS、吞吐量以及响应时间。这五个指标,是衡量磁盘性能的基本指标。
• 使用率,是指磁盘处理 I/O 的时间百分比。过高的使用率(比如超过 80%),通常意味着磁盘 I/O 存在性能瓶颈。
• 饱和度,是指磁盘处理 I/O 的繁忙程度。过高的饱和度,意味着磁盘存在严重的性能瓶颈。当饱和度为 100% 时,磁盘无法接受新的 I/O 请求。
• IOPS(Input/Output Per Second),是指每秒的 I/O 请求数。
• 吞吐量,是指每秒的 I/O 请求大小。
• 响应时间,是指 I/O 请求从发出到收到响应的间隔时间。

这些指标,我们在看的时候, 不要孤立地去比较某一指标,而要结合读写比例、I/O 类型(随机还是连续)以及 I/O 的大小,综合来分析。
举个例子,在数据库、大量小文件等这类随机读写比较多的场景中,IOPS 更能反映系统的整体性能;而在多媒体等顺序读写较多的场景中,吞吐量更能反映系统的整体性能。

观测磁盘的I/O性能指标: iostat
iostat 是最常用的磁盘 I/O 性能观测工具,它提供了每个磁盘的使用率、IOPS、吞吐量等各种常见的性能指标,当然,这些数据实际上来自 /proc/diskstats。
[root@host1 ~]# iostat -d -x 1 #-d -x 1 展示所有的磁盘I/O指标, 每1秒输出一组数据
磁盘性能指标_第1张图片
这些指标中,重点注意:
• %util ,就是我们前面提到的磁盘 I/O 使用率;
• r/s+ w/s ,就是 IOPS;
• rkB/s+wkB/s ,就是吞吐量;
• r_await+w_await ,就是响应时间。

关于更多的显示选项, 可以在iostat的man手册中查询

观测进程的I/O性能指标: pidstat
磁盘性能指标_第2张图片
输出中每项的含义:
• 每秒读取的数据大小(kB_rd/s),单位是 KB;
• 每秒发出的写请求数据大小(kB_wr/s),单位是 KB;
• 每秒取消的写请求数据大小(kB_ccwr/s),单位是 KB。

根据 I/O 大小对进程排序: iotop
[root@host1 ~]# iotop
磁盘性能指标_第3张图片
前两行分别表示,进程的磁盘读写大小总数和磁盘真实的读写大小总数。因为缓存、缓冲区、I/O 合并等因素的影响,它们可能并不相等。
剩下的部分,则是从各个角度来分别表示进程的 I/O 情况,包括线程 ID、I/O 优先级、每秒读磁盘的大小、每秒写磁盘的大小、换入和等待 I/O 的时钟百分比等。