Pythonエージェントは、Pythonプロセスとインタプリタのパフォーマンスを分析できるように、ランタイムメトリクスを記録します。これには、CPU使用率、メモリ使用率、ガベージコレクションに関するメトリクスが含まれます。
CPU使用率
CPUランタイムメトリクスでは、ユーザーとシステムのCPU使用率を調べてCPUの使用状況を監視したり、CPUのさまざまなコンポーネントに費やされた時間を確認したりすることができます。以下のようなCPU使用率のメトリクスがあります。
- CPU Time: CPUの異なる状態で費やされている時間を追跡します。これには、ユーザー(アプリケーションコードを実行している時間)とシステム(オペレーティングシステムに費やした時間)が含まれます。この指標は、総経過時間を秒単位で表します。
- CPU Utilization: CPUのさまざまなコンポーネントが時間の経過とともに利用している処理リソースの量を分析します。これには、ユーザーコンポーネント(アプリケーションコードの実行)とシステムコンポーネント(カーネルコードの実行)が含まれます。この指標は、指定されたCPUコンポーネントに費やされた時間を、経過したCPU時間の合計で割った割合として報告されます。
メモリ使用量
システム全体のメモリ消費量や、プロセスやホストごとの使用率を監視することができます。以下のメモリ使用量のメトリクスがあります。
- Total Physical Memory: システムで使用されている総物理メモリの量(メガバイト)を長期的に監視します。この指標は、個々のプロセスIDでも利用可能です。
- Memory Utilization: システムや個々のプロセスのメモリ使用率を長期的に追跡します。この指標は、システム(または特定のプロセス)で使用されている物理メモリの合計を、利用可能なメモリの合計で割った値で表されます。
ごみ収集
重要
ガーベッジコレクションのプロファイリングは、 Pythonエージェントのバージョン6.2.0.156以降で利用可能です。 エージェントではデフォルトで無効になっています。有効にするには、こちらのドキュメント をご覧ください 。
ガベージコレクタは、使用されていないデータオブジェクトを見つけ、そのメモリ空間を別のプロセスが使用できるように取り戻します。Pythonエージェントは、以下のガベージコレクションメトリクスを提供します。
- Object Count by Type: ガベージコレクタによって収集されている最も一般的なオブジェクトタイプについて、関連する収集数を表示することで洞察を得ることができます。 top_object_count_limit setting を設定することで、このメトリクスタイプで報告されるオブジェクトタイプの最大数をカスタマイズできます。
- Object Count by Generation: ガベージコレクタの各世代で収集が行われると、生き残ったオブジェクトはより上位の世代に昇格します。この指標では、ガベージコレクタの各世代に保存されているオブジェクトの数を時系列で見ることができます。
- Total Time by Generation: ガベージコレクタがコレクションの各世代で費やしている時間を分析します。
- ガベージコレクタのコレクション: コレクションの数は、世代ごとに設定されたオブジェクトのしきい値に影響されます。しきい値に達すると、コレクション処理が開始されます。コレクションは、アプリケーションコード内で gc.collect() を呼び出して手動でトリガーすることもできます。この指標は、各世代で発生したガベージ・コレクタ・スイープの数を時系列でレポートします。
- Garbage Collector Uncollectable: 場合によっては、ガベージコレクタが特定のオブジェクトに到達して解放することができず、収集不能と判断されることがあります。この指標では、各世代でガベージコレクタが回収不能としたオブジェクトの数を見ることができます。
- Garbage Collector Collected: この指標は、各世代でガベージコレクタが収集したオブジェクトの総数を報告します。