31.2. テスト環境の準備
VDO を評価する前に、ホストシステムの設定、VDO の設定、およびテスト時に使用されるワークロードを考慮することが重要です。このような選択は、データの最適化 (領域の効率化) およびパフォーマンス (帯域幅と遅延) の両方の観点でベンチマークに影響を及ぼします。テスト計画を作成する際に考慮すべき事項を以下のセクションに記載します。
31.2.1. システム設定
- 利用可能な CPU コアの数およびタイプ。これは、
taskset
ユーティリティーを使用して制御できます。 - 利用可能なメモリーと、取り付けられているメモリーの合計。
- ストレージデバイスの設定
- Linux カーネルバージョン。Red Hat Enterprise Linux 7 では、提供される Linux カーネルバージョンは 1 つのみであることに注意してください。
- インストールされているパッケージ
31.2.2. VDO 設定
- パーティション設定スキーム
- VDO ボリュームで使用されるファイルシステム
- VDO ボリュームに割り当てられた物理ストレージのサイズ
- 作成した論理 VDO ボリュームのサイズ
- スパースまたはデンスインデックス
- メモリーサイズの UDS インデックス
- VDO のスレッド設定
31.2.3. ワークロード
- テストデータを生成するのに使用するツールの種類
- 同時クライアントの数
- 書き込まれたデータ内の重複する 4KB ブロックの量
- 読み書きのパターン
- ワーキングセットのサイズ
各テストが同じディスク環境で実行されるようにするには、特定のテストの間に VDO ボリュームを再作成する必要がある場合があります。詳細は、テストセクションを参照してください。
31.2.4. 対応しているシステム設定
Red Hat は、Intel 64 アーキテクチャー上の Red Hat Enterprise Linux 7 で VDO をテストしました。
VDO のシステム要件については、「システム要件」 を参照してください。
VDO を評価する場合は、以下のユーティリティーを使用することが推奨されます。
- 柔軟な I/O テスター バージョン 2.08 以降。fio パッケージから入手できます。
sysstat
バージョン 8.1.2-2 以降。sysstat パッケージから入手できます。
31.2.5. テスト前のシステム準備
このセクションでは、評価中に最適なパフォーマンスを実現するためにシステム設定を設定する方法について説明します。特定のテストに確立されている暗黙の範囲を超えたテストを行うと、異常な結果により、テスト時間が失われる可能性があります。たとえば、このガイドでは、100 GB のアドレス範囲でランダム読み取りを実行するテストを説明します。500 GB のワーキングセットをテストするには、VDO ブロックマップキャッシュに割り当てられる DRAM の容量を適宜増やす必要があります。
- システム設定
- CPU が最も高いパフォーマンス設定で実行していることを確認します。
- BIOS 設定または Linux の
cpupower
ユーティリティーを使用して、可能であれば頻度のスケーリングを無効にします。 - 最大スループットを実現できる場合は、Turbo モードを有効にします。Turbo モードでは、テスト結果に多少のばらつきが生じますが、Turbo なしのテストと同等以上のパフォーマンスを発揮します。
- Linux 設定
- ディスクベースのソリューションの場合、Linux は、キューに入っている複数の読み取り/書き込み要求を処理するための I/O スケジューラーアルゴリズムを複数提供します。デフォルトでは、Red Hat Enterprise Linux は CFQ (完全に公平なキューイング) スケジューラーを使用します。これは、多くの状況でローテーションディスク (ハードディスク) のアクセスを改善する方法で要求を調整します。代わりに、ローテーションディスクに Deadline スケジューラーを使用することを推奨します。Red Hat ラボテストでスループットとレイテンシーが改善されることが分かりました。デバイス設定を次のように変更します。
# echo "deadline" > /sys/block/device/queue/scheduler
- フラッシュベースのソリューションの場合、
noop
スケジューラーは、Red Hat ラボテストで優れたランダムアクセススループットとレイテンシーを示します。デバイス設定を次のように変更します。# echo "noop" > /sys/block/device/queue/scheduler
- ストレージデバイスの設定ファイルシステム (ext4、XFS など) は、パフォーマンスに固有の影響を与える可能性があります。それらはしばしばパフォーマンス測定を歪め、結果に対する VDO の影響を分離することを困難にします。妥当な場合は、raw ブロックデバイスでパフォーマンスを測定することを推奨します。使用できない場合は、ターゲットの実装で使用されるファイルシステムを使用してデバイスをフォーマットします。
31.2.6. VDO の内部構造
評価を完全かつ成功させるには、VDO メカニズムの一般的な理解が不可欠であると考えています。このような理解は、テスターがテスト計画から逸脱したり、特定のアプリケーションやユースケースをエミュレートするための新しい要因を考案したりする場合に特に重要になります。詳細は、30章VDO 統合 を参照してください。
Red Hat テスト計画は、デフォルトの VDO 設定で動作するように書かれています。新規のテストを開発する場合は、次のセクションに記載されている VDO パラメーターの一部を調整する必要があります。
31.2.7. VDO の最適化
高負荷
最適なパフォーマンスを実現するための最も重要なストラテジーは、ストレージシステムの負荷を表す特性である最適な I/O キューの深さを決定することでしょう。最新のストレージシステムのほとんどは、I/O 深度が高い場合に最適に動作します。VDO のパフォーマンスは、同時要求が多数ある場合に最適に実証されます。
同期と非同期書き込みポリシーの比較
VDO は、2 つの書き込みポリシー (同期または非同期) のいずれかで動作します。デフォルトでは、VDO は基となるストレージデバイスに適切な書き込みポリシーを自動的に選択します。
パフォーマンスをテストする際には、選択した書き込みポリシー VDO を把握しておく必要があります。以下のコマンドは、VDO ボリュームの書き込みポリシーを示しています。
# vdo status --name=my_vdo
書き込みポリシーの詳細は、「VDO 書き込みポリシーの概要」 および 「VDO 書き込みモードの選択」 を参照してください。
メタデータのキャッシュ
VDO は、論理ブロックアドレスから物理ブロックアドレスへのマッピングの表を保持しており、特定のブロックにアクセスする場合、VDO が関連するマッピングを検索する必要があります。デフォルトでは、VDO は、DRAM で 128MB のメタデータキャッシュを割り当て、一度に 100GB の論理領域に効率的にアクセスできるようにします。テスト計画では、この設定オプションに適したワークロードが生成されます。
設定されたキャッシュサイズよりも大きなワーキングセットの場合は、サービス要求に追加の I/O が必要になります。この場合はパフォーマンスが低下します。追加のメモリーが利用可能な場合は、ブロックマップキャッシュを大きくする必要があります。ブロックマップキャッシュがメモリーに保持できる値よりもワーキングセットが大きい場合は、関連するブロックマップページをルックアップするための追加の I/O ホバーヘッドが発生する可能性があります。
VDO マルチスレッディングの設定
最適なパフォーマンスを実現するには、VDO のスレッド設定を調整する必要があります。VDO ボリュームの作成時にこの設定を変更する方法は、VDO 統合ガイドを参照してください。最適な設定を見つけるためのテストの設計方法については、Red Hat セールスエンジニアにお問い合わせください。
データコンテンツ
VDO は重複排除と圧縮を実行するため、テストデータセットを選択して、このような機能を効果的に使用する必要があります。
31.2.8. 読み取りパフォーマンスのテストに関する特別な考慮事項
読み取りパフォーマンスをテストする際には、以下の要因を考慮する必要があります。
- 4KB のブロックに 書き込まれたことがない 場合、VDO はストレージへの I/O を実行せず、即座にゼロブロックで応答します。
- 4KB のブロックに 書き込まれているが、すべてゼロが含まれている 場合、VDO はストレージへの I/O を実行せず、すぐにゼロブロックで応答します。
この動作により、読み込むデータがない場合に、読み込みのパフォーマンスが非常に高速になります。これにより、読み取りテストに実際のデータを事前に入力することが不可欠になります。
31.2.9. クロストーク
あるテストが別のテストの結果に影響を及ぼさないようにするため、各テストの繰り返しごとに、新しい VDO ボリュームを作成することが推奨されます。