すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:ブロックストレージデバイスのパフォーマンスをテストする

最終更新日:Jan 10, 2024

このトピックでは、Linux Elastic Compute Service (ECS) インスタンスのfioツールがブロックストレージデバイスのパフォーマンスをテストするために使用する一般的なコマンドについて説明します。 ブロックストレージデバイスには、クラウドディスクとローカルディスクが含まれ、これらのディスクのパフォーマンスメトリックには、IOPS、スループット、およびレイテンシが含まれます。

前提条件

ブロックストレージデバイスが作成され、Linux ECSインスタンスにアタッチされます。

説明

特定のディスクカテゴリにのみ属するブロックストレージデバイスのパフォーマンスをテストする場合は、新しい従量課金データディスクを使用することをお勧めします。 テストの完了後にディスクをリリースできます。

背景情報

他のツールを使用してブロックストレージデバイスのパフォーマンスをテストできますが、ベースラインのパフォーマンスが異なる場合があります。 たとえば、ddsysbenchiometerなどのツールは、テストパラメーターやファイルシステムの影響を受け、不正確な結果を返す可能性があります。 このトピックのパフォーマンス結果は、fioツールを使用してLinux ECSインスタンスで実行されるテストから得られます。 これらの結果は、ブロックストレージデバイスの性能基準として使用される。 fioツールを使用して、LinuxインスタンスとWindowsインスタンスの両方のブロックストレージデバイスのパフォーマンスをテストすることを推奨します。

使用上の注意

警告
  • 生ディスクをテストすることで、正確なテスト結果を得ることができます。 ただし、ディスクを直接テストすると、生のディスクのファイルシステム構造が破壊される可能性があります。 生のディスクをテストする前に、ディスクのスナップショットを作成してデータをバックアップすることをお勧めします。 詳細については、「ディスクのスナップショットの作成」をご参照ください。

  • オペレーティングシステムが存在するディスクや重要なデータが格納されているディスクはテストしないことをお勧めします。 データの損失を防ぐために、テスト用のデータを含まない新しいECS (Elastic Compute Service) インスタンスを使用することを推奨します。

手順

  1. ECSインスタンスに接続します。
    詳細については、「VNCを使用したインスタンスへの接続」をご参照ください。
  2. ブロックストレージデバイスをテストする前に、デバイスが4 KiBに整列していることを確認してください。

    sudo fdisk -lu

    コマンド出力のStartの値が8で割り切れる場合、デバイスは4 KiBに揃えられます。 それ以外の場合は、テストを続行する前に4 KiBアライメントを実行します。

    Device Boot Start End SectorsサイズIdタイプ
    /dev/vda1 * 2048 83886046 83883999 40G 83 Linux 
  3. 次のコマンドを順番に実行して、libaioとFIOをインストールします。

    sudo yum install libaio -y
    sudo yum install libaio-devel -y
    sudo yumインストールfio -y 
  4. 次のコマンドを実行して、パスを切り替えます。

    cd /tmp
  5. テストコマンドを実行します。 コマンドの詳細については、次のセクションを参照してください。

クラウドディスクのパフォーマンスのテストに使用するコマンド

説明
  • この例では、クラウドディスクのデバイス名として /dev/your_deviceが使用されます。 実際のデバイス名に置き換えます。 たとえば、テストするクラウドディスクのデバイス名が /dev/vdbの場合、次のサンプルコマンドで /dev/your_deviceを /dev/vdbに置き換えます。

  • サンプルコマンドの他のパラメータの値は参照用です。 それらを実際の値に置き換えます。

  • 次のコマンドを実行して、クラウドディスクのランダム書き込みIOPSをテストします。

    fio -direct=1 -iodepth=128 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Rand_Write_テスト
  • 次のコマンドを実行して、クラウドディスクのランダム読み取りIOPSをテストします。

    fio -direct=1 -iodepth=128 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Rand_Read_Testing
  • 次のコマンドを実行して、クラウドディスクのシーケンシャル書き込みスループットをテストします。

    fio -direct=1 -iodepth=64 -rw=write -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Write_PPS_テスト
  • 次のコマンドを実行して、クラウドディスクのシーケンシャル読み取りスループットをテストします。

    fio -direct=1 -iodepth=64 -rw=read -ioengine=libaio -bs=1024k -size=1G -numjobs=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=Read_PPS_テスト
  • 次のコマンドを実行して、クラウドディスクのランダムな書き込みレイテンシをテストします。

    fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=/dev/your_device -name=Rand_Write_Latency_Testing
  • 次のコマンドを実行して、クラウドディスクのランダムな読み取り待ち時間をテストします。

    fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -size=1G -numjobs=1 -group_reporting -filename=/dev/your_device -name=Rand_Read_Latency_Testing

詳細については、「ESSDのIOPSパフォーマンスのテスト」をご参照ください。.

ローカルディスクのパフォーマンステストに使用するコマンド

次のサンプルコマンドは、ローカルのNVMe (Non-Volatile Memory Express) SSDおよびローカルのSATA (Serial Advanced Technology Attachment) HDDに適用できます。

説明
  • この例では、クラウドディスクのデバイス名として /dev/your_deviceが使用されます。 実際のデバイス名に置き換えます。 たとえば、テストするクラウドディスクのデバイス名が /dev/vdbの場合、次のサンプルコマンドで /dev/your_deviceを /dev/vdbに置き換えます。

  • サンプルコマンドの他のパラメータの値は参照用です。 それらを実際の値に置き換えます。

  • 次のコマンドを実行して、ローカルディスクのランダム書き込みIOPSをテストします。

    fio -direct=1 -iodepth=32 -rw=randwrite -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • 次のコマンドを実行して、ローカルディスクのランダム読み取りIOPSをテストします。

    fio -direct=1 -iodepth=32 -rw=randread -ioengine=libaio -bs=4k -numjobs=4 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • 次のコマンドを実行して、ローカルディスクのシーケンシャル書き込みスループットをテストします。

    fio -direct=1 -iodepth=128 -rw=write -ioengine=libaio -bs=128k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • 次のコマンドを実行して、ローカルディスクのシーケンシャル読み取りスループットをテストします。

    fio -direct=1 -iodepth=128 -rw=read -ioengine=libaio -bs=128k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • 次のコマンドを実行して、ローカルディスクのランダムな書き込みレイテンシをテストします。

    fio -direct=1 -iodepth=1 -rw=randwrite -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • 次のコマンドを実行して、ローカルディスクのランダムな読み取り待ち時間をテストします。

    fio -direct=1 -iodepth=1 -rw=randread -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • 次のコマンドを実行して、ローカルディスクのシーケンシャル書き込みレイテンシをテストします。

    fio -direct=1 -iodepth=1 -rw=write -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test
  • 次のコマンドを実行して、ローカルディスクのシーケンシャル読み取りレイテンシをテストします。

    fio -direct=1 -iodepth=1 -rw=read -ioengine=libaio -bs=4k -numjobs=1 -time_based=1 -runtime=1000 -group_reporting -filename=/dev/your_device -name=test

fioパラメータ

次の表に、ディスクのパフォーマンスをテストするために使用される上記のfioコマンドのパラメーターを示します。

パラメーター

説明

直接

直接I/Oを使用するかどうかを指定します。 デフォルト値は 1 です。 有効な値:

  • 1: 直接I/Oを使用し、I/Oバッファを無視し、データを直接書き込みます。

  • 0: 直接I/Oを使用しない、I/Oバッファを無視する、または直接データを書き込む。

iodepth

テスト中のI/Oキューの深さ。 たとえば、-iodepthパラメーターを128に設定した場合、fio制御要求に対して並行して実行できるI/O操作の最大数は128になります。

rw

テスト中に使用される読み取り /書き込みポリシー。 有効な値:

  • randwrite: ランダムな書き込み

  • randread: ランダムな読み取り

  • read: シーケンシャル読み取り

  • write: シーケンシャル書き込み

  • randrw: ランダムな読み取りと書き込み

ioengine

fioがディスクのパフォーマンスをテストするために使用するI/Oエンジン。 ほとんどの場合、libaioが使用されます。 その他の利用可能なI/Oエンジンについては、fioのドキュメントを参照してください。

bs

I/Oユニットのブロックサイズ。 デフォルト値: 4 k。4 KiBを示します。 読み取りと書き込みの値は、<読み取りの値 >,< 書き込みの値> 形式で指定できます。 値を指定しない場合は、デフォルト値が使用されます。

size

テストファイルのサイズ。

fioは、実行時などの特定の要因によって制限されない限り、指定されたサイズのファイルの読み取りまたは書き込みが行われた後にのみテストを終了します。 このパラメーターが指定されていない場合、fioは指定されたすべてのファイルまたはデバイスのサイズを使用します。 有効な値は、1% 〜100% の範囲のパーセントであってもよい。 たとえば、sizeパラメーターが20% に設定されている場合、fioはすべてのファイルまたはデバイスのサイズの20% を使用します。

numjobs

テスト中に使用される同時スレッドの数。 デフォルト値は 1 です。 有効な値:

runtime

テストの期間。これは、fioが実行される期間を示します。

このパラメーターが指定されていない場合、sizeパラメーターで指定されたサイズのファイルがbsパラメーターで指定されたブロックサイズで読み書きされるまでテストは終了しません。

group_reporting

テスト結果の表示モード。

このパラメーターを指定すると、タスクごとの統計ではなく、プロセスごとの統計が表示されます。

filename

テストするオブジェクトのパス。 パスには、ディスクのデバイス名またはファイルアドレスを指定できます。 このトピックでは、fioのテストオブジェクトは、ファイルシステムを持たないディスク全体 (生のディスク) です。 他のディスクのデータが破損しないようにするには、上記のコマンドの /dev/your_deviceを実際のパスに置き換えます。

name

テストの名前。 必要に応じてパラメーターを指定できます。 上記の例では、Rand_Write_Testingが使用されています。

パラメーターの詳細については、「fio (1) - Linux man page」をご参照ください。