VMware GemFireのVSD(Visual Statistics Display)を試す

VMware GemFire(旧Tanzu GemFire)にはVisual Statistics Display (VSD)と呼ばれるパフォーマンス測定ツールがついている。
これを試しに触ってみた時のメモ。
参考にした公式ドキュメントは[こちら](https://docs.vmware.com/en/VMware-GemFire/10.0/gf/tools_modules-vsd-overview.html)。

## システム要件
VSDがサポートするOSは以下。
- Linux
- Mac
- Windows

このようにどこでも動くのだが、VSDは32bitアプリケーションであるため、各OSで32bitアプリケーションが動くようにライブラリ等をインストールしておく必要がある。

ここではMacを使って進めていく。

## インストール
VSDはX Window Systemが入っている必要があり、Macなどでそのまま実行すると以下のエラーが出る。
```sh
Application initialization failed: no display name and no $DISPLAY environment variable
```
そのため、X Window Systemを入れる。Macの場合は[XQuartz](https://www.xquartz.org/)がデファクトなのでこちらを入れる。
```sh
brew install xquartz
```
一度ログアウトしてログインし直すと、環境変数`DIPLAY`に値が設定される。
```sh
$ env |grep -i display
DISPLAY=/private/tmp/com.apple.launchd.zyPbDxMfTI/org.xquartz:0
```

[VMware Tanzu Network](https://network.tanzu.vmware.com/products/pivotal-gemfire)にサインインし、VSDをダウンロードする。
解凍して、bin以下にあるvsdコマンドを実行する。
なお、Macの場合はセキュリティ観点で実行が抑止されることがある。その場合は、 [システム環境設定] -> [Privacy & Security] -> [Allow Anyway]をクリックして実行を許可する。
![1695446967376.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/b80b8564-c158-3098-f23f-d4cadad0a49f.png)

問題なければ、以下のようなGUIが表示される。
![1695598850389.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/40233fca-dbe4-4b9a-9a74-0791d501d093.png)


## 動作確認
GemFireの統計情報を収集するために、Serverに対してgemfire.propertiesで以下のパラメータを指定して起動する。
```sh
statistic-sampling-enabled=true
statistic-archive-file=myStats.gfs
```
なお、他の設定方法や細かい設定例は公式ドキュメントの[こちら](https://docs.vmware.com/en/VMware-GemFire/10.0/gf/managing-statistics-setting_up_statistics.html)に記載がある。

gemfire.propertiesを作成する。
```sh
cat << EOF > ./config/gemfire.properties
statistic-sampling-enabled=true
statistic-archive-file=myStats.gfs
EOF
```
今回、接続先のLocatorは[前回](https://qiita.com/ipppppei/items/1391f20ff6682320e9f9)作成したものを利用するものとする。
接続する。

```sh
connect --locator 192.168.0.22[10334]
```
先程のgemfire.propertiesを`--properties-file`で指定してServerを起動する。
```sh
start server --name server2 --properties-file ./config/gemfire.properties --server-bind-address=192.168.0.22  --server-port=40411
```
起動すると、`statistic-archive-file`で指定した`myStats.gfs`が作成されていることが分かる。
```
$ tree server2/
server2/
├── myStats.gfs
├── server2.log
└── vf.gf.server.pid
```
しばらく放置して情報が溜まるのを待った後、VSDで解析してみる。
```sh
vsd ~/GemFire/work/server2/myStats.gfs
```
実行すると、以下のようなウィンドウが表示される。
![1695599282062.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/0110fdd6-290d-cd51-f519-b70eeb79c9d6.png)
ウィンドウ幅を広げるには、右下の〼みたいなところを掴んで引っ張るとウィンドウサイズを変更できる。
![1695599373070.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/6db35ae4-6425-151d-f215-234a5ba62adb.png)
ここでは試しにVMStatsをグラフ化してみる。
Nameの列に`vmStats`があるのでこれをクリックすると、下の枠にcpusやらdaemonThreadsやらvmStatsで取得している項目が表示される。
![1695599569505.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/8db5e94b-3797-3fbe-7689-c646c5d7282f.png)
ここではまず試しに空きメモリを確認する。freeMemoryをダブルクリックする。
するとチャートが表示される。
![1695599902485.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/7bc6bbeb-90cf-1057-bebd-3513343cd40c.png)
別の項目をダブルクリックすると、重ねて表示することも出来る。
ここでは試しにmaxMemoryを追加してみた。
![1695599949309.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/eee0ed4c-cbef-07c6-23df-817d10383134.png)
表示項目は上部のプルダウンから変更も可能。
![1695600011520.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/547981/f6e5c03f-00ba-2294-1894-4698e5b7a26c.png)


## まとめ
今回はVSDについて初歩的な動作確認を行った。
感触としてはUIに癖があって学習コストが必要な点、あくまでも静的ファイルの分析ツールであり、他のシステムとの連携なども難しそうな点から使い勝手は良いようには思えなかった。
今後については[Aria Operations for Applications(旧Tanzu Observability)との連携機能](https://docs.vmware.com/en/VMware-GemFire/10.0/gf/tools_modules-vmware-aria-operations.html)はあり、Prometheus向けのメトリクスも公開できるようなので、こちらで代用できないかを検討したいと思う。
また、VSDを本格的に使いたい場合は公式サイトの[こちら](https://docs.vmware.com/en/VMware-GemFire/10.0/gf/tools_modules-vsd-viewing_stats_in_vsd.html)が参考になりそうなので、必要に応じてもう少し深掘りしたいと思う。