前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >LINUX IOWAIT 是怎么回事,和数据库性能有关吗? (翻译)

LINUX IOWAIT 是怎么回事,和数据库性能有关吗? (翻译)

作者头像
AustinDatabases
发布2023-09-06 10:34:18
1200
发布2023-09-06 10:34:18
举报
文章被收录于专栏:AustinDatabasesAustinDatabases

我见过很多Linux性能工程师将CPU使用率中的“IOWait”部分视为指示系统是否受到I/O限制的东西。在本博客文章中,我将解释为什么这种方法是不可靠的,并介绍你可以使用的更好的指标。

让我们先进行一个小实验——在系统上产生大量的I/O使用:

sysbench --threads=8 --time=0 --max-requests=0 fileio --file-num=1 --file-total-size=10G --file-io-mode=sync --file-extra-flags=direct --file-test-mode=rndrd run

截止目前为止,一切都OK,可以看到I/O密集型工作负载明显对应于高的IOWait值(在vmstat中的“wa”列)。让我们继续运行我们的I/O限制工作负载并加入一个占用CPU大量负载:

sysbench --threads=8 --time=0 cpu run

发生了什么?IOWait完全消失了,现在这个系统看起来完全没有受到I/O限制!

实际上,我们的第一个工作负载没有改变——它仍然受到I/O限制;只是当我们查看“IOWait”时,它变得看不见了!

要理解发生了什么,我们真的需要理解“IOWait”是什么以及它是如何计算的。

有一篇很好的文章对这个主题进行了更详细的介绍,但基本上,“IOWait”是闲置的CPU时间。如果CPU核因为没有要执行的工作而空闲,那么这段时间就被归到“idle”中。然而,如果CPU核因为某个进程正在等待磁盘而处于空闲状态,则I/O时间被归类到“IOWait”中。

然而,如果一个进程正在等待磁盘I/O,但是系统中的其他进程可以使用CPU,那么这段时间将会被计入这些进程的用户/系统时间,而不是“IOWait”。

由于这种记账方式,其他有趣的行为也是可能的。现在,让我们不再运行8个I/O限制的线程,而是在4核虚拟机上运行一个I/O限制的进程:

sysbench --threads=1 --time=0 --max-requests=0 fileio --file-num=1 --file-total-size=10G --file-io-mode=sync --file-extra-flags=direct --file-test-mode=rndrd run

即使这个进程完全受到I/O限制,我们也可以看到IOWait(wa)并不是特别高,不到25%。在有32、64或更多核的大型系统上,这样完全受到I/O限制的进程几乎不可见,产生一位数字的IOWait百分比。

因此,高IOWait显示系统中许多进程在等待磁盘I/O,但即使IOWait很低,磁盘I/O在系统上的某些进程中可能仍会有瓶颈。

如果IOWait不可靠,那么什么指标可以取而代之,可以为您提供更好的可见性?

首先,查看应用程序特定的可观察性。如果应用程序已经进行了良好的仪表化,它往往最好知道何时会受到磁盘的限制,以及哪些特定任务受到了I/O限制。

如果您只能访问Linux指标,请查看vmstat中的“b”列,这对应于被阻塞在磁盘I/O上的进程。即使是CPU密集负载并发进行,这将显示这些进程,而遮盖了IOWait:

最后,您可以查看每个进程的统计信息,以查看哪些进程正在等待磁盘I/O

原文 https://www.percona.com/blog/understanding-linux-iowait/

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-07-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档