
本記事では、計測シリーズの一環として「^PERFMON」を使用し、コマンド実行によるデータ収集方法について解説します。
はじめに
^PERFMON については、前回の記事で紹介しています。
詳細は以下をご参照ください。
※出力内容などの詳細については、本記事では割愛します。
今回は、^PERFMON をコマンドから実行する方法を解説します。
毎回ターミナルから設定・出力を行うのが煩雑に感じる場合は、ぜひ本手法をお試しください。
全体の流れ
まずは、全体の処理フローを確認します。
コマンドで実行すると、以下のようになります。
zn "%SYS"
d $$Start^PERFMON() // ① Start Monitor
// 計測中
d $$Pause^PERFMON() // ③ Pause Monitor
d $$Report^PERFMON("R","P","P","D:\Temp\csv\sample.txt") // ④ Report Statistics
d $$Stop^PERFMON() // ⑤ Stop Monitorそれでは、各処理について順に確認していきます。
開始(Start Monitor)
最初に計測の開始です。
実行するネームスペースは「%SYS」になります。
zn "%SYS"
s flg = $$Start^PERFMON([process],[routine],[global],[database],[network])| 項目 | 説明 |
|---|---|
| process | プロセス用スロット数(デフォルト:プロセステーブル数) |
| routine | ルーチン用スロット数(デフォルト:200) |
| global | グローバル用スロット数(デフォルト:100) |
| database | データベース用スロット数(デフォルト:10) |
| network | ネットワークノード数(デフォルト:5) |
※ターミナル実行時に表示される設定値が、そのまま引数として指定可能です。

戻り値の「flg」は%Integer型です。
| 戻り値 | 説明 |
|---|---|
| 1 | 成功 |
| -1 | 他のユーザが実行中 |
| -2 | 実行中 |
| -3 | メモリの割り当てに失敗 |
| -4 | 上記以外でのエラー |
■連続実行した時の各戻り値を確認

一時停止(Pause Monitor)
一時停止は引数なしで実行できます。
s flg = $$Pause^PERFMON()| 戻り値 | 説明 |
|---|---|
| 1 | 成功 |
| -1 | 他のユーザが実行中 |
| -2 | 開始していない |
| -3 | 既に停止中 |
■連続実行した時の各戻り値を確認

レポート出力(Report Statistics)
計測結果をファイルとして出力します。
s flg = $$Report^PERFMON([report],[sort],[format],[output],[list],[data])
// サンプル
w $$Report^PERFMON("R","P","P","D:\Temp\csv\sample.txt")どのようなファイルが出力できるのかは、前回の記事を参照してください。
| 引数 | 説明 |
|---|---|
| report | 出力するレポートの種類 – 必須 G:グローバル動作, R:ルーチン動作, N:ネットワーク動作, C:カスタム |
| sort | レポートのグループ分けと並べ替えの順序 – 必須 P:プロセス, R:ルーチン, G:グローバル, D:データベース, I:着信ノード, O:発信ノード |
| format | 出力形式 – 必須 P:テキスト, D:CSV, X:エクセル, H:HTML |
| output | ファイル名 – 必須 ファイル名を入力する or 0(画面出力) or 未指定(規定ファイル名) |
| list | report=C (カスタム)選択時 メトリックの番号をカンマ区切りで記述する |
| data | レポートするデータの種類 1:1 秒あたりの標準比率, 0:未加工の合計データ |
ファイル出力に慣れるまでは、エラーをよく見る事になると思います。
戻り値から、何が問題なのかが分かりやすいので、うまく出力できない場合は、戻り値を確認して下さい。
| 戻り値 | 説明 |
|---|---|
| 1 | 成功 |
| -1 | 未実行 |
| -2 | 引数がない |
| -3 | カテゴリの設定値に問題あり |
| -4 | ソートの設定値に問題あり |
| -5 | ファイルタイプの設定値に問題あり |
| -6 | [list]の設定値に問題あり |
| -7 | データの形式に不正あり |
停止(Stop Monitor)
最後に計測を停止します。
s flg = $$Stop^PERFMON()| 戻り値 | 説明 |
|---|---|
| 1 | 成功 |
| -1 | 他のユーザが実行中 |
| -2 | 開始していない |
■連続実行した時の各戻り値を確認

その他
測定値のクリア
s flg = $$Clear^PERFMON()| 戻り値 | 説明 |
|---|---|
| 1 | 成功 |
| -1 | 他のユーザが実行中 |
| -2 | 開始していない |
■クリア>停止>クリアの順に実行した際の戻り値を確認

Collect
指定時間内でパフォーマンスデータを自動収集します。
s flg = $$Clear^PERFMON([time],[format],[output])| 引数 | 説明 |
|---|---|
| time | 収集時間(デフォルト:30秒) |
| format | HTML : HTMLファイル ※XMLはデフォルトのため省略可能 |
| output | ファイル名(フルパス) ファイル名を入力する or 0(画面出力) or 未指定(規定ファイル名) |
Collectは、1つのファイルに下記データ種をまとめて出力します。
【サンプルファイル】
下記は、「Global metrics per Global」の一部です。

Global metrics per Routine

おわりに
今回は、^PERFMON をターミナル操作ではなく、コマンドから実行する方法について解説しました。
^PERFMON はインスタンス全体の挙動を把握するための強力な計測ツールですが、ターミナル操作に依存すると運用負荷が高くなりがちです。
本記事で紹介したコマンド実行を活用することで、以下のような運用が可能になります。
- バッチ処理への組み込み
- 定期ジョブによる自動計測
- 検証環境での継続的な性能分析
ボトルネック調査・チューニングの第一歩として、ぜひ活用してみてください。
最後までお読みいただき、ありがとうございました。


