検索

6.2. パフォーマンスのボトルネックの特定

download PDF

VDO パフォーマンスのボトルネックを特定することは、システム効率を最適化するために重要です。実行できる主要な手順の 1 つは、ボトルネックが CPU、メモリー、バッキングストレージの速度のうちどこにあるのかを判断することです。最も遅いコンポーネントを特定したら、パフォーマンスを向上させる戦略を立てることができます。

パフォーマンス低下の根本原因がハードウェアの問題ではないことを確認するには、ストレージスタックで VDO を使用した場合と使用しない場合のテストを実行します。

VDO の journalQ スレッドは、特に VDO ボリュームが書き込み操作を処理している場合には、必然的にボトルネックになります。別のスレッドタイプの使用率が journalQ スレッドよりも高いことが判明した場合、当該タイプのスレッドをさらに追加することでこの問題を修正できます。

6.2.1. top による VDO パフォーマンスの分析

top ユーティリティーを使用して、VDO スレッドのパフォーマンスを調べることができます。

手順

  1. 個々のスレッドを表示します。

    $ top -H
    注記

    top などのツールは、生産的な CPU サイクルと、キャッシュまたはメモリーの遅延により停止したサイクルを区別できません。このようなツールは、キャッシュの競合と、低速なメモリーアクセスを実際の動作として解釈します。ノード間でスレッドを移動すると、1 秒あたりの操作数が増加した一方で、CPU 使用率が低下したように見えることがあります。

  2. f キーを押してフィールドマネージャーを表示します。
  3. (↓) キーを使用して P = Last Used Cpu (SMP) フィールドに移動します。
  4. スペースバーを押して、P = Last Used Cpu (SMP) フィールドを選択します。
  5. q キーを押してフィールドマネージャーを閉じます。top ユーティリティーは、個々のコアの CPU 負荷を表示し、各プロセスまたはスレッドが最近使用した CPU を示します。1 を押すと、CPU ごとの統計情報に切り替えることができます。

関連情報

6.2.2. top の結果の解釈

VDO スレッドのパフォーマンスを分析する際には、次の表を使用して top ユーティリティーの結果を解釈してください。

表6.1 top の結果の解釈
説明提案

スレッドまたは CPU 使用率が 70% を超えている。

スレッドまたは CPU がオーバーロード状態です。実際の作業を伴わずに CPU 上でスケジュールされている VDO スレッドにより、使用率が高くなっている可能性があります。この状況は、過度のハードウェア割り込み、メモリーの競合、またはリソースの競合によって発生する可能性があります。

このコアを実行するタイプのスレッドの数を増やします。

%id 値と %wa 値が低い。

コアがタスクをアクティブに処理しています。

アクションは不要です。

%hi 値が低い。

コアが標準の処理作業を実行しています。

パフォーマンスを向上させるには、コアを追加します。NUMA の競合を回避します。

  • %hi 値が高い。 [a]
  • コアにスレッドが 1 つだけ割り当てられている。
  • %id がゼロである。
  • %wa 値がゼロである。

コアがオーバーコミットされています。

カーネルスレッドとデバイス割り込み処理を別のコアに再割り当てします。

  • kvdo:bioQ スレッドが頻繁に D 状態になる。

VDO が、ストレージシステムを I/O リクエストで常にビジー状態に保っています。 [b]

CPU 使用率が非常に低い場合は、I/O 送信スレッドの数を減らします。

kvdo:bioQ スレッドが頻繁に S 状態になる。

VDO に、必要以上の kvdo:bioQ スレッドがあります。

kvdo:bioQ スレッドの数を減らします。

I/O リクエストあたりの CPU 使用率が高い。

スレッドが増えると、I/O リクエストごとの CPU 使用率が増加します。

CPU、メモリー、またはロックの競合がないか確認します。

[a] 数パーセントを超えた値
[b] この状態は、ストレージシステムが複数のリクエストを処理できる場合、またはリクエストの処理が効率的である場合には適切です。

6.2.3. perf による VDO パフォーマンスの分析

perf ユーティリティーを使用して、VDO の CPU パフォーマンスを確認できます。

前提条件

  • perf パッケージがインストールされている。

手順

  1. パフォーマンスプロファイルを表示します。

    # perf top
  2. perf の結果を解釈して CPU パフォーマンスを分析します。

    表6.2 perf の結果の解釈
    説明提案

    kvdo:bioQ スレッドがスピンロックを取得するために過度にサイクルを費やす。

    VDO の下のデバイスドライバーで過度の競合が発生している可能性があります。

    kvdo:bioQ スレッドの数を減らします。

    CPU 使用率が高い。

    NUMA ノード間で競合が生じています。

    プロセッサーが対応している場合は、stalled-cycles-backendcache-misses、および node-load-misses などのカウンターを確認します。ミス率が高いと、他のツールで CPU 使用率が高い場合と同様にストールが発生する場合があり、競合の可能性があります。

    VDO カーネルスレッドの CPU アフィニティーまたは割り込みハンドラーの IRQ アフィニティーを実装して、処理作業を単一ノードに制限します。

関連情報

  • man ページの perf-top(1)

6.2.4. sar による VDO パフォーマンスの分析

sar ユーティリティーを使用すると、VDO パフォーマンスに関する定期レポートを作成できます。

注記

すべてのブロックデバイスドライバーが sar ユーティリティーに必要なデータを提供できるわけではありません。たとえば、MD RAID などのデバイスは %util 値を報告しません。

前提条件

  • sysstat ユーティリティーをインストールします。

    # yum install sysstat

手順

  1. ディスク I/O 統計情報を 1 秒間隔で表示します。

    $ sar -d 1
  2. sar の結果を解釈して VDO パフォーマンスを分析します。

    表6.3 sar の結果の解釈
    説明提案
    • 基盤となるストレージデバイスの %util 値が 100% を大きく下回っている。
    • VDO が 100% でビジー状態である。
    • bioQ スレッドが大量の CPU 時間を使用している。

    VDO の bioQ スレッドが高速デバイスに対して少なすぎます。

    bioQ スレッドを追加します。

    bioQ スレッドを追加すると、スピンロックの競合により、特定のストレージドライバーの速度が低下する可能性があることに注意してください。

関連情報

  • sar(1) man ページ
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

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

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

会社概要

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

© 2024 Red Hat, Inc.