如何使用fio模拟线上环境
線上表現
這里我想通過fio來模擬線上的IO場景,那么如何模擬呢?
首先使用iostat看線上某個盤的 使用情況,這里我們需要關注的是 avgrq-sz, avgrq-qz.
#iostat -dx 1 1000 /dev/sdk Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdk 0.22 16.32 71.08 49.98 23544.95 19763.38 715.45 0.65 5.34 7.64 2.08 5.21 63.04Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdk 0.00 0.00 81.00 78.00 26968.00 39936.00 841.56 143.32 683.93 38.35 1354.35 6.29 100.00Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdk 0.00 0.00 115.00 10.00 36940.00 5120.00 672.96 156.64 167.23 30.00 1745.40 7.99 99.90Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdk 0.00 44.00 107.00 28.00 37924.00 13496.00 761.78 149.48 584.97 33.19 2693.57 7.41 100.00Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdk 2.00 0.00 153.00 5.00 40896.00 2560.00 550.08 158.39 160.71 29.68 4170.20 6.33 100.00Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdk 0.00 0.00 89.00 88.00 28864.00 44424.00 828.11 143.19 2087.81 22.73 4176.35 5.65 100.00線下模擬
那么如何使用fio去模擬這個大小呢?
fio中最重要的一個參數是: -bs=xxxx, 我們經常看到這里是4k,16k,128k等等的測試數據,這里其實就是request 從elevator中出來,dispatch到driver的時候的大小。
線上機器 大小是 841.56 sector (420.78KB.)的時候, 意味著,這里, -bs=420k 比較合適。
需要注意的:
avgqu-sz 和fio的iodepth 的關系
iodepth = 1, iostat avgqu-sz =
#fio -filename=/apxxxxxxx/disk3/test -direct=1 -iodepth=1 -thread -rw=randrw -rwmixread=70 -rwmixwrite=30 -ioengine=libaio -bs=4k -size=8G -numjobs=4 -name="EBS 4K randwrite test" -group_reporting -runtime=50000 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc 0.00 0.00 226.00 125.00 904.00 500.00 8.00 12.00 11.36 17.29 0.62 2.85 100.00Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc 0.00 1.00 23.00 6.00 92.00 28.00 8.28 12.91 16.41 20.61 0.33 34.48 100.00Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc 0.00 0.00 186.00 99.00 744.00 396.00 8.00 12.21 30.16 39.33 12.94 3.51 100.00Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc 0.00 0.00 207.00 108.00 828.00 432.00 8.00 12.00 12.87 19.07 1.00 3.17 100.00iodepth = 100, iostat avgqu-sz =
#fio -filename=/axxxxxx/disk3/test -direct=1 -iodepth=100 -thread -rw=randrw -rwmixread=70 -rwmixwrite=30 -ioengine=libaio -bs=4k -size=8G -numjobs=4 -name="EBS 4K randwrite test" -group_reporting -runtime=50000 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc 0.00 0.00 180.00 68.00 720.00 272.00 8.00 111.30 230.22 231.29 227.40 2.85 70.80Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc 0.00 0.00 241.00 103.00 964.00 412.00 8.00 159.43 392.41 395.76 384.58 2.91 100.00Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc 0.00 0.00 254.00 89.00 1016.00 356.00 8.00 158.65 465.12 436.02 548.17 2.92 100.00Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc 0.00 0.00 261.00 114.00 1044.00 456.00 8.00 156.64 395.21 440.19 292.23 2.67 100.00開始模擬: cfq對SYNC, ASYNC的影響
Case1: fio 使用-direct=1
這里read write都是SYNC, 由于cfq 的影響,保SYNC, 因為線上的場景是 SYNC 的read, 和ASYNC的 writeback,所以這樣模擬是不對的
command:
#fio -filename=/apsarapangu/disk3/test -direct=1 -iodepth=130 -thread -rw=randrw -rwmixread=70 -rwmixwrite=30 -ioengine=libaio -bs=420k -size=8G -numjobs=4 -name="EBS 4K randwrite test" -group_reporting -runtime=50000performance:
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc 0.00 0.00 106.00 56.00 43084.00 23868.00 826.57 297.76 609.85 539.71 742.61 6.17 100.00Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc 0.00 0.00 100.00 57.00 40740.00 22752.00 808.82 307.53 1015.72 893.46 1230.21 6.37 100.00Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc 0.00 0.00 95.00 50.00 37556.00 20160.00 796.08 278.35 1181.94 1041.71 1448.40 6.90 100.00Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc 0.00 1.00 59.00 74.00 23940.00 28568.00 789.59 223.16 2312.37 1595.39 2884.01 7.52 100.00Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc 0.00 0.00 79.00 32.00 32340.00 12956.00 816.14 299.97 1007.95 744.37 1658.66 9.01 100.00Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc 0.00 0.00 124.00 41.00 50616.00 17656.00 827.54 303.84 1060.12 906.26 1525.46 6.06 100.00Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util sdc 0.00 0.00 106.00 47.00 43368.00 18532.00 809.15 290.17 1676.39 1099.78 2976.83 6.54 100.00Analyze: Not I want!
Case2: fio 不使用-direct=1
這里read write都是SYNC, 由于cfq 的影響,保SYNC, 因為線上的場景是 SYNC 的read, 和ASYNC的 writeback,這里就和線上比較相似。
command:
#fio -filename=/apsarapangu/disk3/test -iodepth=130 -thread -rw=randrw -rwmixread=70 -rwmixwrite=30 -ioengine=libaio -bs=420k -size=8G -numjobs=4 -name="EBS 4K randwrite test" -group_reporting -runtime=50000when cfq:
#echo cfq > /sys/block/sdc/queue/schedulerPerformance:
- when read and writeback reproduce at the same time:
- cfq have a good performance better than noop at this scene!
- Cause cfq and split SYNC and ASYNC, SYNC have a better priority!
when noop:
#echo noop > /sys/block/sdc/queue/schedulerPerformance:
- When read and writeback reproduce at the same time
轉載于:https://www.cnblogs.com/muahao/p/9390204.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的如何使用fio模拟线上环境的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 梦到雨过天晴是什么意思
- 下一篇: 梦到丈夫洗澡怎么回事