磁盘性能指标 五个常见指标: 使用率、饱和度、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秒输出一组数据 这些指标中,重点注意: • %util ,就是我们前面提到的磁盘 I/O 使用率; • r/s+ w/s ,就是 IOPS; • rkB/s+wkB/s ,就是吞吐量; • r_await+w_await ,就是响应时间。
关于更多的显示选项, 可以在iostat的man手册中查询
观测进程的I/O性能指标: pidstat 输出中每项的含义: • 每秒读取的数据大小(kB_rd/s),单位是 KB; • 每秒发出的写请求数据大小(kB_wr/s),单位是 KB; • 每秒取消的写请求数据大小(kB_ccwr/s),单位是 KB。
根据 I/O 大小对进程排序: iotop [root@host1 ~]# iotop 前两行分别表示,进程的磁盘读写大小总数和磁盘真实的读写大小总数。因为缓存、缓冲区、I/O 合并等因素的影响,它们可能并不相等。 剩下的部分,则是从各个角度来分别表示进程的 I/O 情况,包括线程 ID、I/O 优先级、每秒读磁盘的大小、每秒写磁盘的大小、换入和等待 I/O 的时钟百分比等。