[AIX] VolumeGroup のミラーリングで syncvgの -P オプション変更によるパフォーマンスの確認 

#### はじめに

AIX のボリュームグループ・ミラーリングで mirrorvg 時には同期をせず、syncvg を使用した同期の際に -P オプションを指定すると論理区画の並行同期が可能になります。
syncvg -P オプションの効果を検証しました。


---
参考：
　[Power Systems AIX: FAQ集 - LVM -](https://www.ibm.com/support/pages/power-systems-aix-faq%E9%9B%86-lvm)
> AIXのmirrorvg機能：rootvgと非rootvgにおけるミラーリングの設定手順と注意点

　[mirrorvg コマンド](https://www.ibm.com/docs/ja/aix/7.2?topic=m-mirrorvg-command)
>-s Disable Sync　: ミラーのどのタイプの同期もとらずに mirrorvg コマンドを即時に戻します。このオプションを使用すると、論理ボリュームのミラーが存在していても、syncvg コマンドとの同期がとれるまでは、オペレーティング・システムによって使用されません。

　[syncvg コマンド](https://www.ibm.com/docs/ja/aix/7.2?topic=s-syncvg-command)
>-P NumParallelLps : 並列に同期化された論理区画の数。 NumParallelLps の有効範囲は 1 から 32 まで。 

---

#### 環境

AIX 7.2 TL3 SP1
```
# oslevel -s
7200-03-01-1838
```

ボリューム・グループ構成(ミラーリング前)

・rootvg
・datavg1 　<＝検証対象のボリュームグループ

```
]# lspv
hdisk0          00f62fc64a541a41                    rootvg          active
hdisk1          00f98db5fc5123a3                    datavg1         active
hdisk2          00f98db5fcb1bca9                    None
```

LV 構成(ミラーリング前)

```
# lsvg -l datavg1
datavg1:
LV NAME             TYPE       LPs     PPs     PVs  LV STATE      MOUNT POINT
testlv0             jfs2       35      35      1    open/syncd    /test0
testlv1             jfs2       35      35      1    open/syncd    /test1
testlv2             jfs2       35      35      1    open/syncd    /test2
testlv3             jfs2       35      35      1    open/syncd    /test3
testlv4             jfs2       35      35      1    open/syncd    /test4
testlv5             jfs2       35      35      1    open/syncd    /test5
testlv6             jfs2       35      35      1    open/syncd    /test6
testlv7             jfs2       35      35      1    open/syncd    /test7
testlv8             jfs2       35      35      1    open/syncd    /test8
testlv9             jfs2       35      35      1    open/syncd    /test9
testlv10            jfs2       35      35      1    open/syncd    /test10
testlv11            jfs2       35      35      1    open/syncd    /test11
testlv12            jfs2       35      35      1    open/syncd    /test12
testlv13            jfs2       35      35      1    open/syncd    /test13
testlv14            jfs2       35      35      1    open/syncd    /test14
testlv15            jfs2       35      35      1    open/syncd    /test15
testlv16            jfs2       35      35      1    open/syncd    /test16
testlv17            jfs2       35      35      1    open/syncd    /test17
```

・hdisk1,2 の queue_depth は 20
```
# lsattr -El hdisk1 | grep queue
queue_depth     20                                                  Queue DEPTH                      True+
# lsattr -El hdisk2 | grep queue
queue_depth     20                                                  Queue DEPTH                      True+
```

・hdisk1,2 の algorithm は shortest_queue  

```
# lsattr -El hdisk1 | grep algo
algorithm       shortest_queue                                      Algorithm                        True+
 lsattr -El hdisk2 | grep algo
algorithm       shortest_queue                                      Algorithm                        True+
```

---
#### 検証

extendvg コマンドで hdisk2 を datavg1 に追加します。

```
# extendvg datavg1 hdisk2
```


##### -s を使用しない mirrorvg の場合

何も指定しないミラーリングを実行します。

```
# time mirrorvg datavg1 hdisk2
0516-1804 chvg: The quorum change takes effect immediately.

real    2m50.67s
user    0m1.16s
sys     0m2.73s
```

-> 所要時間 2分50秒


ミラーリングを解除、hdisk2 の削除と再追加を実行した状態でsyncvg を確認します。

(下記を検証毎に実行)

```
# unmirrorvg datavg1 
# reducevg datavg1 hdisk2
# extendvg datavg1 hdisk2
```


##### ケース1. syncvg -P 32 
```
# date; time syncvg -P 32 -v datavg1 ; date
Mon Sep  5 12:00:47 JST 2022

real    0m28.26s
user    0m0.13s
sys     0m2.13s
Mon Sep  5 12:01:15 JST 2022
#
```
-> 所要時間 28 秒

---
##### ケース2. syncvg -P 16

```
# date; time syncvg -P 16 -v datavg1 ; date
Mon Sep  5 12:07:10 JST 2022

real    0m32.10s
user    0m0.12s
sys     0m2.01s
Mon Sep  5 12:07:42 JST 2022
#
```

-> 所要時間 32 秒


---
##### ケース3. syncvg -P 8

```
# date; time syncvg -P 8 -v datavg1 ; date
Mon Sep  5 12:22:56 JST 2022

real    0m42.61s
user    0m0.13s
sys     0m1.95s
Mon Sep  5 12:23:39 JST 2022
#
```

-> 所要時間 42 秒


---
##### ケース4. syncvg -P 2

```
# date; time syncvg -P 2 -v datavg1 ; date
Mon Sep  5 12:28:18 JST 2022

real    1m41.16s
user    0m0.13s
sys     0m1.94s
Mon Sep  5 12:30:00 JST 2022
#
```

-> 所要時間 1分41秒

---
##### ケース5. syncvg -P オプションなし

```
# date; time syncvg -v datavg1 ; date
Mon Sep  5 12:32:54 JST 2022

real    2m48.81s
user    0m0.14s
sys     0m1.98s
Mon Sep  5 12:35:43 JST 2022
#
```

-> 所要時間 2分48秒

----
#### 結果、考察

・　当環境では syncvg -P 32 での実行が一番早くコマンドが完了した。
・　mirrorvg の通常実行は syncvg で同期する際の -P オプション指定なしと同じパフォーマンス。
・　環境依存のため、他の環境で同様の結果となるとは限らない。
　　　=> VG,LV 構成、queue_depthなどのhdisk属性値、アダプター性能と属性値、ストレージ性能と属性値などが結果に影響する

----
#### おわりに


環境に依存することは前提にありますが、他環境でもミラーリングを実行する際は syncvg で論理区画の並列同期を実行すると処理が早く完了するのではと考えられます。


以上です。