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

705e79a2ed5c01a8dee776d6b6fda2a9.png

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共950人左右 1 + 2 + 3)新人会进入3群

我见过很多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

da07a34018c9bc3518f9b70ff336a602.png

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

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

3786333ae9fb7ed36c575f318ce17cfa.png

发生了什么?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

738a63200c0dda77bd19d8ef7b475044.png

即使这个进程完全受到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:

410f8f23807c213291fbe1ea1c711edd.png

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值