fio磁盘压测工具

news2024/10/6 1:44:33

文章目录

    • 背景
    • 安装
    • 测试
      • 如何模拟现实中的IO
    • fio参数解释
      • 【1】随机读测试
      • 【2】随机写测试
      • 【3】 顺序读测试
      • 【4】 顺序写测试
    • numjobs=5 测试
      • 随机读
      • 随机写
      • 顺序读
      • 顺序写
    • blktrace+fio 模拟真实IO场景
      • 查看 blktrace 记录的结果
      • 将结果转化为二进制文件
      • 使用 fio 重放日志
  • 结论

背景

因为是虚拟机,所以对于性能很虚。借助fio进行测试
在这里插入图片描述

安装

yum install fio

测试

以下测试 numjobs均为1。 这是最理想的情况。现实中不会只有一个job进行io。一定会竞争,当竞争激烈时cpu就飙了。
为了快速得到测试结果先这样测。

如何模拟现实中的IO

通常情况下,应用程序的 I/O 都是读写并行的,而且每次的 I/O 大小也不一定相同。所以,理想情况并不能精确模拟应用程序的 I/O 模式。

那怎么才能精确模拟应用程序的 I/O 模式呢?

幸运的是,fio 支持 I/O 的重放。借助前面提到过的 blktrace,再配合上 fio,就可以实现对应用程序 I/O 模式的基准测试。你需要先用 blktrace ,记录磁盘设备的 I/O 访问情况;然后使用 fio ,重放 blktrace 的记录。

fio参数解释

direct,表示是否跳过系统缓存。上面示例中,我设置的 1 ,就表示跳过系统缓存。

iodepth,表示使用异步 I/O(asynchronous I/O,简称 AIO)时,同时发出的 I/O 请求上限。在上面的示例中,我设置的是 64。

rw,表示 I/O 模式。我的示例中, read/write 分别表示顺序读 / 写,而 randread/randwrite 则分别表示随机读 / 写。

ioengine,表示 I/O 引擎,它支持同步(sync)、异步(libaio)、内存映射(mmap)、网络(net)等各种 I/O 引擎。上面示例中,我设置的 libaio 表示使用异步 I/O。

bs,表示 I/O 的大小。示例中,我设置成了 4K(这也是默认值)。

filename,表示文件路径,当然,它可以是磁盘路径(测试磁盘性能),也可以是文件路径(测试文件系统性能)。示例中,我把它设置成了磁盘 /dev/sdb。不过注意,用磁盘路径测试写,会破坏这个磁盘中的文件系统,所以在使用前,你一定要事先做好数据备份。

【1】随机读测试

fio -name=randread -direct=1 -iodepth=64 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1-runtime=1000 -group_reporting -filename=/dev/sda2

randread: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
fio-3.7
Starting 1 process
Jobs: 1 (f=0): [f(1)][100.0%][r=27.7MiB/s,w=0KiB/s][r=7088,w=0 IOPS][eta 00m:00s]
randread: (groupid=0, jobs=1): err= 0: pid=8494: Mon Dec 26 15:38:53 2022
   read: IOPS=7318, BW=28.6MiB/s (29.0MB/s)(1024MiB/35817msec)
    slat (nsec): min=1605, max=33837k, avg=130443.48, stdev=265911.59
    clat (usec): min=205, max=42456, avg=8608.58, stdev=2235.62
     lat (usec): min=209, max=42601, avg=8739.48, stdev=2256.27
    clat percentiles (usec):
     |  1.00th=[ 6718],  5.00th=[ 6915], 10.00th=[ 7373], 20.00th=[ 8094],
     | 30.00th=[ 8160], 40.00th=[ 8225], 50.00th=[ 8291], 60.00th=[ 8356],
     | 70.00th=[ 8455], 80.00th=[ 8586], 90.00th=[ 9110], 95.00th=[ 9765],
     | 99.00th=[20579], 99.50th=[24249], 99.90th=[34341], 99.95th=[35914],
     | 99.99th=[42206]
   bw (  KiB/s): min=24742, max=36383, per=99.54%, avg=29141.79, stdev=1966.38, samples=71
   iops        : min= 6185, max= 9095, avg=7285.18, stdev=491.52, samples=71
  lat (usec)   : 250=0.01%, 500=0.01%, 750=0.01%, 1000=0.01%
  lat (msec)   : 2=0.01%, 4=0.01%, 10=95.64%, 20=3.25%, 50=1.09%
  cpu          : usr=0.08%, sys=16.38%, ctx=235543, majf=0, minf=74
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
     issued rwts: total=262144,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
   READ: bw=28.6MiB/s (29.0MB/s), 28.6MiB/s-28.6MiB/s (29.0MB/s-29.0MB/s), io=1024MiB (1074MB), run=35817-35817msec

Disk stats (read/write):
  sda: ios=260147/221, merge=246/218, ticks=46995/85, in_queue=2680, util=99.88%

【2】随机写测试

对于磁盘分区需要先umount
fio -name=randwrite -direct=1 -iodepth=64 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs1 -runtime=1000 -group_reporting -filename=/dev/sda2

fioo -name=randwrite -direct=1 -iodepth=64 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs1 -runtime=1000 -group_reporting -filename=/dev/sda2
randwrite: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
fio-3.7
fio: /dev/sda2 appears mounted, and 'allow_mounted_write' isn't set. Aborting.


Run status group 0 (all jobs):
 ⚡ root@pigsty2-179  /etc/yum.repos.d  fio -name=randwrite -direct=1 -iodepth=64 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/data
 ✘ ⚡ root@pigsty2-179  /etc/yum.repos.d  umount /data
 ⚡ root@pigsty2-179  /etc/yum.repos.d  df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs         32G     0   32G   0% /dev
tmpfs            32G     0   32G   0% /dev/shm
tmpfs            32G  8.5M   32G   1% /run
tmpfs            32G     0   32G   0% /sys/fs/cgroup
/dev/sda1        40G  3.5G   37G   9% /
tmpfs           6.3G     0  6.3G   0% /run/user/0
 ⚡ root@pigsty2-179  /etc/yum.repos.d 
 ⚡ root@pigsty2-179  /etc/yum.repos.d  fio -name=randwrite -direct=1 -iodepth=64 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/sda2
randwrite: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
fio-3.7
Starting 1 process
Jobs: 1 (f=1): [w(1)][100.0%][r=0KiB/s,w=27.9MiB/s][r=0,w=7132 IOPS][eta 00m:00s]
randwrite: (groupid=0, jobs=1): err= 0: pid=10170: Mon Dec 26 15:43:30 2022
  write: IOPS=7017, BW=27.4MiB/s (28.7MB/s)(1024MiB/37354msec)
    slat (usec): min=3, max=18306, avg=138.47, stdev=71.90
    clat (usec): min=219, max=73243, avg=8973.12, stdev=1054.38
     lat (usec): min=226, max=73782, avg=9111.89, stdev=1069.81
    clat percentiles (usec):
     |  1.00th=[ 8225],  5.00th=[ 8586], 10.00th=[ 8717], 20.00th=[ 8717],
     | 30.00th=[ 8848], 40.00th=[ 8848], 50.00th=[ 8848], 60.00th=[ 8979],
     | 70.00th=[ 8979], 80.00th=[ 9110], 90.00th=[ 9241], 95.00th=[ 9503],
     | 99.00th=[10683], 99.50th=[10945], 99.90th=[11731], 99.95th=[33817],
     | 99.99th=[57934]
   bw (  KiB/s): min=19737, max=28958, per=99.64%, avg=27969.24, stdev=1167.02, samples=74
   iops        : min= 4934, max= 7239, avg=6991.97, stdev=291.68, samples=74
  lat (usec)   : 250=0.01%, 500=0.01%, 750=0.01%, 1000=0.01%
  lat (msec)   : 2=0.01%, 4=0.01%, 10=97.52%, 20=2.38%, 50=0.06%
  lat (msec)   : 100=0.03%
  cpu          : usr=3.07%, sys=8.69%, ctx=261529, majf=0, minf=11
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
     issued rwts: total=0,262144,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
  WRITE: bw=27.4MiB/s (28.7MB/s), 27.4MiB/s-27.4MiB/s (28.7MB/s-28.7MB/s), io=1024MiB (1074MB), run=37354-37354msec

Disk stats (read/write):
  sda: ios=133/260073, merge=0/238, ticks=235/49798, in_queue=299, util=100.00%

【3】 顺序读测试

fio -name=read -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtim=1000 -group_reporting -filename=/dev/sda2

fio -name=read -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtim=1000 -group_reporting -filename=/dev/sda2
read: (g=0): rw=read, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
fio-3.7
Starting 1 process
Jobs: 1 (f=1)
read: (groupid=0, jobs=1): err= 0: pid=10946: Mon Dec 26 15:45:13 2022
   read: IOPS=111k, BW=435MiB/s (456MB/s)(1024MiB/2356msec)
    slat (nsec): min=1444, max=505137, avg=4120.63, stdev=18433.16
    clat (usec): min=282, max=1462, avg=569.87, stdev=77.20
     lat (usec): min=283, max=1464, avg=574.22, stdev=77.41
    clat percentiles (usec):
     |  1.00th=[  457],  5.00th=[  482], 10.00th=[  494], 20.00th=[  510],
     | 30.00th=[  529], 40.00th=[  537], 50.00th=[  553], 60.00th=[  570],
     | 70.00th=[  586], 80.00th=[  627], 90.00th=[  676], 95.00th=[  717],
     | 99.00th=[  799], 99.50th=[  873], 99.90th=[ 1057], 99.95th=[ 1156],
     | 99.99th=[ 1434]
   bw (  KiB/s): min=435305, max=446666, per=99.49%, avg=442808.75, stdev=5308.66, samples=4
   iops        : min=108826, max=111666, avg=110702.00, stdev=1327.16, samples=4
  lat (usec)   : 500=12.83%, 750=84.96%, 1000=2.01%
  lat (msec)   : 2=0.20%
  cpu          : usr=17.32%, sys=25.44%, ctx=9010, majf=0, minf=74
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
     issued rwts: total=262144,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
   READ: bw=435MiB/s (456MB/s), 435MiB/s-435MiB/s (456MB/s-456MB/s), io=1024MiB (1074MB), run=2356-2356msec

Disk stats (read/write):
  sda: ios=8232/2, merge=230342/0, ticks=3074/1, in_queue=0, util=95.73%

【4】 顺序写测试

fio -name=write -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtme=1000 -group_reporting -filename=/dev/sda2
write: (g=0): rw=write, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
fio-3.7
Starting 1 process
Jobs: 1 (f=1): [W(1)][100.0%][r=0KiB/s,w=386MiB/s][r=0,w=98.7k IOPS][eta 00m:00s]
write: (groupid=0, jobs=1): err= 0: pid=11780: Mon Dec 26 15:47:30 2022
  write: IOPS=64.3k, BW=251MiB/s (263MB/s)(1024MiB/4077msec)
    slat (nsec): min=1478, max=456245, avg=5188.01, stdev=19433.33
    clat (usec): min=198, max=137994, avg=988.56, stdev=2721.27
     lat (usec): min=294, max=137996, avg=994.00, stdev=2724.30
    clat percentiles (usec):
     |  1.00th=[   494],  5.00th=[   529], 10.00th=[   553], 20.00th=[   586],
     | 30.00th=[   619], 40.00th=[   644], 50.00th=[   668], 60.00th=[   685],
     | 70.00th=[   709], 80.00th=[   742], 90.00th=[   799], 95.00th=[  2737],
     | 99.00th=[  6849], 99.50th=[  7373], 99.90th=[ 23200], 99.95th=[ 33817],
     | 99.99th=[137364]
   bw (  KiB/s): min=35235, max=404008, per=98.76%, avg=253998.25, stdev=152575.81, samples=8
   iops        : min= 8808, max=101002, avg=63499.25, stdev=38144.21, samples=8
  lat (usec)   : 250=0.01%, 500=1.46%, 750=81.89%, 1000=9.19%
  lat (msec)   : 2=1.81%, 4=1.74%, 10=3.57%, 20=0.21%, 50=0.08%
  lat (msec)   : 100=0.02%, 250=0.02%
  cpu          : usr=11.46%, sys=23.75%, ctx=15521, majf=0, minf=12
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
     issued rwts: total=0,262144,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
  WRITE: bw=251MiB/s (263MB/s), 251MiB/s-251MiB/s (263MB/s-263MB/s), io=1024MiB (1074MB), run=4077-4077msec

Disk stats (read/write):
  sda: ios=20/16703, merge=0/226614, ticks=5/5303, in_queue=421, util=97.89%

numjobs=5 测试

随机读

fio -name=randread -direct=1 -iodepth=64 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=5 -runtime=1000 -group_reporting -filename=/dev/sda2
randread: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
...
fio-3.7
Starting 5 processes
Jobs: 3 (f=3): [r(2),_(2),r(1)][98.5%][r=30.6MiB/s,w=0KiB/s][r=7839,w=0 IOPS][eta 00m:03s]
randread: (groupid=0, jobs=5): err= 0: pid=18938: Mon Dec 26 16:11:20 2022
   read: IOPS=6774, BW=26.5MiB/s (27.7MB/s)(5120MiB/193491msec)
    slat (usec): min=2, max=9616, avg=729.70, stdev=198.85
    clat (usec): min=173, max=148709, avg=46298.41, stdev=8574.87
     lat (usec): min=178, max=150138, avg=47028.78, stdev=8701.73
    clat percentiles (msec):
     |  1.00th=[   34],  5.00th=[   36], 10.00th=[   37], 20.00th=[   44],
     | 30.00th=[   45], 40.00th=[   45], 50.00th=[   45], 60.00th=[   46],
     | 70.00th=[   47], 80.00th=[   50], 90.00th=[   55], 95.00th=[   63],
     | 99.00th=[   77], 99.50th=[   82], 99.90th=[  101], 99.95th=[  109],
     | 99.99th=[  122]
   bw (  KiB/s): min= 3056, max=13445, per=20.00%, avg=5419.74, stdev=728.08, samples=1924
   iops        : min=  764, max= 3361, avg=1354.88, stdev=182.01, samples=1924
  lat (usec)   : 250=0.01%, 500=0.01%, 750=0.01%, 1000=0.01%
  lat (msec)   : 2=0.01%, 4=0.01%, 10=0.27%, 20=0.20%, 50=80.48%
  lat (msec)   : 100=18.94%, 250=0.10%
  cpu          : usr=0.36%, sys=2.98%, ctx=1308829, majf=0, minf=377
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
     issued rwts: total=1310720,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
   READ: bw=26.5MiB/s (27.7MB/s), 26.5MiB/s-26.5MiB/s (27.7MB/s-27.7MB/s), io=5120MiB (5369MB), run=193491-193491msec

Disk stats (read/write):
  sda: ios=1306124/427, merge=2632/5, ticks=338644/791, in_queue=1036, util=100.00%


随机写

fio -name=randwrite -direct=1 -iodepth=64 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=5 -runtime=1000 -group_reporting -filename=/dev/sda2
randwrite: (g=0): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
...
fio-3.7
Starting 5 processes
Jobs: 3 (f=3): [w(3),_(2)][98.1%][r=0KiB/s,w=27.8MiB/s][r=0,w=7104 IOPS][eta 00m:04s]
randwrite: (groupid=0, jobs=5): err= 0: pid=21669: Mon Dec 26 16:18:55 2022
  write: IOPS=6276, BW=24.5MiB/s (25.7MB/s)(5120MiB/208839msec)
    slat (usec): min=2, max=103111, avg=788.15, stdev=312.09
    clat (usec): min=203, max=237897, avg=49999.91, stdev=9339.97
     lat (usec): min=211, max=239240, avg=50788.71, stdev=9471.33
    clat percentiles (msec):
     |  1.00th=[   36],  5.00th=[   38], 10.00th=[   42], 20.00th=[   46],
     | 30.00th=[   47], 40.00th=[   47], 50.00th=[   49], 60.00th=[   51],
     | 70.00th=[   53], 80.00th=[   55], 90.00th=[   58], 95.00th=[   63],
     | 99.00th=[   83], 99.50th=[   93], 99.90th=[  117], 99.95th=[  131],
     | 99.99th=[  222]
   bw (  KiB/s): min= 2560, max=14914, per=19.99%, avg=5018.74, stdev=642.60, samples=2077
   iops        : min=  640, max= 3728, avg=1254.63, stdev=160.67, samples=2077
  lat (usec)   : 250=0.01%, 500=0.01%, 750=0.01%, 1000=0.01%
  lat (msec)   : 2=0.01%, 4=0.01%, 10=0.22%, 20=0.37%, 50=57.28%
  lat (msec)   : 100=41.84%, 250=0.28%
  cpu          : usr=0.47%, sys=3.10%, ctx=1310305, majf=0, minf=52
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
     issued rwts: total=0,1310720,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
  WRITE: bw=24.5MiB/s (25.7MB/s), 24.5MiB/s-24.5MiB/s (25.7MB/s-25.7MB/s), io=5120MiB (5369MB), run=208839-208839msec

Disk stats (read/write):
  sda: ios=40/1306810, merge=0/2624, ticks=12/364641, in_queue=2495, util=100.00%

顺序读

fio -name=read -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=4k -size=1G -numjobs=5 -runtime=1000 -group_reporting -filename=/dev/sda2
read: (g=0): rw=read, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=libaio, iodepth=64
...
fio-3.7
Starting 5 processes
Jobs: 2 (f=2): [_(1),R(1),_(1),R(1),_(1)][100.0%][r=393MiB/s,w=0KiB/s][r=101k,w=0 IOPS][eta 00m:00s]
read: (groupid=0, jobs=5): err= 0: pid=31699: Mon Dec 26 16:43:40 2022
   read: IOPS=110k, BW=428MiB/s (449MB/s)(5120MiB/11950msec)
    slat (nsec): min=1751, max=59508k, avg=29497.74, stdev=296029.22
    clat (usec): min=203, max=64850, avg=2852.81, stdev=1849.92
     lat (usec): min=216, max=64853, avg=2882.43, stdev=1852.10
    clat percentiles (usec):
     |  1.00th=[  758],  5.00th=[ 1074], 10.00th=[ 1352], 20.00th=[ 2040],
     | 30.00th=[ 2376], 40.00th=[ 2573], 50.00th=[ 2704], 60.00th=[ 2835],
     | 70.00th=[ 2999], 80.00th=[ 3228], 90.00th=[ 3949], 95.00th=[ 5014],
     | 99.00th=[ 8848], 99.50th=[11338], 99.90th=[23987], 99.95th=[35390],
     | 99.99th=[59507]
   bw (  KiB/s): min=65708, max=108151, per=19.98%, avg=87663.03, stdev=8082.48, samples=115
   iops        : min=16427, max=27037, avg=21915.53, stdev=2020.61, samples=115
  lat (usec)   : 250=0.01%, 500=0.11%, 750=0.83%, 1000=2.55%
  lat (msec)   : 2=15.80%, 4=70.99%, 10=9.00%, 20=0.59%, 50=0.12%
  lat (msec)   : 100=0.01%
  cpu          : usr=3.72%, sys=6.98%, ctx=49477, majf=0, minf=378
  IO depths    : 1=0.1%, 2=0.1%, 4=0.1%, 8=0.1%, 16=0.1%, 32=0.1%, >=64=100.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.1%, >=64=0.0%
     issued rwts: total=1310720,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=64

Run status group 0 (all jobs):
   READ: bw=428MiB/s (449MB/s), 428MiB/s-428MiB/s (449MB/s-449MB/s), io=5120MiB (5369MB), run=11950-11950msec

Disk stats (read/write):
  sda: ios=27102/119, merge=1279178/0, ticks=21450/236, in_queue=8497, util=99.25%

顺序写


blktrace+fio 模拟真实IO场景

先把
随机读 / 随机写 / 顺序读 / 顺序写 录制下来
再自由组合模拟真是情况
通过 blktrace+fio 的组合使用,得到了应用程序 I/O 模式的基准测试报告。

查看 blktrace 记录的结果

# 随机读
fio -name=randread -direct=1 -iodepth=64 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=5 -runtime=1000 -group_reporting -filename=/dev/sda2
 
# 随机写
fio -name=randwrite -direct=1 -iodepth=64 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=5 -runtime=1000 -group_reporting -filename=/dev/sda2
 
# 顺序读
fio -name=read -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=4k -size=1G -numjobs=5 -runtime=1000 -group_reporting -filename=/dev/sda2
 
# 顺序写
fio -name=write -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=4k -size=1G -numjobs=5 -runtime=1000 -group_reporting -filename=/dev/sda2 


 使用 blktrace 跟踪磁盘上述压测的I/O
$ blktrace /dev/sda2
 
# 查看 blktrace 记录的结果
ll
total 492M
-rw-r--r-- 1 root root 84M Dec 26 16:11 sda2.blktrace.0
-rw-r--r-- 1 root root 54M Dec 26 16:11 sda2.blktrace.1
-rw-r--r-- 1 root root 43M Dec 26 16:11 sda2.blktrace.2
-rw-r--r-- 1 root root 54M Dec 26 16:11 sda2.blktrace.3
-rw-r--r-- 1 root root 26M Dec 26 16:11 sda2.blktrace.4
-rw-r--r-- 1 root root 82M Dec 26 16:11 sda2.blktrace.5
-rw-r--r-- 1 root root 85M Dec 26 16:11 sda2.blktrace.6
-rw-r--r-- 1 root root 67M Dec 26 16:11 sda2.blktrace.7

在这里插入图片描述

将结果转化为二进制文件


# 将结果转化为二进制文件
$ blkparse sda -d sda2.bin

在这里插入图片描述
重复上述机种读写操作之后,录制的IO流量如下

ll -ths
total 2.0G
138M -rw-r--r-- 1 root root 138M Dec 26 16:52 sda2-write.bin
123M -rw-r--r-- 1 root root 123M Dec 26 16:46 sda2-read.bin
134M -rw-r--r-- 1 root root 134M Dec 26 16:42 sda2-randomwrite.bin
1.6G -rw-r--r-- 1 root root 1.6G Dec 26 16:39 sda2-randomread.bin

使用 fio 重放日志

cd /opt/fio/randomwrite

# 使用 fio 重放日志
$ fio --name=replay --filename=/dev/sda2 --direct=1 --read_iolog=sda2-randomread.bin
$ fio --name=replay --filename=/dev/sda2 --direct=1 --read_iolog=sda2-randomwrite.bin

在这里插入图片描述

结论

随机读随机写顺序读顺序写速度
14.8MB/s
18.1MB/s

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/115706.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle 备份与恢复常见的七大问题

为了最大限度保障数据的安全性,同时能在不可预计灾难的情况下保证数据的快速恢复,需要根据数据的类型和重要程度制定相应的备份和恢复方案。在这个过程中,DBA的职责就是要保证数据库(其它数据由其它岗位负责)的高可用和…

Linux常用操作(下)

目录 文件传输 全局查找 管道符 统计数目 vim快捷键 软件安装 用户和组 文件权限 文件传输 yum install lrzsz -y rpm -qa |grep lrzsz 完成后直接将文件拖入xshell即可 全局查找 grep 字符串 文件名 grep colea * grep -r colea *//递归全局查找 管道符 ps -ef…

边缘AI概述

随着移动计算和物联网(IoT)应用程序的爆炸性增长,数十亿移动和物联网设备正在连接到互联网,在网络边缘生成大量数据。因此,在云数据中心收集大量数据会产生极高的延迟和网络带宽使用。 因此,迫切需要将人工…

K8S——调用亲和性

k8s-调度亲和性 简介 Scheduler 是 kubernetes 的调度器,主要的任务是把定义的 pod 分配到集群的节点上。听起来非常简单,但有 很多要考虑的问题: 公平:如何保证每个节点都能被分配资源资源高效利用:集群所有资源最…

为什么NoSQL数据库这么受欢迎?

大数据时代,NoSQL数据库是企业构建数据能力的核心工具之一。近期,在2022腾讯全球数字生态大会NoSQL数据库专场上,腾讯云发布了多项NoSQL产品能力升级,并重点讲解了其背后的自研技术要点及实现细节,分享了腾讯云NoSQL为…

利用Python自动生成请假条,实现高效摸鱼

哈喽兄弟们,今天咱们来实现用Python来批量生成请假条,这回既学了东西又做了事情,两不误~ 本文就将基于一个真实的办公案例进行讲解如何提取Excel内容并创建Word 主要将涉及以下三个知识点 openpyxl 读取 Excel 文件python-docx 写入 Word …

org.springframework.jdbc.BadSqlGrammarException: Error updating database

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! org.springframework.jdbc.BadSqlGrammarException: Error updating database 报错信息: org.springframework.jdbc.BadSqlGrammarException: Error updat…

Python基础入门(一)

文章目录前言Python起源简介常量和表达式什么是变量变量的语法变量的定义变量的命名规则使用变量变量的类型动态类型的变量注释注释是什么注释的基本语法注释的书写规范输入输出通过控制台输出格式化输出输入转义字符运算符算数运算符关系运算符逻辑运算符赋值运算符复合赋值运…

Python高频面试题——迭代器和可迭代对象

无论是面试测试还是运维涉及到python编码岗位时,迭代器和可迭代对象都是绕不开的一个问题,本文对这两个概念进行重点讲解,本文从什么是迭代讲起,然后介绍迭代器和可迭代对象二者的区别,最后通过for 循环和自定义迭代器…

150万奖金:首届6G智能无线通信系统大赛正式上线

通信与人工智能技术的深度融合已成为无线通信系统发展的最重要方向之一,面向6G,通信与AI融合的角度和深度将进一步扩展,迎接“无限”可能。在6G研究的关键发展阶段,由IMT-2030(6G)推进组主办,中国信息通信研究院、华为…

【折腾服务器 3】群晖学习版中安装 Active Backup for Business 及相关配置 =)

Catch UP 书接上回,在 ESXi 中安装了群晖系统,这个系统主要是用来给 Windows 物理机做备份的,因此在本片主要讲解如何配置 Active Backup for Business 软件。 Chapter 1 设置存储空间 上一篇博客中,安装群晖时分配了一个 32GB…

rancher2.6.2 单机及高可用部署

rancher2.6.2 单机及高可用部署 文章目录rancher2.6.2 单机及高可用部署前言单机部署高可用部署k8s集成前言 1、服务器准备 单机部署: 机器名IP地址部署内容cpu核心数内存(G)硬盘(G)rancher-master192.168.0.18rancher2450 高可用部署: 机器名IP地址…

Linux环境下通过命令行连接WIFI

一. 前言 在调试ARTIK时由于Ubuntu系统不是图形化界面,需要下载相关安装包时发现未联网,因此对Linux下采用命令行连接wifi的具体操作步骤进行总结,对自己在操作过程中遇到的相关问题解决方法进行介绍,同时对于LINUX下无线网络调试…

JUC(一):线程池

个人博客地址: http://xiaohe-blog.top/index.php/archives/14/ 文章目录1. 为什么要使用线程池2. Executor3. ThreadPoolExecutor3.1 七个参数3.2 任务队列3.3 拒绝策略4. 创建线程池5. Executors5.1 CachedThreadPool5.2 FixedThreadPool5.3 SingleThreadExecutor…

Vue3 异步组件 suspense

vue在解析我们的组件时, 是通过打包成一个 js 文件,当我们的一个组件 引入过多子组件是,页面的首屏加载时间 由最后一个组件决定 优化的一种方式就是采用异步组件 ,先给慢的组件一个提示语或者 骨架屏 ,内容回来在显示…

大话测试数据(一)

导读:测试数据的准备至关重要,无论是手工测试还是自动化测试都要以良好的测试数据准备为基础。本文为霍格沃兹测试学院特邀嘉宾,某互联网巨头企业资深测试技术专家刘晓光(skytraveler)老师对测试数据管理实践的思考总结…

【K3s】第3篇 解决K3s状态一直是ContainerCreating

目录 1、遇到问题 2、问题解决 2.1 查看docker服务 2.2 增加docker中国镜像源 必看项 2.3 解决docker pull失败 3、结果展示 1、遇到问题 安装部署完k3s时遇到如下问题: sudo kubectl get pods -A pod 容器状态一直为:ContainerCreating 查看容…

现有项目集成seata的记录

背景:现有项目为springcloudnacos 的。但是没有分布式事务处理机制,偶发数据问题,现需要引入seata进行全局事务管理。简单记录一下改造和学习过程,过一段时间自己100%会忘的一干二净,并没有对其进行很深的研究。 前期…

IMX6ULL学习笔记(16)——GPIO输入接口使用【官方SDK方式】

一、GPIO简介 i.MX6ULL 芯片的 GPIO 被分成 5 组,并且每组 GPIO 的数量不尽相同,例如 GPIO1 拥有 32 个引脚, GPIO2 拥有 22 个引脚, 其他 GPIO 分组的数量以及每个 GPIO 的功能请参考 《i.MX 6UltraLite Applications Processor Reference M…

aosp 12/13/lineageos19.1 framework学习编译刷入小米手机,努比亚

hi,学员朋友,大家好! 前期一直有同学在问我这边,学习framework需要什么额外设备么?这里其实我一直前期也是给学员说的,如果你是个新手,刚刚开始可以不用,完全可以跟着课程一起学习&a…