【问题标题】:understanding iostat %utilization了解 iostat %utilization
【发布时间】:2015-05-11 11:45:48
【问题描述】:

用于测试磁盘可以达到的吞吐量限制

dd if=/dev/zero of=test bs=4k count=25000 conv=fdatasync

多次运行后,平均速度约为 130 MB/s

现在当在这些系统上运行 cassandra 时,我正在使用监控磁盘使用情况

iostat -dmxt 30 sdd sdb sdc

我想确保我正确地解释了某些条目,如下所示。

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
sdc               0.00  2718.60  186.30   27.20    17.87    12.06   287.13    44.98  215.06   2.79  59.58

即使 rMB/s + wMB/s 的总和应该大致等于 %util(disk throughput which is 130MB/s) 并且我假设一些利用率用于 seek ,但差异是否足够大以占用大约 24% 的利用率。

提前感谢您的帮助。

【问题讨论】:

  • 虽然吞吐量可能是 130 MB/秒,但该磁盘设备可以执行多少 IO 操作/秒? SATA 驱动器通常每秒可以执行大约 60-70 次随机 IO 操作。尝试将随机 512 字节块直接写入原始磁盘设备,其中实际设备是单个 SATA 磁盘。您很幸运能够获得 40 kB/秒的吞吐量,并且在执行这些写入时您会看到 100% 的利用率。
  • 感谢 Andrew,所以看起来您说的是随机写入,在充分利用的情况下获得非常低的吞吐量并不少见。但是,我如何从磁盘的角度估计我的一个节点的能力。 cassandra 只进行随机读取,所有写入都是顺序的。我无法衡量我拥有的 SATA 磁盘将支持多少操作,或者即使我选择更昂贵的 SSD?

标签: performance iostat


【解决方案1】:

频繁的旋转/搜索确实需要大量(延迟)时间。在我的测试中,顺序 io 和随机 io 之间的 io 带宽约为 3 倍。另外,最好使用fio (https://github.com/axboe/fio) 运行此类测试,例如直接 io,具有适当扇区大小(256kb 或 512kb - 取决于控制器的支持)的顺序读/写和 libaio 作为 io 引擎,io 队列深度 64。测试会受到很大的控制。

【讨论】:

    猜你喜欢
    • 2013-02-03
    • 1970-01-01
    • 2017-04-17
    • 2020-03-15
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2012-08-18
    • 2012-09-08
    相关资源
    最近更新 更多