web-dev-qa-db-ja.com

監視、追跡、プロファイリングの違いは何ですか?

私はこれらの3つの単語が頻繁に現れるのを見ましたが、それらの正確な違いを理解していません。たとえば、CPU使用率の収集はプロファイリングと呼ばれることが多く、パフォーマンスの監視にも該当します。それらの間の(微妙な)違いは何ですか?

16
Richard

これが私がこれらの言葉を使う方法です。その他の使用法は、追加または異なる場合があります。手元の仕事に応じて、用語の使い方を変えます。開発チームと運用チームには、使用方法のニーズが異なります。

モニタリングはモニタリングです。通常は進行中で、できれば自動化されています。 MuninNagiosMRTGなどのオープンソースツールはこのカテゴリに分類されます。商用ツールもたくさんあります。このカテゴリにはsar runも継続的に含めますが、その結果は通常監視されていません。監視ツールを使用して、監視対象のリソースがトリガーレベルを上回ったり下回ったりしたときにアラートをトリガーできます。多くの監視ツールは、異種環境でうまく機能します。

プロファイリングは通常、特定のプログラムで行われ、どのコードが最も多くのリソースを使用しているかを確認します。多くの場合、これはCPU時間ですが、メモリ、I/O、および実行(ウォール)時間も含まれます。通常、最適化の候補コードを識別するために使用されます。プロファイリングツールは、言語やプラットフォームに依存する傾向があります。

別の種類のプロファイリングは、ログや監視データを使用して行われます。これは使用状況プロファイリングであり、さまざまな理由で実行できます。これを行うためのツールはあまり見つかりませんでした。

トレースはいくつかの方法で使用します。最も頻繁に、私はネットワークルートをトレースします。ネットワークとファイアウォールの設定に応じて、さまざまなツールを使用して、多少の成功を収めることができます。これらのほとんどには、名前または説明にtracerouteがあります。

プログラムトレースは、プログラムの実行をトレースします。これは通常、テスト状況で行われます。これは、いくつかの方法で(私の使用法と経験の順序で)実行できます。

  • straceなどのツールを使用してトレースを呼び出し、どのコードが呼び出されているかを確認します。これは、プログラムが失敗した理由や期待どおりに応答しない理由を判別するのに役立ちます。
  • トレースレベルのログ。これは、コードに含まれている適切なログステートメントに依存します。ほとんどのロギングスイートは、このレベルの詳細をサポートしています。トレースレベルのログでは、コードカバレッジが不十分になる傾向があります。通常、必要に応じて追加し、将来の使用のためにコードに残します。
  • コードカバレッジトレースは、コードのどの部分がテストスイートで実行されたかを記録します。これは、欠落しているテストケースを特定するのに役立ちます。コードの100%をカバーすることは困難です。通常のフローを100%カバーできるはずです。
  • デスクチェック:コードを読み取ってコードをトレースします。大規模なプログラムではあまり有用ではありませんが、ユニットテストのエッジケースを特定したり、可能性のあるソースが絞り込まれたときに起こりうる問題を特定したりするための優れた方法です。 Som = e IDEおよびエディターにより、実装コードへの呼び出しを比較的簡単に追跡できます。
  • ライブデバッグ;デバッガーを使用して実行中のコード実行のトレース。実行命令を命令ごとに追跡することは可能ですが、問題がタイミングの問題である場合は、不明瞭になる可能性があります。現在の命令にコードをリンクできるデバッガーは非常に役立ちますが、プログラムのデバッグバージョンをビルドする必要がある場合があります。
11
BillThor