^mypButtons を利用して InterSystems IRIS パフォーマンスをチェックしてみましょう
[背景]
InterSystems IRIS 製品には、便利なツール ^SystemPerformance (Caché / Ensemble 時代は ^pButtons と呼ばれていました) があり、データベースのパフォーマンス情報を HTML 形式で出力してくれます。 IRIS for Windows で ^SystemPerformance を実行すると、 InterSystems 独自のパフォーマンスログ mgstat と Windows パフォーマンスログの両方を含んだ HTML が生成されます。
^SystemPeformance は良いレポートを出力してくれるのですが、たとえば、それを元にパフォーマンスグラフを作ろうとすると、HTMLファイルから手動でコピーし、それをExcelなどに貼り付ける必要があります。これに関連して、すでに、多くの開発者が この開発者コミュニティ記事 にあるように便利なツールを作成しています(記事原文の作成者 @Murray Oldfield さん、ありがとうございます)
本日は、これに関連した新しいツール ^mypButtons をご紹介します!
[^mypButtons が他のツールに比べて新しい点]
mypButtons.mac は、ページ右上の OpenExchange ボタンからダウンロードいただけます。
- ^mypButtons は、mgstat と Windows パフォーマンスログ を同じ行に出力します。これにより、"PhyWrs" (mgstat) と "Disk Writes/sec" (Win perfmon) を同じグラフで比較するなども可能です。
- ^mypButtons は複数の HTML ファイルを一気に読み、1つの CSV にまとめて生成できます。
- ^mypButtons は CSV ファイルを実行するお客様のマシン上に生成するため、グラフの作成がより簡単になっています。
- ^mypButtons は パフォーマンスを把握するためにおすすめのカラムをピックアップして CSV に出力しています。そのため、どなたでも簡単にパフォーマンス関連グラフを作ることができます!
注意! 生成される mypButtons.csv をお使いいただくには, "every 1 second" プロファイルによる SystemPerformance のHTMLをご利用ください。
[ルーチン呼び出し概要]
do readone^mypButtons("C:\temp\dir\myserver_IRIS_20230522_130000_8hours.html","^||naka")readone ラベルは、指定された1つの SystemPerformance HTML ファイルを読みこみ、指定グローバルに情報を格納します。上記の例では myserver_IRIS_20230522_130000_8hours.html を読みこみ、^||naka にデータを格納します。
do readdir^mypButtons("C:\temp\dir","^||naka")readdir ラベルは、指定されたフォルダ以下にある SystemPerformance HTML ファイルすべてを読みこみ、指定グローバルに情報を格納します。上記の例では C:\temp\dir 以下にある複数の HTML ファイルを読みこみ、^||naka にデータを格納します。
do writecsv^mypButtons("C:\temp\csv","^||naka")writecsv ラベルは、指定グローバルの情報をもとに、以下 3つの CSV ファイルを、指定フォルダ直下に生成します。
- mgstat.csv
- perfmon.csv
- mypButtons.csv
ここで mypButtons.csv にはデフォルトで以下のカラム情報が含まれます。これは私がお勧めする「パフォーマンス計測時に、最初にチェックすべき項目」たちになります。
- mgstat: Glorefs, PhyRds, Gloupds, PhyWrs, WDQsz, WDphase
- perfmon: Available MBytes, Disk Reads/sec, Disk Writes/sec, % Processor Time
本ユーティリティは、InterSystems IRIS, InterSystems IRIS for Health, Caché, Ensemble for Windows で動作します。
[^mypButtons を利用してパフォーマンスグラフを生成するまでの具体的な手順例]
(1) まず ^SystemPerformance を実行し、InterSystems 独自のパフォーマンス統計 mgstat と Windows パフォーマンスモニタ統計 perfmon を取得します。InterSystems IRIS にはいくつかのプロファイルが最初から用意されているため、すぐ実行できます。IRIS ターミナルを起動し、以下を実行します。
%SYS> do^SystemPerformance
Current log directory: c:\intersystems\iris\mgr\
Windows Perfmon data will be left in raw format.
Available profiles:
112hours - 12-hour run sampling every 10 seconds
224hours - 24-hour run sampling every 10 seconds
330mins - 30-minute run sampling every 1 second
44hours - 4-hour run sampling every 5 seconds
58hours - 8-hour run sampling every 10 seconds
6 test - 5-minute TEST run sampling every 30 seconds
select profile number to run: 3注意! mypButtons.csv をお使いいただくには、 "every 1 second" =「1秒間隔で情報を取得する」プロファイルをご利用ください。製品には最初から、1秒間隔に情報を取得する "30 mins" =「30分間情報を取得する」プロファイルが用意されていますので、上記例でもこれを利用しています。もし別のプロファイルを作成したい場合は ドキュメント をご参照ください。
(2) パフォーマンス取得が終わると、irisdir\mgr 直下に、JP7320NAKAHASH_IRIS_20231115_100708_30mins.html といった名前のHTMLファイルが出力されます。ブラウザで開き、以下のように mgstat と perfmon セクションをクリックすると、カンマ区切りの生データを見ることが出来ます。
(3) この生成 HTML を ^mypButtons を使って、以下のようにロードします。
USER> do readone^mypButtons("C:\InterSystems\IRIS\mgr\JP7320NAKAHASH_IRIS_20231115_100708_30mins.html","^||naka")第1引数の HTML ファイルをよみ、第2引数で指定したグローバルに HTML ファイル内のパフォーマンスデータを格納します。
(4) ^mypButtons を使って CSV を出力します。
USER> do writecsv^mypButtons("C:\temp","^||naka")第1引数で指定したフォルダ以下に、第2引数で指定したグローバルに格納されたパフォーマンスデータから、3つの CSV ファイルが出力されます。mypButtons.csv をエクセルで開くと、以下の図のように、mgstat と perfmon ログが1行にまとめて記録されているのがわかります。黄色カラムが mgstat、青色カラムが perfmon です。
(5) この CSV から簡単なグラフを作ってみましょう。カラムB Time とカラムC Glorefs を同時に選択し、以下のように 挿入 メニューから 2-D 折れ線グラフ を選択します。
すると以下のように、"1秒ごとのグローバル参照数" のグラフが出力されます。このログを取得した IRIS インスタンスではほとんど処理が行われていなかったので、つまらないグラフになってしまいましたが、本番環境のサーバで実行すると、とても興味深い情報が得られると思います!
(6) mypButtons.csv には上記だけでなく、私がお勧めする「パフォーマンス確認必須項目」が出力されるようになっています。なぜこれらのカラムが必須なのかご興味をお持ちの方は、ぜひ Murray コミュニティ記事シリーズ をご覧くださいませ。
[出力カラムを変更するために ^mypButtons を編集する]
mypButtons.csv に出力されるカラムを変更したい場合は、writecsv ラベルを編集してください。ルーチンの以下の場所で出力カラムを調整いただけます。
この記事と ^mypButtons が、みなさんの大切な InterSystems IRIS のパフォーマンスを、みなさんご自身で確認いただくきっかけになれば幸いです。Happy SystemPeformance 😆