これは 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 プラットフォーム)
【ご参考】
.png)
.png)
下图显示了使用 Auth0 服务器进行的身份验证和通过 IAM 进行的基于 JWT 令牌的授权。从授权服务器获取 JWT 令牌:使用 JWT 令牌通过 IAM 中定义的代理路由访问 FHIR 服务器:.png)
这展示了如何在 InterSystems IRIS for Health 中配置 OAuth2.0 以确保 FHIR 服务器的安全。