30.2. テスト環境の準備

VDO を評価する前に、テストの際に使用するホストシステム設定、VDO 設定、ワークロードを考慮することが重要です。これらの選択は、データの最適化 (容量の効率) やパフォーマンス (帯域幅やレイテンシー) の両方のベンチマークに影響します。テストプラン考案の際に考慮すべき項目について、以下のセクションで一覧に示しています。

30.2.1. システムの設定

  • 利用できる CPU コアの数とタイプ。これは、taskset ユーティリティを使用して制御できます。
  • 利用可能なメモリと取り付けられているメモリの合計数
  • ストレージデバイスの設定
  • Linux カーネルのバージョン。Red Hat Enterprise Linux 7 では単一の Linux カーネルバージョンのみを利用できることに注意してください。
  • インストールされているパッケージ。

30.2.2. VDO 設定

  • パーティションスキーム
  • VDO ボリュームで使用しているファイルシステム
  • VDO ボリュームに割り当てられている物理ストレージサイズ
  • 作成した論理 VDO ボリュームのサイズ
  • スパースまたは密インデックス
  • メモリサイズの UDS インデックス
  • VDO のスレッド設定

30.2.3. ワークロード

  • テストデータを生成するためのツールタイプ
  • 同時クライアント数
  • 書き込まれたデータの重複 4 KB ブロックの量
  • 読み書きパターン
  • ワーキングセットサイズ
VDO ボリュームは、各テストが同じディスク環境で行われるように特定のテスト間において再作成する必要があります。詳細はテストセクションで読んでください。

30.2.4. 対応システム設定

Red Hat は、Intel 64 アーキテクチャ上の Red Hat Enterprise Linux 7 で VDO をテストしています。
VDO のシステム要件は、「システム要件」を参照してください。
VDO を評価する際には、以下のユーティリティーが推奨されています。
  • Flexible I/O Tester version 2.08 は、fio パッケージより利用できます。
  • sysstat version 8.1.2-2 またはそれ以降は、sysstat パッケージから利用できます。

30.2.5. テスト前のシステム準備

このセクションでは、評価中にパフォーマンスを最適化するためのシステムの設定方法を説明します。特定のテストで確立した暗黙的な限界を超えたテストを行うと、結果が異常になり、テスト時間が失われることがあります。例えば、このガイドでは、100 GB アドレス範囲にわたるランダム読み込みを行うテストを説明しています。500 GB のワーキングセットをテストするには、VDO ブロックマップキャッシュに割り当てられた DRAM の容量を適切に増大する必要があります。
  • システムの設定
    • お使いの CPU は最も高いパフォーマンス設定で稼働していることを確認してください。
    • 可能であれば BIOS 設定や Linux cpupower ユーティリティを使用して周波数スケーリングを無効化してください。
    • 可能であればターボモードを有効化し、スループットを最大化します。ターボモードでは、テスト結果に変動性が生じますが、パフォーマンスは、ターボなしのテストのパフォーマンスと一致することや、これを超過することがあります。
  • Linux の設定
    • ディスクベースソリューションについては、Linux では I/O スケジューラーアルゴリズムを利用できます。これにより、複数の読み込み/書き込みリクエストがキューに入っていれば、これらを処理できます。デフォルトでは、Red Hat Enterprise Linux は CFQ (Completely Fair Queuing) スケジューラーを使用しています。これは、多くの状況において回転ディスク (ハードディスク) アクセスを向上するような方法でリクエストを処理します。Red Hat では、回転ディスクに Deadline スケジューラーを使用することをおすすめしています。Red Hat ラボでは、より優れたスループットとレイテンシーを実現できることがわかっています。デバイス設定を以下に従って変更します。
      # echo "deadline" > /sys/block/device/queue/scheduler
    • フラッシュベースのソリューションについては、noop スケジューラーが、Red Hat ラボテストにおいて、優れたランダムアクセススループットとレイテンシーを示しています。
      # echo "noop" > /sys/block/device/queue/scheduler
  • ストレージデバイスの設定
    ファイルシステム (ext4、XFS など) は、パフォーマンスに独自の影響を及ぼすことがあります。また、パフォーマンス測定を歪めることがあり、結果において VDO の影響を見つけにくくなります。合理性が認められる場合は、raw ブロックデバイスでパフォーマンスの測定を行うことをおすすめします。これが不可能であれば、ターゲット実装において使用するファイルシステムでデバイスをフォーマットしてください。

30.2.6. VDO 内部構造

Red Hat では、評価を完全かつ正しく行うには VDO の全般的なメカニズムを理解することは不可欠だと考えています。テストを行う人物が、特定の用途やユースケースを模造するためにテストプランの方向を変えることや、新しいプランを考案したいと考える場合に特にこのような理解が重要となります。詳細は、29章VDO 統合を参照してください。
Red Hat テストプランは、デフォルトの VDO 設定で動作するように書かれています。新しいテストを開発する際は、次のセクションの一覧の VDO パラメーターの一部を調整する必要があります。

30.2.7. VDO の最適化

高負荷

おそらく、最適なパフォーマンスを実現するために最も重要となるストラテジーは、ストレージシステムの負荷を示す、最適な I/O キューデプスを判別することです。最も現代的なストレージシステムは、高 I/O デプスで最適に動作します。VDO のパフォーマンスは、多くの同時リクエストで、最も適格に示すことができます。

同期 vs 非同期書き込みポリシー

VDO は、同期または非同期という 2 つの書き込みポリシーで動作することが考えられます。デフォルトでは、VDO は、基礎となるストレージデバイスにとって最適な書き込みポリシーを自動的に選択します。
パフォーマンスをテストする際は、選択した書き込みポリシー VDO を把握しておく必要があります。以下のコマンドでは、お使いの VDO ボリュームの書き込みポリシーを示しています。
# vdo status --name=my_vdo
書き込みポリシーの詳細は、「VDO 書き込みポリシーの概要」「VDO 書き込みモードの選択」を参照してください。

メタデータのキャッシング

VDO は、論理ブロックアドレスから物理ブロックアドレスへのマッピングの表を維持します。VDO は、特定のブロックにアクセスする際に関連のマッピングを検索する必要があります。デフォルトでは、VDO は DRAM に 128 MB を割り当て、1 度に 100 GB の論理領域への効率的なアクセスに対応します。このテストプランでは、この設定オプションに対する適切なワークロードが生まれます。
設定したキャッシュサイズを超えるワーキングセットには、リクエストをサービスするためにさらなる I/O が必要になります。この場合、パフォーマンスが低下します。さらにメモリが利用できる場合は、ブロックマップキャッシュを増大する必要があります。ワーキングセットが、ブロックマップがメモリに保持できる量を超えると、関連のブロックマップページを参照するために、さらに I/O オーバーヘッドが発生することがあります。

VDO マルチスレッド設定

最適なパフォーマンスを実現するためには、VDO のスレッド設定を調整する必要があります。VDO ボリュームを作成する際にこれらの設定を変更する方法は、VDO 統合ガイドを参照してください。最適な設定を見いだすテストの設計の相談は Red Hat セールスエンジニアまでご連絡ください。

データ内容

VDO が重複排除と圧縮を行うため、これらの機能を効果的に利用するには、テストデータセットを選択する必要があります。

30.2.8. 読み込みパフォーマンスのテストを行うための特別な考慮事項

読み込みパフォーマンスをテストする際には、以下の 3 つのことを考慮する必要があります。
  1. 4 KB ブロックに書き込みが行われたことがない場合、VDO はストレージに対して I/O を実行しなくなり、ゼロブロックですぐに応答します。
  2. 4 KB ブロックに 書き込みが行われたことがある場合、VDO はストレージに対して I/O を実行しなくなり、ゼロブロックですぐに応答します。
このような性質により、読み込むデータがない場合に、読み込みパオフォーマンスが非常に高速になります。これにより、読み込みテストが実際のデータを事前に入力することが必須になります。

30.2.9. クロストーク

あるテストが別のテストの結果に影響を及ぼさないようにするには、各テストの各反復に対して新しい VDO ボリュームを作成することが推奨されます。