iostat如何计算CPU占用空闲时间来考虑闲置百分比或%iowait?

我正在通过iostat手册页。 据此,

  %iowait Show the percentage of time that the CPU or CPUs were idle during which the system had an outstanding disk I/O request. %idle Show the percentage of time that the CPU or CPUs were idle during which the system did not have an outstanding disk I/O request. 

我不明白iostat是如何计算I / O请求是否优秀。

iowait基本上是发送给要被服务的设备的I / O请求的平均时间(以毫秒为单位)。 这包括队列中的请求花费的时间以及花费在队列中的时间。

从io调度程序的前端以每个io为基础进行测量,直到io完成为止。 它涵盖了通过调度程序,驱动程序,控制器,运输(san)以及完成每个io所需的存储所需的时间。 存储完成的I / O请求的平均时间(以毫秒为单位),包括请求在调度程序队列中花费的时间以及为存储服务所花费的时间。

正在传输的IO有多个阶段。 应用程序发送一个IO之后,会为它分配一个请求,当请求被授予时,内核会查看它是否可以将io合并到任何现有的请求队列中。 在请求队列中花费的时间会增加总服务时间。 然后合并完成后,io被提交到存储。 如果存储器处于压力下或无法处理IO编号,那么我们的IO必须等待存储器的服务。 所以,基本上有两个等待阶段,iostat计量。

proc文件/ proc / diskstats是它所指的目的。

通过询问内核。 这些信息直接包含在/proc/stat的第一行中,请参阅proc文档 。