ZIL/L2ARC を試す。

## この時代に SATA2/HDDは遅い。なんで入ってたの？捨てたい・・

>Model Family:     Seagate Constellation ES.3
>SATA Version is:  SATA 3.0, 3.0 Gb/s (current: 3.0 Gb/s)

ミラーで組んでる他のものは　SATA3の 6.0Gb/s 出ます。なんとまあ組んでから気がついて頭を抱えます（取り替えられるSATA/SSDは手元にはある）が・・・　

## しかたないというか、nvme PCIインターフェイスを挿してみた
エンタプライズ仕様の NVMeならともかく、ゲームPC用のガム板^H^H^Hにサーバデータを預ける勇気は・・・。とはいえSASなんか目じゃない速さに誘惑されて負けます。というか、一昨年 mSATA対応のTX1310M5　に　止せばいいのに WD-Blue 突っ込んだら文字通り ぜ・ん・め・つ したのが尾を引いています 。

># nvmecontrol devlist
 nvme0: KIOXIA-EXCERIA PLUS G3 SSD
    nvme0ns1 (953869MB)

信頼性を担保するなら、NVMeを複数枚挿し・・・でしょーね。

## ログやキャッシュにしてみる。

 性能重視ならミラーのメンバに入れるのが筋・・・。でも「フラッシュストレージをキャッシュに使うのがいい」的な記事はある（信頼性は全然あるものだと思う）し、キャッシュに使えるNVMeならもう一枚あるので、取り敢えず今日はキャッシュにしてみましょう。何事もテストです。

* ZILデバイスは "仕様" から実メモリの1/2までで頭打ちです。
* L2ARC　面倒なので残り全部（流石に容量が大きすぎて無駄だけれど・・）
多分、2TBくらいの デバイスで、1TBをメンバに割りあての、残りをログと
キャッシュに振り分けというのがベスト？

 ```
 # gpart create -s GPT nda0
 nda0 created
 # gpart add -t freebsd-swap -s 2G
 nda0p1 added
 # gpart add -t freebsd-zfs -s 16G
 nda0p2 added
 # gpart add -t freebsd-zfs
 nda0p3 added
 # zpool add pool log nvme0p2
 # zpool add pool cache nvme0p3
 ```
## unixbench　をかける。

* 実は　/tmp に記録されていた過去のデータが、再起動で消えてしまったので、取り敢えずキャッシュ設定後のデータから出してみる。　
* ZIL/L2ARC 用のデバイスをHDDに差し替えられるかもこのあとテストする・・

``` unixbench 

   #    #  #    #  #  #    #          #####   ######  #    #   ####   #    #
   #    #  ##   #  #   #  #           #    #  #       ##   #  #    #  #    #
   #    #  # #  #  #    ##            #####   #####   # #  #  #       ######
   #    #  #  # #  #    ##            #    #  #       #  # #  #       #    #
   #    #  #   ##  #   #  #           #    #  #       #   ##  #    #  #    #
    ####   #    #  #  #    #          #####   ######  #    #   ####   #    #

   Version 5.1.3                      Based on the Byte Magazine Unix Benchmark

   Multi-CPU version                  Version 5 revisions by Ian Smith,
                                      Sunnyvale, CA, USA
   January 13, 2011                   johantheghost at yahoo period com

------------------------------------------------------------------------------
   Use directories for:
      * File I/O tests (named fs***) = /tmp
      * Results                      = /tmp
------------------------------------------------------------------------------


1 x Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10

1 x Double-Precision Whetstone  1 2 3 4 5 6 7 8 9 10

1 x Execl Throughput  1 2 3

1 x File Copy 1024 bufsize 2000 maxblocks  1 2 3

1 x File Copy 256 bufsize 500 maxblocks  1 2 3

1 x File Copy 4096 bufsize 8000 maxblocks  1 2 3

1 x Pipe Throughput  1 2 3 4 5 6 7 8 9 10

1 x Pipe-based Context Switching  1 2 3 4 5 6 7 8 9 10

1 x Process Creation  1 2 3

1 x System Call Overhead  1 2 3 4 5 6 7 8 9 10

1 x Shell Scripts (1 concurrent)  1 2 3

1 x Shell Scripts (8 concurrent)  1 2 3

40 x Dhrystone 2 using register variables  1 2 3 4 5 6 7 8 9 10

```
* 親の顔より見飽きた unixbench..  なかなか終わりません。
* 40 x Dhrystone ってのは 無駄に 2Way だからですね。

```

------------------------------------------------------------------------
Benchmark Run: Mon Feb 10 2025 09:16:36 - 09:45:07
40 CPUs in system; running 40 parallel copies of tests

Dhrystone 2 using register variables      638899945.1 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                   189430.5 MWIPS (9.4 s, 7 samples)
Execl Throughput                              40688.5 lps   (29.7 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks         60148.0 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           15625.0 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        237567.8 KBps  (30.0 s, 2 samples)
Pipe Throughput                            33976454.8 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                4409648.2 lps   (10.0 s, 7 samples)
Process Creation                              51637.6 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                  82512.9 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   9337.6 lpm   (60.1 s, 2 samples)
System Call Overhead                       22989139.3 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0  638899945.1  54747.2
Double-Precision Whetstone                       55.0     189430.5  34441.9
Execl Throughput                                 43.0      40688.5   9462.4
File Copy 1024 bufsize 2000 maxblocks          3960.0      60148.0    151.9
File Copy 256 bufsize 500 maxblocks            1655.0      15625.0     94.4
File Copy 4096 bufsize 8000 maxblocks          5800.0     237567.8    409.6
Pipe Throughput                               12440.0   33976454.8  27312.3
Pipe-based Context Switching                   4000.0    4409648.2  11024.1
Process Creation                                126.0      51637.6   4098.2
Shell Scripts (1 concurrent)                     42.4      82512.9  19460.6
Shell Scripts (8 concurrent)                      6.0       9337.6  15562.7
System Call Overhead                          15000.0   22989139.3  15326.1
                                                                   ========
System Benchmarks Index Score                                        5389.2
```
## zil、l2arc デバイスを取り除く
* zil デバイスを外す時にいろいろあるそうです・・・

```4# zpool status
  pool: zfsrt
 state: ONLINE
  scan: scrub repaired 0B in 01:07:42 with 0 errors on Fri Feb  7 10:07:42 2025
config:

	NAME        STATE     READ WRITE CKSUM
	zfsrt       ONLINE       0     0     0
	  mirror-0  ONLINE       0     0     0
	    da0p4   ONLINE       0     0     0
	    da2p4   ONLINE       0     0     0
	    da3p4   ONLINE       0     0     0
	logs	
	  nda0p3    ONLINE       0     0     0
	cache
	  nda0p4    ONLINE       0     0     0

```
* l2arc は　さくっと取れました。
```
 zpool remove zfsrt nda0p4
server # zpool remove zfsrt nda0p3

^Z

zsh: suspended  zpool remove zfsrt nda0p3
server # 
server # 

```
* zil を撤去するのは時間がかかるので割り込んでみたら数分待たされました。

```
server# bg
[1]  + continued  zpool remove zfsrt nda0p3
server# 
[1]  + done       zpool remove zfsrt nda0p3
server# 
```
* 除去できました。
* バグがあったのか消せずに手間取ったそうです。
https://peta.okechan.net/blog/archives/4139
 
```
server# zpool status             
  pool: zfsrt
 state: ONLINE
  scan: scrub repaired 0B in 01:07:42 with 0 errors on Fri Feb  7 10:07:42 2025
config:

	NAME        STATE     READ WRITE CKSUM
	zfsrt       ONLINE       0     0     0
	  mirror-0  ONLINE       0     0     0
	    da0p4   ONLINE       0     0     0
	    da2p4   ONLINE       0     0     0
	    da3p4   ONLINE       0     0     0

errors: No known data errors
server# zpool scrub zfsrt
server# zpool status     
  pool: zfsrt
 state: ONLINE
  scan: scrub in progress since Mon Feb 10 09:55:35 2025
	15.2G / 242G scanned at 3.04G/s, 0B / 242G issued
	0B repaired, 0.00% done, no estimated completion time
config:

	NAME        STATE     READ WRITE CKSUM
	zfsrt       ONLINE       0     0     0
	  mirror-0  ONLINE       0     0     0
	    da0p4   ONLINE       0     0     0
	    da2p4   ONLINE       0     0     0
	    da3p4   ONLINE       0     0     0

errors: No known data errors
server# 
```

* zfs 使いの心得として、なにかの作業したら scrub かけます。(でもメディアが遅くていたく後悔します）
> 242G / 242G scanned, 202G / 242G issued at 70.1M/s
* ↑こんな速度では、いろいろ入れ替えたいときに時間的制約で卒倒しそうになります。 骨董品はとっとと M.2/NVMeに入れ替えましょう。
* ちなみにこのサーバでは "AHCI SGPIO Enclosure" というのが認識されていて、SATAのむき出しではなく SCSI扱いになっています。ただしSES-2ユーティリティでは オプティカルデバイスでHDDは認識されず。 
* あと、RDXドライブもついていますが、512Gのユニットを挿したままです。交換メディアは正価では結構なお値段だった記憶。

```

Benchmark Run: Mon Feb 10 2025 11:04:19 - 11:33:44
40 CPUs in system; running 1 parallel copy of tests

Dhrystone 2 using register variables       27551830.6 lps   (10.1 s, 7 samples)
Double-Precision Whetstone                     5364.9 MWIPS (8.9 s, 7 samples)
Execl Throughput                               2025.8 lps   (29.8 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks        211147.7 KBps  (30.1 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           53916.9 KBps  (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        728882.6 KBps  (30.0 s, 2 samples)
Pipe Throughput                             1193103.6 lps   (10.1 s, 7 samples)
Pipe-based Context Switching                  65893.1 lps   (10.1 s, 7 samples)
Process Creation                               1899.8 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                   3091.9 lpm   (60.1 s, 2 samples)
Shell Scripts (8 concurrent)                   2697.9 lpm   (60.0 s, 2 samples)
System Call Overhead                         723495.3 lps   (10.1 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0   27551830.6   2360.9
Double-Precision Whetstone                       55.0       5364.9    975.4
Execl Throughput                                 43.0       2025.8    471.1
File Copy 1024 bufsize 2000 maxblocks          3960.0     211147.7    533.2
File Copy 256 bufsize 500 maxblocks            1655.0      53916.9    325.8
File Copy 4096 bufsize 8000 maxblocks          5800.0     728882.6   1256.7
Pipe Throughput                               12440.0    1193103.6    959.1
Pipe-based Context Switching                   4000.0      65893.1    164.7
Process Creation                                126.0       1899.8    150.8
Shell Scripts (1 concurrent)                     42.4       3091.9    729.2
Shell Scripts (8 concurrent)                      6.0       2697.9   4496.4
System Call Overhead                          15000.0     723495.3    482.3
                                                                   ========
System Benchmarks Index Score                                         674.9

------------------------------------------------------------------------
Benchmark Run: Mon Feb 10 2025 11:33:44 - 12:03:14
40 CPUs in system; running 40 parallel copies of tests

Dhrystone 2 using register variables      638463745.2 lps   (10.0 s, 7 samples)
Double-Precision Whetstone                   189404.0 MWIPS (9.4 s, 7 samples)
Execl Throughput                              41209.7 lps   (29.7 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks         60242.4 KBps  (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks           15631.6 KBps  (30.1 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks        228578.5 KBps  (30.1 s, 2 samples)
Pipe Throughput                            34024413.1 lps   (10.0 s, 7 samples)
Pipe-based Context Switching                4412099.5 lps   (10.0 s, 7 samples)
Process Creation                              51540.3 lps   (30.0 s, 2 samples)
Shell Scripts (1 concurrent)                  85834.7 lpm   (60.0 s, 2 samples)
Shell Scripts (8 concurrent)                   9384.8 lpm   (60.1 s, 2 samples)
System Call Overhead                       23093901.4 lps   (10.0 s, 7 samples)

System Benchmarks Index Values               BASELINE       RESULT    INDEX
Dhrystone 2 using register variables         116700.0  638463745.2  54709.8
Double-Precision Whetstone                       55.0     189404.0  34437.1
Execl Throughput                                 43.0      41209.7   9583.6
File Copy 1024 bufsize 2000 maxblocks          3960.0      60242.4    152.1
File Copy 256 bufsize 500 maxblocks            1655.0      15631.6     94.5
File Copy 4096 bufsize 8000 maxblocks          5800.0     228578.5    394.1
Pipe Throughput                               12440.0   34024413.1  27350.8
Pipe-based Context Switching                   4000.0    4412099.5  11030.2
Process Creation                                126.0      51540.3   4090.5
Shell Scripts (1 concurrent)                     42.4      85834.7  20244.0
Shell Scripts (8 concurrent)                      6.0       9384.8  15641.3
System Call Overhead                          15000.0   23093901.4  15395.9
                                                                   ========
System Benchmarks Index Score                                        5400.2
```
↑ Unixbench・・・ キャッシュ外しても ほとんど変わりませんでした。File Copy 系となると zpool/mirror の構成により 性能重視より信頼性に傾いているので...


### 今日の 結論 : unixbench では微妙な差しかありませんでした・・・

誤差の範囲。やはり mirror なので・・　もう一台ある zraid20 のサーバだと効果が出るかもしれません。今後のzpool いじりは、テストのサーバでやります・・・ チューニングは必要なんですが、応答が悪くて冷や汗物です。昔と違って延々とデバイスを掴んでハングアップしてしまうことはないのですが・・・


以上