Menu Close
Settings Close

Language and Page Formatting Options

Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

31.3. データ効率のテスト手順

VDO の検証が成功するかどうかは、適切に設定されたテスト手順に従うかどうかにかかっています。このセクションでは、評価に参加する際に考慮すべきテストの例として、期待される結果とともに従うべき一連の手順を示します。

テスト環境

次のセクションのテストケースでは、テスト環境を以下のように想定します。
  • 1 つ以上の Linux 物理ブロックデバイスが使用できる。
  • ターゲットブロックデバイス (/dev/sdb など) が 512 GB を超えている。
  • フレキシブル I/O テスター (fio) バージョン 2.1.1 以降がインストールされている。
  • VDO がインストールされている。
テスト環境を完全に把握するために、各テストの開始時に以下の情報を記録する必要があります。
  • 使用される Linux ビルド (カーネルビルド番号を含む)。
  • rpm -qa コマンドから取得した、インストールされているパッケージの完全な一覧。
  • 完全なシステム仕様:
    • CPU の種類と数量 (/proc/cpuinfoで入手可能)
    • インストールされているメモリーと、基本 OS の実行後に利用可能な容量 (/proc/meminfo で入手可能)。
    • 使用されているドライブコントローラーのタイプ
    • 使用されているディスクのタイプと数量
  • 実行中のプロセスの一覧 (ps aux など)。
  • VDO で使用するために作成された物理ボリュームとボリュームグループの名前 (pvsおよびvgsの一覧)。
  • VDO ボリューム (存在する場合) のフォーマットに使用されるファイルシステム。
  • マウントされたディレクトリーの権限。
  • /etc/vdoconf.yaml の内容。
  • VDO ファイルの場所。
sosreport を実行すると、必要な情報のほとんどを取得できます。

ワークロード

VDO を効果的にテストするには、実際のワークロードをシミュレートするデータセットを使用する必要があります。データセットは、さまざまな条件下でのパフォーマンスを実証するために、重複排除や圧縮が可能なデータと可能でないデータの間のバランスを提供する必要があります。
繰り返し可能な特性を持つデータを合成して生成できるツールがいくつかあります。テスト中の使用には、特に VDbench および fio の 2 つのユーティリティーの使用が推奨されます。
本書では fio を使用します。評価を成功させるためには、引数を理解することが重要です。

表31.1 fio オプション

引数説明
--size fio がジョブごとにターゲットに送信するデータの量 (以下の numjobs を参照)。 100 GB
--bs fio が生成する各読み取り/書き込み要求のブロックサイズ。Red Hat は、デフォルトの 4KB の VDO と一致する 4KB のブロックサイズを推奨します。 4k
--numjobs
fio がベンチマークを実行するために作成するジョブの数。
各ジョブは、--size パラメーターで指定した量のデータを送信します。
1 番目のジョブは、--offset パラメーターで指定したオフセットでデバイスにデータを送信します。後続のジョブでは、--offset_increment パラメーターが指定されていない限り、ディスクの同じ領域に書き込みます (上書き)。これは、前のジョブがその値で開始した場所からそれぞれのジョブをオフセットします。フラッシュメモリーでピークパフォーマンスを実現するには、最低 2 つのジョブが推奨されます。通常、1 つのジョブで、ローテーションを行うディスク (HDD) のスループットをいっぱいにできます。
1 (HDD)
2 (SSD)
--thread fio ジョブをフォークするのではなく、スレッドで実行するように指示します。これにより、コンテキストスイッチを制限することでパフォーマンスが向上する可能性があります。 <N/A>
--ioengine
Linux では、fio を使用してテストできる I/O エンジンが複数あります。Red Hat テストでは、非同期のバッファーなしエンジン (libaio) が使用されます。別のエンジンに興味がある場合は、Red Hat セールスエンジニアに相談してください。
Linux libaioエンジンは、1 つ以上のプロセスが同時にランダムな要求を行っているワークロードを評価するために使用されます。libaio は、データが取得される前に、単一のスレッドから複数のリクエストを非同期で作成できるようにします。これにより、リクエストが同期エンジンを介して多くのスレッドによって提供された場合に必要となるコンテキストスイッチの数が制限されます。
libaio
--direct
設定すると、direct は、Linux カーネルのページキャッシュをバイパスしてデバイスにリクエストを送信できるようにします。
Libaio Engine: libaio は、direct を有効 (=1) にして使用する必要があります。そうしないと、カーネルが、すべての I/O 要求で sync API に頼る可能性があります。
1 (libaio)
--iodepth
任意の時点で実行している I/O バッファーの数。
通常、高い iodepth の場合、無作為な読み取りまたは書き込みのパフォーマンスが向上します。深度が高い場合は、コントローラーは常にバッチ処理を要求できます。ただし、iodepth を高く設定しすぎる (通常は 1K を超える) と、望ましくないレイテンシーが発生する場合があります。Red Hat は、128 から 512 までの iodepth を推奨していますが、最後の値はトレードオフであり、アプリケーションがレイテンシーを許容する方法によって異なります。
128 (最小値)
--iodepth_batch_submit iodepth バッファープールが空になり始めるときに作成される I/O の数。このパラメーターは、テスト中の I/O からバッファー作成へのタスクの切り替えを制限します。 16
--iodepth_batch_complete 一括処理 (iodepth_batch_complete) を送信するまでに完了する I/O の数。このパラメーターは、テスト中の I/O からバッファー作成へのタスクの切り替えを制限します。 16
--gtod_reduce レイテンシーを計算する時刻の呼び出しを無効にします。この設定は、無効 (=0) にするとスループットが低下するため、レイテンシー測定が必要でない限り有効 (=1) にしてください。 1

31.3.1. VDO テストボリュームの設定

1.512GB の物理ボリュームに、論理サイズが 1TB の VDO ボリュームを作成する

  1. VDO ボリュームを作成します。
    • 同期ストレージ上で VDO async モードをテストするには、--writePolicy=async オプションを使用して非同期ボリュームを作成します。
      # vdo create --name=vdo0 --device=/dev/sdb \
                   --vdoLogicalSize=1T --writePolicy=async --verbose
      
    • 同期ストレージ上で VDO sync モードをテストするには、--writePolicy=sync オプションを使用して同期ボリュームを作成します。
      # vdo create --name=vdo0 --device=/dev/sdb \
                   --vdoLogicalSize=1T --writePolicy=sync --verbose
      
  2. 新しいデバイスを XFS または ext4 ファイルシステムでフォーマットします。
    • XFS の場合:
      # mkfs.xfs -K /dev/mapper/vdo0
      
    • ext4 の場合:
      # mkfs.ext4 -E nodiscard /dev/mapper/vdo0
      
  3. フォーマットしたデバイスをマウントします。
    # mkdir /mnt/VDOVolume
    # mount /dev/mapper/vdo0 /mnt/VDOVolume && \
      chmod a+rwx /mnt/VDOVolume