Robert MacLean Asked: 2013-01-29 05:38:34 +0800 CST2013-01-29 05:38:34 +0800 CST 2013-01-29 05:38:34 +0800 CST 什么会导致 SAN 上的 IO 等待? 772 当我在服务器上看到它时,我理解 IO 等待,这意味着在我等待 IO 赶上[source]时 CPU 被阻塞。 我试图了解为什么 SAN 统计信息会显示高 IO 等待 - 这是否表明 SAN CPU 被 SAN 磁盘阻塞或者是其他原因? storage-area-network 4 个回答 Voted Best Answer Dennis Kaarsemaker 2013-01-29T05:45:56+08:002013-01-29T05:45:56+08:00 由于物理的基本定律,SAN 的 IO 延迟比本地磁盘高得多。因此,如果您的应用程序正在执行大量小写入,并且fsync()在每次写入之后,您会看到很多 iowait。 例如,这里有两个包含许多小事务的同一数据集的 mysql 副本,您会看到 SAN 上的从属服务器花费更多时间进行 IO。 桑: 当地的: Basil 2013-01-29T06:28:44+08:002013-01-29T06:28:44+08:00 SAN 等待时间可能意味着您的存储是瓶颈。它也可能是服务器设置或服务器与存储之间的连接,但更常见的是,当我看到 SAN 磁盘的等待时间时,它只是一个繁忙的 SAN。 首先,检查支持该卷的磁盘的性能。您正在寻找 IO/s 或 MB/s 读取或写入的峰值,以及潜在的缓存利用率峰值。尝试只查看您正在调查的卷中涉及的硬件。此外,及时回顾和向前看是否有更高的尖峰没有引起问题。如果是这样,那么存储硬件不太可能是问题所在。存储硬件瓶颈的纠正措施可能包括将此卷迁移到另一个池或 RAID,或者增加轴或缓存的数量。 其次,检查服务器上的队列深度设置。如果您的队列深度非常高,您的服务器将在高利用率期间看到更高的延迟。队列深度是存储告诉服务器限制其 IO 以允许存储赶上的一种方式。32 是一个很好的平均数,我见过的大多数服务器操作系统和大多数存储设备都支持它。我也看到过更高和更低的工作,但如果它设置为 1024 或其他,这可以解释高等待时间。在队列深度非常高的情况下,服务器将它想做的所有事情都排入队列,然后存储以与队列深度低很多的情况下一样快的速度执行。由于服务器从某物进入队列和离开队列开始测量等待时间,因此等待时间会增加。 最后,检查服务器的错误日志。确保没有传输级别问题(如磁盘超时或路径故障)。如果有,您需要查看开关。 EEAA 2013-01-29T05:42:40+08:002013-01-29T05:42:40+08:00 它的测量结果与在服务器上没有什么不同:传入的 IO 请求多于可用硬件资源可以处理的数量。 longneck 2013-01-29T06:27:38+08:002013-01-29T06:27:38+08:00 SAN 管理软件报告的高 IO 等待意味着 SAN 硬件无法满足 SAN 客户端的需求。这要么是因为您的硬件没有足够的负载能力,要么可能是某些地方出现故障或性能不佳。 导致性能不佳的缓慢故障驱动器实际上很常见,尤其是在 RAID5 设置中。提取您所有驱动器的 SMART 日志,我敢打赌您会发现一个驱动器具有非常多的更正错误。(纠正这些错误需要时间。如果在一定时间内纠正了单个错误,则 RAID 控制器不会记录错误。但是堆积了很多这些错误,加起来会花费很多时间。这就是你如何获得糟糕的表现。)
由于物理的基本定律,SAN 的 IO 延迟比本地磁盘高得多。因此,如果您的应用程序正在执行大量小写入,并且
fsync()
在每次写入之后,您会看到很多 iowait。例如,这里有两个包含许多小事务的同一数据集的 mysql 副本,您会看到 SAN 上的从属服务器花费更多时间进行 IO。
桑:
当地的:
SAN 等待时间可能意味着您的存储是瓶颈。它也可能是服务器设置或服务器与存储之间的连接,但更常见的是,当我看到 SAN 磁盘的等待时间时,它只是一个繁忙的 SAN。
首先,检查支持该卷的磁盘的性能。您正在寻找 IO/s 或 MB/s 读取或写入的峰值,以及潜在的缓存利用率峰值。尝试只查看您正在调查的卷中涉及的硬件。此外,及时回顾和向前看是否有更高的尖峰没有引起问题。如果是这样,那么存储硬件不太可能是问题所在。存储硬件瓶颈的纠正措施可能包括将此卷迁移到另一个池或 RAID,或者增加轴或缓存的数量。
其次,检查服务器上的队列深度设置。如果您的队列深度非常高,您的服务器将在高利用率期间看到更高的延迟。队列深度是存储告诉服务器限制其 IO 以允许存储赶上的一种方式。32 是一个很好的平均数,我见过的大多数服务器操作系统和大多数存储设备都支持它。我也看到过更高和更低的工作,但如果它设置为 1024 或其他,这可以解释高等待时间。在队列深度非常高的情况下,服务器将它想做的所有事情都排入队列,然后存储以与队列深度低很多的情况下一样快的速度执行。由于服务器从某物进入队列和离开队列开始测量等待时间,因此等待时间会增加。
最后,检查服务器的错误日志。确保没有传输级别问题(如磁盘超时或路径故障)。如果有,您需要查看开关。
它的测量结果与在服务器上没有什么不同:传入的 IO 请求多于可用硬件资源可以处理的数量。
SAN 管理软件报告的高 IO 等待意味着 SAN 硬件无法满足 SAN 客户端的需求。这要么是因为您的硬件没有足够的负载能力,要么可能是某些地方出现故障或性能不佳。
导致性能不佳的缓慢故障驱动器实际上很常见,尤其是在 RAID5 设置中。提取您所有驱动器的 SMART 日志,我敢打赌您会发现一个驱动器具有非常多的更正错误。(纠正这些错误需要时间。如果在一定时间内纠正了单个错误,则 RAID 控制器不会记录错误。但是堆积了很多这些错误,加起来会花费很多时间。这就是你如何获得糟糕的表现。)