POWER9 サーバー xgzip(NX (gzip) Accelerator) の検証 in AIX


##### PowerSystems POWER9 サーバーの新機能 NZ(gzip) Accelerator を検証してみました。


参考：
[Processor Compatibility modes on IBM POWER9 based systems](https://www.ibm.com/support/pages/node/6243336)

>New Features and Functions
    User Mode NX Accelerator Enablement for PowerVM.  This enables the access of NX accelerators such as the gzip engine through user mode interfaces.  The IBM Virtual HMC (vHMC) 9.1.940 provides a user interface to this feature.  The LPAR must be running in POWER9 compatibility mode to use this feature.


導入は、[Using the POWER9™ NX (gzip) accelerator in AIX](https://www.ibm.com/support/pages/node/6243342)　を参照

こちらも要参照：
・[Power9 GZIP Data Acceleration with IBM AIX](https://community.ibm.com/community/user/power/blogs/brian-veale1/2020/11/09/power9-gzip-data-acceleration-with-ibm-aix?CommunityKey=daa942cb-b783-4fd3-ba27-a2d7462f9530)


---
#### 環境

・PowerSystems E980(9080-M9S)
・Firmware: IBM,FW940.20 (VH940_061)
・Processor mode: POWER 9
・OS level: AIX 7.2 TL4 SP1 (IBM Cloud PowerSystems Virtual Server)


```env
# prtconf
System Model: IBM,9080-M9S
Machine Serial Number: xxxxxx
Processor Type: PowerPC_POWER9
Processor Implementation Mode: POWER 9
Processor Version: PV_9_Compat
Number Of Processors: 1
Processor Clock Speed: 3150 MHz
CPU Type: 64-bit
Kernel Type: 64-bit
LPAR Info: 6 testvm-25xxxxx71-00xxxx74
Memory Size: 2048 MB
Good Memory Size: 2048 MB
Platform Firmware level: VH940_061
Firmware Version: IBM,FW940.20 (VH940_061)
Console Login: enable
Auto Restart: true
Full Core: false
NX Crypto Acceleration: Capable and Enabled
In-Core Crypto Acceleration: Capable, but not Enabled

~ 省略 ~ 

# oslevel -s
7200-04-01-1939

```
---

#### 準備：モジュールの導入

"zlibNX" と "xgzip" をAIXに導入します。

**① zlibNX**

ライブラリーを先に導入します。

1) ESS からAIX Expansion Pack ダウンロード

AIX Expansion Pack に存在します。(ESS(IBM Entitled Systems Support) からダウンロード可能)

参考：Expansion Pack　のダウンロード
![expansion_download.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/41099cf0-40ea-6665-d3d5-e84236b9f2d0.png)


2) AIX にファイルセットを配置して、smit で導入

![zlib_install2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/503466cc-a59f-cc0f-8bb8-3f4c101bad1d.png)


3) 導入確認

```
# lslpp -l zlibNX.rte
  Fileset                      Level  State      Description
  ----------------------------------------------------------------------------
Path: /usr/lib/objrepos
  zlibNX.rte                 7.2.4.0  COMMITTED  NX accelerated zlib
                                                 compression library
```

----

**②xgzip**

1) AIX Web Download Pack から xgzip をダウンロード

![xgzip1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/b5287081-a75b-e7d3-0ca5-e02ccfffe2ac.png)

![xgzip2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/32fd6d00-19fd-d6cc-dbcb-66e5fdf24d14.png)



2)  AIX にファイルセットを配置して、xzgip を smit で導入

![zlib_install.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/517421/ec2d9163-49f8-153e-ef5a-1a7efd84b967.png)



3) 導入確認

```
#  lslpp -l xgzip.rte
  Fileset                      Level  State      Description
  ----------------------------------------------------------------------------
Path: /usr/lib/objrepos
  xgzip.rte                 4.0.20.0  COMMITTED  A command utility to exploit
                                                 NX accelerated zlib
                                                 compression library
```

4) xgzip コマンドの導入を確認

```
# which xgzip
/usr/bin/xgzip
```

5)  nx_available の確認

```
# echo "dw nx_available" | kdb -script
read vscsi_scsi_ptrs OK, ptr = 0xF1000000C0152E90
(0)> dw nx_available
Executing dw command
nx_available+000000: 00000000 00000000 00000000 00000007  ................

End of execution for dw command
(0)> Executing q command
#
```




----

### 検証

同じ内容のファイルを用意し、gzip コマンド、xgzip コマンド実行時間を確認します。

```

# ls -l test*
-rw-r--r--    1 root     system      6819840 Nov 06 20:18 test.tar
-rw-r--r--    1 root     system      6819840 Nov 06 20:18 test2.tar

# cksum test.tar test2.tar
650543481 6819840 test.tar
650543481 6819840 test2.tar

# time gzip test.tar

real    0m0.22s
user    0m0.04s
sys     0m0.00s

# time xgzip test2.tar

real    0m0.18s
user    0m0.06s
sys     0m0.00s


```

→ xgzip の方がわずかに早いです。



同じ内容を圧縮していますが、圧縮後の容量も異なります。

```
# ls -l | grep test*.tar
-rw-r--r--    1 root     system       832561 Nov 06 20:18 test.tar.gz
-rw-r--r--    1 root     system       827213 Nov 06 20:20 test2.tar.gz
```


非圧縮の確認

```
# time gzip -d test.tar.gz

real    0m0.00s
user    0m0.01s
sys     0m0.01s
# time xgzip -d test2.tar.gz

real    0m0.00s
user    0m0.01s
sys     0m0.00s
```

-> ファイルが小さいためか、比較検証にならず。。


----
ファイルを変更したりするなど何度か行ってみると、gzip の方が若干早いような結果もありました。
もう少し容量大きくしたりしないとよい検証結果が出ないのかもしれません...

(*)当記事は、個人的に簡易に検証している内容です。実際に使用する場合は対象のファイル、アプリケーションでの結果で判断していただくことが適切です。



```
# ls -l *.tar
-rw-r--r--    1 root     system     14991360 Nov 06 20:56 test.tar
-rw-r--r--    1 root     system     14991360 Nov 06 20:56 test2.tar
# cksum test.tar test2.tar
2226198776 14991360 test.tar
2226198776 14991360 test2.tar

# time gzip test.tar

real    0m0.37s
user    0m0.10s
sys     0m0.00s
# time xgzip test2.tar

real    0m0.39s
user    0m0.12s
sys     0m0.01s
#
```


----
####注意事項

2020/10 時点で、zlibNX に対する HIPER APAR が存在するので、対象となるモジュールを実際に使用する場合は導入が推奨されます。
(上記検証は、APAR適用済み) 

・IJ28579: POSSIBLE DATA CORRUPTION USING ZLIBNX LIBRARY
https://www.ibm.com/support/pages/apar/IJ28579


```
# smitty install

                                                         Install Software

Type or select values in entry fields.
Press Enter AFTER making all desired changes.

[TOP]                                                   [Entry Fields]
* INPUT device / directory for software               .
* SOFTWARE to install                                [IJ28579s0a.201006.epkg.Z                                           ALL > +
  PREVIEW only? (install operation will NOT occur)    no                                                                       +
  COMMIT software updates?                            yes                                                                      +
  SAVE replaced files?                                no                                                                       +
  AUTOMATICALLY install requisite software?           yes                                                                      +
  EXTEND file systems if space needed?                yes                                                                      +
  OVERWRITE same or newer versions?                   no                                                                       +
  VERIFY install and check file sizes?                no                                                                       +
  Include corresponding LANGUAGE filesets?            yes                                                                      +
  DETAILED output?                                    no                                                                       +
  Process multiple volumes?                           yes                                                                      +
  ACCEPT new license agreements?                      yes                                                                      +
  PREVIEW new LICENSE agreements?                     no                                                                       +
[MORE...10]


------
                                                          COMMAND STATUS

Command: OK            stdout: yes           stderr: no

Before command completion, additional instructions may appear below.

geninstall -I "a -cgNQqwXY -J"  -Z   -d . -f File 2>&1

File:
    E:IJ28579s0a.201006.epkg.Z


Initializing log /var/adm/ras/emgr.log ...
EPKG NUMBER       LABEL               OPERATION              RESULT
===========       ==============      =================      ==============
1                 IJ28579s0a          INSTALL                SUCCESS
Return Status = SUCCESS



```



---
参照

・[Using the POWER9™ NX (gzip) accelerator in AIX](https://www.ibm.com/support/pages/node/6243342)

・[Data compression by using the zlibNX library](https://www.ibm.com/support/knowledgecenter/ssw_aix_72/performance/zlibNX.html)

・[The benefits of AIX 7.2, XIVE, XGZIP and POWER9 systems](http://gibsonnet.net/blog/cgaix/html/AIX72_XIVE_XGZIP_and_POWER9.html)



---
当記事の導入方法などが参考になればと思います。


以上です。