5.3. VDO スレッドの再分配


VDO は、リクエストを処理するときに、さまざまなタスクにさまざまなスレッドプールを使用します。最適なパフォーマンスを得るには、各プールに適切な数のスレッドを設定することが重要です。これは、利用可能なストレージ容量、CPU リソース、およびワークロードの種類によって異なります。

VDO のパフォーマンスを向上させるには、VDO の処理を複数のスレッドに分散させることができます。VDO は、並列処理を通じてパフォーマンスを最大化することを目的としています。ボトルネックとなっているタスクにスレッドをより多く割り当てて、パフォーマンスを向上させることができます。それは、利用可能な CPU リソースやボトルネックの根本原因などの要因によって左右される可能性があります。スレッド使用率が高い (70 - 80% 以上) と遅延が発生する可能性があります。したがって、スレッド数を増やすことが役立ちます。ただし、スレッド数が多すぎるとパフォーマンスが低下し、追加のコストが発生する可能性があります。

最適なパフォーマンスを得るには、次のアクションを実行します。

  • 予想されるさまざまなワークロードで VDO をテストし、パフォーマンスを評価して最適化します。
  • 使用率が 50% を超えるプールのスレッド数を増やします。
  • 全体の利用率が 50% を超えた場合は、個々のスレッドの利用率が低くても、VDO に利用可能なコア数を増やしてください。

5.3.1. NUMA ノード全体での VDO スレッドのグループ化

非均一メモリーアクセス (NUMA) ノードを介したメモリーへのアクセスは、ローカルアクセスよりも遅く、キャッシュ競合を引き起こす可能性があります。関連する VDO スレッドを同じ NUMA ノードにグループ化すると、レイテンシーとリソースの競合が最小限に抑えられ、システムパフォーマンスが向上します。

VDO カーネルスレッドが NUMA ノード全体に分散される場合、またはスケジューラーによって再割り当てされる場合、競合が発生する可能性があります。これは、ノードが共有データ構造をめぐって競合したり、I/O 要求に関するメッセージを交換したりすることによって発生します。これによりアクセス速度が低下し、全体的なパフォーマンスが低下する可能性があります。

特定のスレッドを同じ NUMA ノードにグループ化することで、VDO のパフォーマンスを向上させることができます。

関連するスレッドの 1 つの NUMA ノードへのグループ化
  • I/O 完了通知 (ackQ) スレッド
  • 上位レベルの I/O 送信スレッド:

    • ダイレクト I/O を処理するユーザーモードスレッド
    • カーネルページキャッシュフラッシュスレッド
デバイスアクセスの最適化
  • デバイスアクセスのタイミングが NUMA ノード間で異なる場合は、ストレージデバイスコントローラーに最も近いノードで bioQ スレッドを実行します。
競合の最小化
  • I/O 送信とストレージデバイスの割り込み処理を、logQ または physQ スレッドと同じノードで実行します。
  • 同じノードで他の VDO 関連の作業を実行します。
  • 1 つのノードがすべての VDO 作業を処理できない場合は、メモリー競合を考慮してスレッドを他のノードに移動します。たとえば、処理に割り込むデバイスと bioQ スレッドを他のノードに移動します。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

Red Hat ドキュメントについて

Legal Notice

Theme

© 2026 Red Hat
トップに戻る