dd if=/dev/zero of=/mnt/data/testfile bs=1

dd if=/dev/zero of=/mnt/data/testfile bs=1

EBS ボリュームをテストして、宣伝されている速度を達成する方法を見つけようとしています。Amazon によると、io1 ボリュームは 16K で 1000MBps または 64,000 IOPS を実現できるとのことです。600MBps を超える速度は見られません。これは、1280GB および 64000 IOPS にプロビジョニングされたボリュームを持つ m5n.2xlarge インスタンス (Nitro カード付き) です。

でゼロを書き込むとddiostat一貫して 100% の使用率が表示されます。

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
nvme1n1           0.00     0.00    0.00 2284.00     0.00   571.00   512.00    15.36    7.19    0.00    7.19   0.44 100.00

parted で最適に調整されたパーティションで XFS ファイルシステムを使用しようとしました。また、ブロック デバイス nvme1n1 に直接 dd 書き込みを試しました。どちらの方法でもパフォーマンスはほぼ同じです。

このテストでは、1MB のブロック サイズを使用して dd で書き込みます。

# dd if=/dev/zero of=/mnt/data/testfile bs=1M

私が理解できないのは、4K ブロックを書き込むとほぼ同じ結果が得られる理由です。

Device:         rrqm/s   wrqm/s     r/s     w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await r_await w_await  svctm  %util
nvme1n1           0.00     0.00    0.00 2284.00     0.00   571.00   512.00    15.02    7.02    0.00    7.02   0.44 100.00

答え1

dd if=/dev/zero of=/mnt/data/testfile bs=1

Linux を使ってからしばらく経ちますが、bs 引数がバイト単位であることは 99% 確信しています。つまり、1MB ではなく 1 バイトのブロック サイズを送信していると思います。

代わりにこれを試してください:

dd if=/dev/zero of=/mnt/data/testfile bs=1M

関連情報