
InterSystemsCachéには、Cachéモニタと呼ばれる組み込みのコードプロファイリングツールがあることを誰もが知っているわけではありません。
(明らかに)その主な目的は、Cachéで実行されているプログラムの統計を収集することです。 すべてのプログラムの一般的な統計と、個々のプログラムごとの詳細な行ごとの統計の両方を提供できます。
Cachéモニタの使用
Cachéモニタの使用シナリオとその主な機能を見てみましょう。 そのため、プロファイラーを起動するには、ターミナルで監視する予定のエリアに移動し、%SYS.MONLBLシステムルーチンを起動する必要があります。
zn "<namespace>" do ^%SYS.MONLBL
最後のコマンドの結果、次が表示されます。

2つのポイントのみがあります。最初のポイントではプロファイラー自体を起動でき、2番目のポイントでは起動をシミュレートして監視に必要なメモリを計算できます。 同時に多数のプログラムを監視するには、大量のメモリが必要になる場合があります。 これが必要な場合は、 gmheapパラメーターの値を増やす必要がある場合があります( システム管理ポータル => システム管理 => 構成 => 詳細設定 => 詳細メモリ設定で値を増やすことができます。このパラメーターを変更するには、Cachéの再起動が必要です)。
最初のアイテムを選択しましょう。 プログラム名を入力するプロンプトが表示されます。 「*」を使用したマスクがサポートされています。 すでに追加されているすべてのプログラムを表示するには、「?L」と入力する必要があります。
この例では、自分の地域のすべてのプログラムを監視するため、単に「*」と入力します。

入力の最後は空の文字列の入力です。 ご覧のとおり、監視用に246個のプログラムが選択されました。
さらに、監視のためのメトリックを選択することをお勧めします。 Cachéモニタでは、50を超えるメトリックを追跡に使用できます。以下に例を示します。
- グローバルリンクの数
- 文字列の実行に費やした時間
- Cachéオブジェクトのスクリプト行数
- 実行された行の数
- 特定の行の実行数
- ロックコマンドの数
- 成功したロックコマンドの数など。
ほとんどの場合、プログラマは最小限のメトリック(行数、実行された行数、特定の行が実行された回数、特定の行を実行する時間)のみを必要とします。 これらの統計は、アイテム1(デフォルト値)を選択すると収集されます。 必要に応じて、すべての統計を収集するか、特定のメトリックを選択することもできます。 この例では、最小メトリックに焦点を当てます。

次のステップでは、監視するプロセスを選択するよう求められます。 特定のプロセス(PIDのリストを指定する必要があります)、現在のプロセス、またはすべての統計を収集できます。 再びデフォルト値に注目します。
正常に開始された場合は、「モニターが開始されました」というメッセージが表示されます。 Enterを押すと、モニターメニューが表示されます。

ポイントを調べてみましょう。
モニターの停止 - モニターの完全停止。 これにより、収集されたすべての統計も消去されます。
モニターの一時停止 -モニターを一時停止して、収集された統計を継続して保存します。
カウンターをクリア -統計をクリアします。
収集された統計の出力には、次の4つのポイントが関与します。 最初の2つが最もよく使用されます-特定のプログラムの詳細な行ごとの情報の出力と、実行されたすべてのプログラムの一般化された統計の出力。 これらの項目を選択すると、統計を表示するプログラムのリスト、および書き込むファイルの名前を入力するように求められます(ファイルを指定しない場合、統計は端末に直接表示されます)。 INTコードに加えて、ソースファイル(存在する場合)を出力ファイルに含めることは可能ですが、詳細な統計情報のために収集されません。
すべての準備が整ったら、実行する必要があるプログラムを実行してから、統計を確認します。
注意! Cachéモニタを使用すると、パフォーマンスの面でかなりのオーバーヘッドが発生する可能性があるため、実稼働システムでの使用はお勧めしません。 開発およびデバッグ中にのみ使用してください。
小ボーナス
結果をより便利に表示するために、GitHubリポジトリからダウンロードできる小さなWebアプリケーションを作成しました: github.com/intersystems-ru/monlbl-viewer
現時点では、次のことが可能です。
- Cachéモニタの開始、停止、一時停止/再開。
- 最小ソフトウェアメトリックを追跡します。
- プログラムの一般的な統計を表示します。
- 特定のプログラムの詳細な行ごとの統計を表示します。
- 構文の強調表示。
- クラスメソッドまたはプログラム(プログラムラベル)の呼び出しからこのクラスメソッドまたはプログラムのコードへの遷移(コードが利用可能で、モニターによって監視されている場合)。
計画の内容:
- 監視する領域(名前空間)を選択する機能を提供します。
- オブジェクトメソッドの呼び出しからプログラム関数の呼び出しから、そのメソッドまたは関数のコードへの移行。
- CLSクラスのソース行の中間コードINTの行へのマッピング(統計を失うことなくそのような可能性がある場合)。
いくつかのスクリーンショット


アプリケーションは、MITライセンスの下で配布されます(つまり、「現状のまま」配布されます)。 Cachéのドキュメント化されていない機能を使用します。これらの最もドキュメント化されていない機能をバージョンごとに変更する可能性があるため、異なるバージョンでのパフォーマンスは保証されません。
使用するには、リポジトリからダウンロードしたファイルを、統計を収集する領域にインポートする必要があります。