ホームページ >運用・保守 >Linuxの運用と保守 >LinuxでPERFやFTRACEなどのシステムトレースツールを使用するにはどうすればよいですか?

LinuxでPERFやFTRACEなどのシステムトレースツールを使用するにはどうすればよいですか?

Johnathan Smith
Johnathan Smithオリジナル
2025-03-14 16:47:34151ブラウズ

LinuxでPERFやFTRACEなどのシステムトレースツールを使用するにはどうすればよいですか?

Linuxでperfftraceなどのシステムトレースツールを使用すると、システムのパフォーマンスと動作に関する洞察を得ることができます。これらの各ツールを使用する方法は次のとおりです。

PERFの使用:

  1. インストール:システムにperfがインストールされていることを確認してください。ほとんどのLinuxディストリビューションでは、ubuntuのsudo apt-get install linux-perfなど、パッケージマネージャーを使用してインストールできます。
  2. 基本的な使用法:イベントの記録を開始するには、 perf recordコマンドを使用できます。たとえば、CPUサイクルを記録するには、以下を使用します。

     <code>sudo perf record -e cycles -a sleep 10</code>

    このコマンドは、すべてのCPUのCPUサイクルを10秒間記録します。

  3. 分析:記録後、 perf reportでデータを分析できます。

     <code>sudo perf report</code>

    このコマンドは、データをナビゲートできるインタラクティブなインターフェイスを開きます。

  4. 特定のユースケース:PERFを使用して、特定のアプリケーションのプロファイル、システム全体のパフォーマンスを分析するなどです。たとえば、特定のアプリケーションをプロファイルするには:

     <code>sudo perf record ./my_application sudo perf report</code>

ftraceを使用:

  1. ftraceの有効化:ftraceは通常、Linuxカーネルの一部です。それを有効にするには、デバッグファイルシステムをマウントする必要があります。

     <code>sudo mount -t debugfs nodev /sys/kernel/debug</code>
  2. FTRACEの構成/sys/kernel/debug/tracingのファイルに書き込むことにより、トレースを構成できます。たとえば、関数呼び出しをトレースするには:

     <code>echo function > /sys/kernel/debug/tracing/current_tracer echo 1 > /sys/kernel/debug/tracing/tracing_on</code>
  3. 出力の表示:トレース出力は、次を使用してリアルタイムで表示できます。

     <code>cat /sys/kernel/debug/tracing/trace</code>
  4. トレースの停止:トレースを停止するには、 tracing_onファイルに0書き込みます。

     <code>echo 0 > /sys/kernel/debug/tracing/tracing_on</code>

PERFとFTRACEの重要な違いは何ですか?また、各ツールをいつ使用する必要がありますか?

重要な違い:

  1. 機能

    • Perf 、ハードウェアイベント(CPUサイクル、キャッシュミスなど)やソフトウェアイベント(ページ障害、コンテキストスイッチなど)など、さまざまなイベントを追跡できるより汎用性の高いツールです。
    • Ftraceは、カーネル関数とシステムコールを追跡するように特別に設計されており、詳細なカーネルレベルのトレースを提供します。
  2. ユーザーインターフェイス

    • Perf 、記録されたデータを分析するためのインタラクティブなインターフェイス( perf report )を提供します。これは非常にユーザーフレンドリーな場合があります。
    • Ftrace 、効果的に分析するために手動解析またはスクリプトを必要とする生の出力を提供します。
  3. オーバーヘッド

    • Perfは、一般に、その幅が広いため、 ftraceよりもオーバーヘッドが高くなっています。
    • Ftraceは軽量で、システムへの衝撃を最小限に抑えることで使用でき、頭上が低いシナリオに理想的です。

各ツールを使用する時期:

  • PERFを使用

    • ユーザースペースとカーネルスペースの両方のイベントをプロファイルする必要がある場合。
    • CPUパフォーマンスカウンターのように、ハードウェアイベントトレース用。
    • データを分析するためのインタラクティブでユーザーフレンドリーな方法が必要な場合。
  • ftraceを使用してください

    • 特にカーネル関数またはシステムコールをトレースする必要がある場合。
    • 最小限のシステムオーバーヘッドが必要なシナリオで。
    • リアルタイムのカーネルレベルのデバッグと分析用。

PERFとFTRACEの出力を分析して、システムパフォーマンスを最適化するにはどうすればよいですか?

パフォーマンス出力の分析:

  1. perf reportの使用:前述のように、 perf report記録されたデータを表示するインタラクティブな方法を提供します。コールグラフをナビゲートして、ほとんどの時間またはリソースを消費する関数を識別できます。
  2. ボトルネックの識別:高いオーバーヘッドまたは頻繁な実行を示す関数またはシステムコールを探します。これは、パフォーマンスのボトルネックを示している可能性があります。
  3. ハードウェアイベント分析perfを使用して、CPUサイクル、キャッシュミス、ブランチの誤処理などのハードウェアイベントを分析します。これらの分野で高いカウントは、最適化の機会を示唆する可能性があります。
  4. 統計サンプリングPerf 、統計サンプリングを使用してデータを収集します。これにより、コードまたはシステムのホットスポットを識別することができます。

FTRACE出力の分析:

  1. トレースの解析:ftrace出力は膨大な場合があります。 trace-cmdなどのツールを使用するか、スクリプトを書き込み、データをフィルタリングおよび解析します。
  2. パターンの識別:頻繁な関数呼び出しやシステム呼び出しなど、トレースのパターンを探します。これは、非効率性を示している可能性があります。
  3. タイミング分析:トレースのタイムスタンプを使用して、特定の操作または機能の持続時間を測定します。
  4. システムイベントとの相関:トレースデータを割り込み、コンテキストスイッチ、またはページ障害などのシステムイベントと相関させて、パフォーマンスへの影響を理解します。

これらのトレースツールを使用する際に知っておくべき一般的な落とし穴やベストプラクティスはありますか?

一般的な落とし穴:

  1. オーバーヘッド:どちらのツールもパフォーマンスオーバーヘッドを導入できます。生産環境でそれらを使用する場合、これに注意してください。
  2. データの過負荷:FTRACEは大量のデータを生成できます。これは圧倒的です。トレースを適切にフィルタリングして集中してください。
  3. 誤解:トレースデータの誤解は、パフォーマンスの問題に関する誤った結論につながる可能性があります。常に発見を交差させてください。
  4. バージョンの互換性:ツールのバージョンが、特にftrace用のカーネルバージョンと互換性があることを確認してください。

ベストプラクティス:

  1. スタートしてください:より複雑なトレースシナリオに飛び込む前に、基本的なシステムの動作を理解するための最小限のトレースから始めます。
  2. フィルターの使用perfftrace両方を使用すると、イベントをフィルタリングできます。この機能を使用して、関心のある領域に焦点を当て、データの過負荷を減らします。
  3. 調査結果を文書化してください:あなたがたどるものとあなたが描いた結論の詳細なメモを保管してください。これは、反復パフォーマンスの最適化に役立ちます。
  4. 相互参照:複数のツールまたは方法を使用して、調査結果を確認します。たとえば、 perfftraceを組み合わせて、システム動作のより包括的なビューを取得します。
  5. スクリプトと自動化:可能な場合は、トレースデータの分析を自動化します。 ftrace用のtrace-cmdperf用のカスタムスクリプトなどのツールは、ワークフローを合理化できます。

これらのガイドラインに従うことにより、 perfftraceを使用して、Linuxシステムのパフォーマンスを診断および最適化することができます。

以上がLinuxでPERFやFTRACEなどのシステムトレースツールを使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。