从fio测试中理解blktrace

从fio测试中理解blktrace,io,performance-testing,qemu,ceph,blktrace,Io,Performance Testing,Qemu,Ceph,Blktrace,我购买了一台虚拟服务器,它有8个vCPU、16G内存和一个500G ssd卷(由ceph rbd支持)。然后我使用fio测试服务器的IO性能。为了更好地理解fio结果,在测试期间,我还使用blktrace捕获块层IO跟踪 红杉 fio--filename=/dev/vdc--ioengine=libaio--bs=4k--rw=write--size=8G--iodepth=64--numjobs=8--direct=1--runtime=960--name=seqwrite--group\u报

我购买了一台虚拟服务器,它有8个vCPU、16G内存和一个500G ssd卷(由ceph rbd支持)。然后我使用fio测试服务器的IO性能。为了更好地理解fio结果,在测试期间,我还使用blktrace捕获块层IO跟踪

  • 红杉

    fio--filename=/dev/vdc--ioengine=libaio--bs=4k--rw=write--size=8G--iodepth=64--numjobs=8--direct=1--runtime=960--name=seqwrite--group\u报告

  • 兰德

    fio--filename=/dev/vdc--ioengine=libaio--bs=4k--rw=randread--size=8G--iodepth=64--numjobs=8--direct=1--runtime=960--name=randread--group\u报告

  • 我想了解的是seqwrite和randread在块层上的区别

  • 为什么randread拥有大部分I2D,而seqwrite没有
  • 为什么randread没有Q2M
  • (请注意,这不是一个真正的编程问题,因此Stackoverflow不是问这个问题的好地方……也许是一个更好的选择?)

    为什么randread拥有大部分I2D,而seqwrite没有

    您是否意识到您的8个numjobs中的每一个都覆盖了与其他numjobs相同的区域?这意味着,如果相同区域的覆盖足够接近,块层可能会丢弃后续请求(这在顺序情况下有点可能)

    为什么randread没有Q2M

    很难将随机I/O与现有排队I/O进行反向合并,因为它通常是不连续的