19.5. 小さなファイルパフォーマンスの機能拡張

データに対して操作を実行するためにファイルのメタデータで操作を実行するのにかかった時間の割合により、大きなファイルと小さなファイルの違いを決定します。Metadata-intensive workload は、このようなワークロードを識別するために使用される用語です。ネットワークおよびストレージのパフォーマンスを最適化するために、いくつかのパフォーマンスが強化され、Red Hat Gluster Storage の信頼されるストレージプールの小さなファイルに対するスループットおよび応答時間の影響を最小限に抑えることができます。
注記
小さなファイルワークロードの場合は、rhgs-random-io 調整済みプロファイルをアクティベートします。

イベント処理のスレッドの設定

クライアントおよびサーバーコンポーネントの client.event-thread および server.event-thread の値を設定できます。たとえば、値を 4 に設定すると、4 つのネットワーク接続を同時に処理できます。

クライアントのイベントスレッド値の設定
イベントスレッド値を調整することで、Red Hat Gluster Storage Server のパフォーマンスを調整できます。
# gluster volume set VOLNAME client.event-threads <value>

例19.1 ボリュームにアクセスするクライアントのイベントスレッドの調整

# gluster volume set test-vol client.event-threads 4
サーバーのイベントスレッド値の設定
イベントスレッド値を使用して、Red Hat Gluster Storage Server のパフォーマンスを調整できます。
# gluster volume set VOLNAME server.event-threads <value>

例19.2 ボリュームにアクセスするサーバーのイベントスレッドの調整

# gluster volume set test-vol server.event-threads 4
イベントスレッド値の確認
クライアントおよびサーバーコンポーネントに設定されたイベントスレッド値を確認するには、以下のコマンドを実行します。
# gluster volume info VOLNAME
これらのボリュームオプションの設定方法は、「最小、最大値、およびデフォルト値」のトピック「『ボリュームオプションの設定』」を参照してください。

イベントスレッドを調整するためのベストプラクティス

ネットワーク接続からスレッド処理イベントの数を調整することで、Red Hat Gluster Storage スタックでパフォーマンスが低下することが確認できます。以下は、イベントスレッド値を調整するための推奨されるベストプラクティスです。

  1. 各スレッドは一度に接続を処理するため、ブリックプロセス (glusterfsd) またはクライアントプロセス(glusterfs または gfapi)への接続よりもスレッドは推奨されていません。このため、クライアント上の接続数 (netstat コマンドを使用) を監視し、ブリックでイベントスレッド数に適した数になるように監視します。
  2. 利用可能な処理ユニットよりもイベントスレッド値が大きいと、これらのスレッドでコンテキストが再び切り替わることがあります。その結果、前の手順で重複排除した数を、利用可能な処理ユニットが推奨する数よりも小さい数値に減らすことができます。
  3. Red Hat Gluster Storage ボリュームに単一ノード上で実行中のブリックプロセスが多数ある場合は、前のステップで非推奨となったイベントスレッド番号を減らすことで、競合プロセスが十分な同時実行性を実現し、スレッド全体にわたるコンテキストスイッチを回避するのに役立ちます。
  4. 特定のスレッドが必要以上の CPU サイクルを消費すると、イベントスレッド数を増やすと、Red Hat Gluster Storage Server のパフォーマンスが向上します。
  5. 適切なイベントスレッド数を停止することに加え、ストレージノードの server.outstanding-rpc-limit を増やすと、ブリックプロセスの要求をキューに入れ、ネットワークキューで要求をアイドリングしないようにすることもできます。
  6. event-threads 値を調整する際にパフォーマンスを向上させる可能性がある別のパラメーターは、 performance.io-thread-count (および関連するスレッドスレッド) を基礎となるファイルシステムで実際の IO 操作を実行するため、値を高く設定します。

19.5.1. 最適化機能の有効化

デコレーター (DHT) は、ネガティブルックアップを扱うと、パフォーマンスのペナルティーを受けます。ネガティブルックアップは、ボリュームに存在しないエントリーに対する検索操作です。存在しないファイルまたはディレクトリーのルックアップは、ネガティブルックアップです。
DHT はすべてのサブボリュームでファイルの検索を試みるため、マイナスルックアップはよくファイル作成の速度が低下します。これは、ボリュームに素早く連続して追加/作成されるファイルのパフォーマンスにとくに影響します。
ネガティブルックアップのアウト動作は、バランスボリュームで同じを実行しないことで最適化できます。
cluster.lookup-optimize 設定オプションは、DHT ルックアップの最適化を有効にします。このオプションを有効にするには、以下のコマンドを実行します。
# gluster volume set VOLNAME cluster.lookup-optimize <on/off>\
注記
この設定は、上記のオプションを設定した直後に新たに作成されたディレクトリーに対して有効になります。既存のディレクトリーの場合、DHT が古いディレクトリーの最適化を適用する前に、ボリュームのバランスを取り除くには、リバランスが必要です。