美文网首页
I/O %util 已死

I/O %util 已死

作者: linjinhe | 来源:发表于2019-08-17 15:07 被阅读0次

    TL;DR

    SSD 下的 %util 已经没有任何作用了。

    %util

    iostat 命令可用来查看系统的 I/O 情况:

    Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
    
    scd0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00    0.00    0.00   0.00   0.00
    vda               0.00     0.00    2.02    0.00     0.01     0.00    12.00     0.00    0.00    0.00    0.00   0.00   0.00
    

    %util 这一列一直被认为是表示 I/O 设备工作的“饱和度”。简单地说,就是 I/O 设备有请求需要处理的工作时间比例。

    如果设备同一时间只能处理一个请求,比如 NoRaid 的 HDD, 用 %util 来表示 I/O 设备工作的“饱和度”没有任何问题。

    但是,SSD 由于其内部的并行处理机制,同一时间可以处理多个请求,所以 %util 不能用来衡量这个设备的工作饱和度。

    为什么会出现这种情况?
    一个原因就是 I/O 设备都没有把内部架构、并行度暴露给内核。

    为什么不把 I/O 设备的内部架构暴露给内核?(以下纯属本人瞎想)
    一个原因是历史原因:HDD 的结构其实很简单。现在为了兼容以前,I/O 子系统没有做重新的设计。
    另一个原因是:I/O 设备是有状态的,操作系统就算知道你的内部结构也比较难做什么优化。不像 CPU,线程在哪个核心上跑都差不多。

    参考文章

    相关文章

      网友评论

          本文标题:I/O %util 已死

          本文链接:https://www.haomeiwen.com/subject/olfksctx.html