如何监测 Linux 的磁盘 I/O 性能

Linux 磁盘性能指标

在衡量磁盘性能时,我们经常提到五个常见指标:利用率、饱和度、IOPS、吞吐量和响应时间。这五个指标是衡量磁盘性能的基本指标。

  1. 利用率(Utilization):磁盘处理 I/O 的时间百分比。过度使用(如超过 80%)通常意味着磁盘 I/O 存在性能瓶颈。
  2. 饱和度(Saturation):指磁盘处理 I/O 的繁忙程度。过度饱和意味着磁盘存在严重的性能瓶颈。当饱和度为 100% 时,磁盘无法接受新的 I/O 请求。
  3. IOPS(Input/Output Per Second):指每秒 I/O 请求的数量。
  4. 吞吐量(Throughput):每秒 I/O 请求的大小。
  5. 响应时间(Response time):指发送 I/O 请求和接收响应之间的间隔时间。

这里需要注意的是,关于利用率,我们只考虑有无 I/O,而不考虑 I/O 的大小。也就是说,当利用率为 100% 时,磁盘仍有可能接受新的 I/O 请求。

一般来说,在为应用选择服务器时,首先要对磁盘的 I/O 性能进行基准测试,这样才能准确评估磁盘性能,以判断是否能够满足应用的需求。

当然,这需要你在随机读顺序读随机写顺序写等各种应用场景下测试不同 I/O 大小(通常是 512B ~ 1MB 之间)的性能。

安装 iostat

CentOS 安装:yum install sysstat

Debian、Ubuntu安装:apt-get install sysstat

使用 iostat

选项

  • -c:仅显示 CPU 使用情况;
  • -d:仅显示设备利用率;
  • -k:显示状态以千字节每秒为单位,而不使用块每秒;
  • -m:显示状态以兆字节每秒为单位;
  • -p:仅显示块设备和所有被使用的其他分区的状态;
  • -t:显示每个报告产生时的时间;
  • -V:显示版号并退出;
  • -x:显示扩展状态。

参数:

  • 间隔时间:每次报告的间隔时间(秒);
  • 次数:显示报告的次数。

使用示例

-d 参数

参数 -d 表示,显示设备(磁盘)使用状态。

输出信息的含义:

  • tps:该设备每秒的传输次数。”一次传输” 意思是 “一次 I/O 请求”。多个逻辑请求可能会被合并为 “一次 I/O 请求”。”一次传输” 请求的大小是未知的。
  • kB_read/s:每秒从设备读取的数据量;即IOPS
  • kB_wrtn/s:每秒向设备写入的数据量;即IOPS
  • kB_read:读取的总数据量;
  • kB_wrtn:写入的总数量数据量。

这些单位都为 Kilobytes。

作者: 高志远

高志远,24岁,男生

发表评论

邮箱地址不会被公开。