記事
· 12 hr 前 9m read

^SystemPerformance ユーティリティの使用方法

これは InterSystems FAQ サイトの記事です。

^SystemPerformance ユーティリティ (旧:^pButtons)  を使用すると、 InterSystems製品が稼働するプラットフォームに関する詳細なパフォーマンス・データを収集することができます。

収集できるのは以下の情報になります。

・IRIS の設定:構成、ドライブの割り当てなど 
mgstat:IRISのパフォーマンスメトリック(グローバル参照や物理読み込み、など)
・オペレーティングシステムのリソースとパフォーマンスに関するメトリック
 ※Unixの場合は vmstatとiostat、Windowsの場合は パフォーマンスモニター
・その他の有用なメトリック

こちらの記事では、^SystemPerformanceツール(旧:^pButtons)の実行方法と、出力情報の利用方法についてご紹介します。


【実行方法】

※^SystemPerformance の実行にはオペレーティングシステムの管理者権限が必要です。
管理者としてシステムにログインしてから実行してください。特にWindowsで UAC(User Access Control)が有効になっている場合は特別な実行方法が必要になります。詳しくは
 こちらIMPORTANT: の箇所)をご確認ください。

★その1:既定のプロファイルを使用する場合

^SystemPerformanceユーティリティにはいくつかの既定のプロファイルが用意されています。プロファイル通りの情報収集を行うのであれば、選択して実行すればすぐに情報収集を行えます。
ターミナルより、以下のように実行します。%SYSネームスペースで実行します。

%SYS>set $namespace= "%SYS"      // または、zn "%SYS"
%SYS>do ^SystemPerformance
Current log directory: c:\intersystems\iris\mgr\
Windows Perfmon data will be left in raw format.
Available profiles:
     1  12hours     - 12 hour run sampling every 10 seconds
     2  24hours     - 24 hour run sampling every 10 seconds
     3  30mins      - 30 minute run sampling every 1 second
     4  4hours      - 4 hour run sampling every 5 seconds
     5  8hours      - 8 hour run sampling every 10 seconds
     6  test        - A 5 minute TEST run sampling every 30 seconds
 
Select profile number to run: 6  // test プロファイルを実行してみます(30秒ごとに5分間情報収集)
Collection of this sample data will be available in 420 seconds.  
    // 420秒後に情報収集が終わります
The runid for this data is 20250819_110952_test.         

結果は、mgr フォルダに html 形式で出力されます。 例:ServerName_InstanceName_20250819_110952_test.html
情報収集中複数のファイルが生成されますが、最後に上記htmlにまとめられます

コマンドで実行する場合は、以下のようになります。

// プロファイルの実行(引数にプロファイル名を指定)
set runid=$$run^SystemPerformance("test") 

// もし、html 形式のファイルが生成されていない場合は以下のコマンドで出力します
set sc=$$Collect^SystemPerformance(runid)

// 途中で計測を止めたい場合は以下のコマンドを実行します
// 第1引数:中止するレポートの runid
// 第2引数:1 (default) = ログファイルを削除, 0 = ログファイルを残す
write $$Stop^SystemPerformance(runid,0)

 

タスクマネージャで実行したい場合は、上記コマンド $$run^SystemPerformance を登録してスケジュールを起動します。

管理ポータル: 
[ホーム] > [タスクマネージャ] >[新規タスクスケジュール] より、

1.[タスクスケジューラウィザード] を起動します。
2.[このタスクを実行するネームスペース] ドロップダウン・リストから [%SYS] を選択
3.[タスクタイプ] ドロップダウン・リストから [レガシータスク実行] を選択
4.[実行コード] テキスト・ボックスに以下のコードを入力
5.set ^zmgstat(+$h)=$$run^SystemPerformance("test")
6.[次へ] をクリックし、スケジュールの指定を行います。


★その2:カスタムプロファイルを使用する(例:2秒単位で24時間収集)

// プロファイルの作成(情報取得期間と間隔の定義)
set rc=$$genprofile^SystemPerformance("24:",2)   // 24時間(24:)の間 2秒ごとに収集
                                                 //   第1引数:プロファイルを実行する期間。有効な形式は、"hh:mm", "hh:", "mm"。
                                                 //   第2引数:各サンプルを実行する頻度 (秒単位)
                                                 // このコマンドで24hours_2 というプロファイルが生成されます。
                                                 // 生成されたプロファイルは "do ^SystemPerformance" で確認できます。
// 生成したプロファイルを指定して情報取集の実行
set ^zmgstat(+$h)=$$run^SystemPerformance("24hours_2")
                                                 // ^zmgstat(+$h)に戻り値の runid を記録します。  
                                                 // 結果は、mgr フォルダに html 形式で出力されます。
                                                 // 例:ServerName_IRIS_20230615_132100_24hours_2.html


^SystemPerformance ユーティリティによるデータ収集はシステムのパフォーマンスにほとんど影響を与えません。

ただし、出力ファイルによりディスク容量がいっぱいにならないようにするため、ログディレクトリを本番データとは異なる場所に変更し、蓄積した出力ファイルをそちらに保管するようにしてください。
既定の出力ディレクトリは、<インストールディレクトリ>\mgr ディレクトリですが、以下のコマンドで変更できます。

%SYS>do setlogdir^SystemPerformance("directory")



【結果を参照できる便利なツール】

^SystemPerformance ユーティリティで収集した情報は、 InterSystems 独自のパフォーマンスログ mgstat と、オペレーティングシステムのリソースとパフォーマンスに関するメトリック、の両方を含んだ HTML として生成 されます。
以下で紹介しているツールを使用すると、結果を 
CSVにエクスポートできるので、Excelで簡単にパフォーマンスグラフを作成することができるようになります。
是非ご利用ください。

^mypButtons を利用して InterSystems IRIS パフォーマンスをチェックしてみましょう

YASPE(グラフ表示)
 ※Docker Container使わないで使用する方法は以下(Pythonインストールの必要あり)
 https://github.com/murrayo/yaspe/blob/main/README.md#running-without-a-container

 

【参照可能な情報例】

^SystemPerformance ユーティリティは、プラットフォーム固有のレポートを生成します。
以下のドキュメントで、プラットフォーム固有の各レポートのセクションについて説明しています。
パフォーマンス・レポートの詳細

参照可能な情報について、いくつかのセクションで具体的にどのような情報が収集できるのか説明します。
まず、すべてのプラットフォームで生成されるmgstatについてご紹介します。

mgstatの場合、

Glorefs グローバル変数に対する全アクセス回数/秒
RemGrefs リモートデータベースのグローバル変数に対する全アクセス回数/秒
Gloupds グローバル変数に対する変更アクセス(Set,Kill)回数
RemGupds リモートのグローバル変数に対する変更アクセス(Set,Kill)回数
PhyRds データベースファイルに対するブロック読込みI/O回数/秒
PhyWrs ライトデーモンによるデータベースファイルに対するブロック書き込みI/O回数/秒
AddBlk ECPサーバからのリモートグローバル変数のブロック転送回数/秒
Rdratio 1秒当たりの論理ブロック読み取り回数 / 1秒当たりのデータベースファイルに対するブロック読込みI/O回数
WDTime ライトデーモン書き込み処理時間
Jrnwrts ジャーナルファイルへの書き込みI/O数/秒

※補足
PhyRdsとRdratio:mgstatのデータをグラフ化したPhyRds(物理的読み込み)とRdratio(読み込み比率)
システムパフォーマンスから予想される詳細な情報を把握し、キャパシティプランニングを立てるのに役立ちます。

詳細は以下のドキュメントをご覧ください。
^mgstat を使用したパフォーマンスの監視


次に、Microsoft Windows perfmon ユーティリティ(Windowsパフォーマンスモニタ)で取得できる情報についての紹介です。
perfmonの場合、

Processor(_Total)\% Processor Time 全プロセッサの使用率
Current Disk Queue Length ディスクへのI/O待ち数
Disk Writes/sec ディスクへの1 秒あたりの書き込み回数
Avg. Disk sec/Read 読み込みリクエストを出してから返ってくるまでの時間(1読み込みでかかる時間)
Avg. Disk Read Queue Length Disk Read待ちのキュー
Disk Transfers/sec 秒あたりのRead/Writeの合計
Avg. Disk sec/Write 書き込みリクエストを出してから返ってくるまでの時間(1書き込みでかかる時間)
Avg. Disk Write Queue Length Disk Write待ちのキュー

 

Linuxの場合は、vmstatコマンドでメモリやCPU使用率などの情報を取得します。
vmstat の場合、

procs r 実行可能状態のプロセス数(ランキュー)
b 割り込み不可能なスリープ状態にあるプロセス数
memory swpd 使用中の仮想メモリサイズ、スワップサイズ(KB)
free 空きメモリサイズ(KB)
buff バッファとして使用しているメモリサイズ(KB)
cache キャッシュに使用しているメモリサイズ(KB)
swap si ディスクからスワップインしているメモリサイズ(KB/s)
so ディスクにスワップアウトしているメモリサイズ(KB/s)
io bi ブロックデバイスから受け取ったブロック数(blocks/s)
bo ブロックデバイスに送られたブロック数(blocks/s)
system in クロック割り込みも含む、1秒あたりの割り込み回数
cs 1秒あたりのコンテキストスイッチの回数
cpu us カーネルコード以外の実行に使用した時間割合(ユーザー時間、nice 時間を含む)(%)
sy カーネルコードの実行に使用した時間割合(システム時間)(%)
id CPUがアイドル状態の時間割合(%)
wa CPUがI/O待ちの時間割合(%)
st ゲストOSがCPUを割り当てられなかった時間の割合(%)


その他、様々な情報を収集しますので、詳細はドキュメントをご覧ください。
InterSystems IRIS パフォーマンス・データ・レポート (Microsoft Windows プラットフォーム)
InterSystems IRIS パフォーマンス・データ・レポート (Apple macOS プラットフォーム)
InterSystems IRIS パフォーマンス・データ・レポート (IBM AIX® プラットフォーム)
InterSystems IRIS パフォーマンス・データ・レポート (Linux プラットフォーム)


enlightened【ご参考】

パフォーマンス低下時の情報収集ツールについて
^SystemPerformance を使用したパフォーマンスの監視

ディスカッション (0)0
続けるにはログインするか新規登録を行ってください