我有CPU I / O等待稳定在50%左右,但是当我运行iostat 1
它显示很less或没有磁盘活动。
什么原因导致等待没有iops?
注意:这里没有NFS或FUSE文件系统,但它使用Xen虚拟化。
NFS可以做到这一点,如果其他networking文件系统(甚至基于FUSE的设备)具有相似的效果,也不会感到意外。
服务器上的其他虚拟机是否有机会颠覆磁盘?
我知道虚拟化,如果主机节点过载,你可以得到一些奇怪的结果。
如果这是使用基于实例的存储的Amazon EC2 Xen环境,请让Amazon检查包含此映像的主机的运行状况。
如果这是一个可以访问虚拟机pipe理程序的Xen环境,那么从外部检查用于xvda和xvdb设备的磁盘映像(文件,networking,LVM-slice等)的IOwait。 一般而言,您还需要检查I / O系统,因为其他磁盘设备可能垄断了系统资源。
iostat -txk 5
通常是一个很好的启动诊断工具。 对于所有可用的设备,它需要5秒钟的I / O总结,因此在虚拟机映像的进入和终止都很有用。
检查可用的文件描述符/ inode。 当你达到极限,他们交换和模仿艾奥瓦
编辑
我看到你正在使用xen,看看你目前的中断,你可能会发现blkif比正常高。
现在已经晚了,但是安装了munin,它确实有助于未来的debugging。
sudo sysctl vm.block_dump=1
然后检查dmesg以查看正在执行块读取/写入或弄脏inode。
还要检查limits.conf中的nofile限制,一个进程可能会请求更多的文件,而不是允许打开。
如果没有其他虚拟机正在压缩硬盘,那么做
hdparm -f
在底层的物理磁盘上。 磁盘caching可能无法正确工作。 这将刷新存储在caching中的数据,并且可以不断监视I / O,在刷新后是否要重新升起。 如果是的话,这将是一个caching问题。
在平均负载的情况下,我看到阻塞的networking操作(即长时间调用外部数据库服务器)增加。 我不知道,但我猜测networkingIO可以导致CPU等待上升? 谁能确认?
可能是环回设备,它们本身通过networking进行安装。
在我的机器上,NFS是最大的IO-WAIT“生产者”。 我的笔记本电脑中有一个固态硬盘,所以“真正的IO”不是问题。 尽pipe如此,我有时候会因为挂载的nfs份额而等待很多IO等待。
SCP有时也似乎导致IO等待,但是远远不够。
这可以是任何事情。 这只是意味着有些事情正在等待I / O操作的结束。 你可以通过ps找出它是什么进程,然后将gdb附加到它并检查回溯,以确定哪个呼叫挂起(通常这是一些networking相关的东西或突然断开的磁盘)。 对于fd信息,请查看/ proc。
在RAID发生故障之前,我也经历过一个类似的问题,一些SATA弯曲的SATA电缆开始出现故障。
CPU使用率接近0%,但四核系统上的一个或多个CPU在IOwait上花费了100%的时间长时间(通过top
多线cpu显示),IOps和带宽非常低通过iostat
find),但突发性高的中断活动。 在任何磁盘访问(即从某人的emacs
会话自动保存)期间,交互式命令行使用都是痛苦的,但是一旦IOwait周期过去了(大概重试之后操作成功),就可以容忍这种情况了。