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