ZFS Pool Optimization

Alek5

Member
Sep 29, 2021
2
0
6
72
Hi,
I've a PVE box setup with two zfs pools :
Bash:
root@pve:~# zpool status -v ONE_Pool
  pool: ONE_Pool
 state: ONLINE
  scan: scrub in progress since Tue Nov 29 11:48:09 2022
    194G scanned at 6.91G/s, 2.67M issued at 97.7K/s, 948G total
    0B repaired, 0.00% done, no estimated completion time
config:

    NAME                                                STATE     READ WRITE CKSUM
    ONE_Pool                                        ONLINE       0     0     0
      raidz1-0                                          ONLINE       0     0     0
        ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6HJPTTJ        ONLINE       0     0     0
        ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N6HJPPKV        ONLINE       0     0     0
        ata-WDC_WD30EFRX-68EUZN0_WD-WCC4N4AY4UFU        ONLINE       0     0     0
    logs   
      ata-KINGSTON_SA400S37240G_50026B7782F57CEF-part1  ONLINE       0     0     0
    cache
      ata-KINGSTON_SA400S37240G_50026B7782F57CEF-part2  ONLINE       0     0     0

errors: No known data errors

root@pve:~# zpool status -v TWO_Pool
  pool: TWO_Pool
 state: ONLINE
  scan: scrub repaired 0B in 01:54:32 with 0 errors on Sun Nov 13 02:18:35 2022
config:

    NAME                        STATE     READ WRITE CKSUM
    TWO_Pool                   ONLINE       0     0     0
      raidz1-0                  ONLINE       0     0     0
        scsi-35000c500565d8e37  ONLINE       0     0     0
        scsi-35000c500565daf43  ONLINE       0     0     0
        scsi-35000c500565ddb63  ONLINE       0     0     0

errors: No known data errors

Bash:
root@pve:~# arc_summary

------------------------------------------------------------------------
ZFS Subsystem Report                            Tue Nov 29 12:05:18 2022
Linux 5.15.74-1-pve                                           2.1.6-pve1
Machine: pve (x86_64)                                  2.1.6-pve1

ARC status:                                                      HEALTHY
        Memory throttle count:                                         0

ARC size (current):                                   100.0 %   39.3 GiB
        Target size (adaptive):                       100.0 %   39.3 GiB
        Min size (hard limit):                          6.2 %    2.5 GiB
        Max size (high water):                           16:1   39.3 GiB
        Most Frequently Used (MFU) cache size:         13.7 %    5.1 GiB
        Most Recently Used (MRU) cache size:           86.3 %   32.1 GiB
        Metadata cache size (hard limit):              75.0 %   29.4 GiB
        Metadata cache size (current):                 15.8 %    4.7 GiB
        Dnode cache size (hard limit):                 10.0 %    2.9 GiB
        Dnode cache size (current):                     0.5 %   13.6 MiB

ARC hash breakdown:
        Elements max:                                              30.7M
        Elements current:                              25.2 %       7.7M
        Collisions:                                                 1.6G
        Chain max:                                                    14
        Chains:                                                     1.3M

ARC misc:
        Deleted:                                                    1.5G
        Mutex misses:                                             198.4k
        Eviction skips:                                            30.6k
        Eviction skips due to L2 writes:                            2.5M
        L2 cached evictions:                                     2.9 TiB
        L2 eligible evictions:                                   6.0 TiB
        L2 eligible MFU evictions:                      9.7 %  597.9 GiB
        L2 eligible MRU evictions:                     90.3 %    5.4 TiB
        L2 ineligible evictions:                                 3.0 TiB

ARC total accesses (hits + misses):                                 3.3G
        Cache hit ratio:                               61.5 %       2.0G
        Cache miss ratio:                              38.5 %       1.3G
        Actual hit ratio (MFU + MRU hits):             61.2 %       2.0G
        Data demand efficiency:                        23.5 %       1.2G
        Data prefetch efficiency:                       2.5 %     338.7M

Cache hits by cache type:
        Most frequently used (MFU):                    78.0 %       1.6G
        Most recently used (MRU):                      21.7 %     437.1M
        Most frequently used (MFU) ghost:               0.3 %       5.9M
        Most recently used (MRU) ghost:                 0.5 %      10.3M

Cache hits by data type:
        Demand data:                                   14.2 %     287.1M
        Demand prefetch data:                           0.4 %       8.5M
        Demand metadata:                               85.3 %       1.7G
        Demand prefetch metadata:                     < 0.1 %     566.8k

Cache misses by data type:
        Demand data:                                   73.7 %     933.1M
        Demand prefetch data:                          26.1 %     330.3M
        Demand metadata:                                0.1 %       1.7M
        Demand prefetch metadata:                       0.1 %     635.8k

DMU prefetch efficiency:                                           46.7M
        Hit ratio:                                     16.4 %       7.7M
        Miss ratio:                                    83.6 %      39.1M

L2ARC status:                                                   DEGRADED
        Low memory aborts:                                             4
        Free on write:                                             20.8M
        R/W clashes:                                                 246
        Bad checksums:                                                21
        I/O errors:                                                    0

L2ARC size (adaptive):                                          20.3 GiB
        Compressed:                                    89.2 %   18.1 GiB
        Header size:                                    0.6 %  132.9 MiB
        MFU allocated size:                            19.8 %    3.6 GiB
        MRU allocated size:                            80.0 %   14.5 GiB
        Prefetch allocated size:                        0.2 %   34.3 MiB
        Data (buffer content) allocated size:          97.8 %   17.7 GiB
        Metadata (buffer content) allocated size:       2.2 %  417.5 MiB

L2ARC breakdown:                                                  816.9M
        Hit ratio:                                      2.8 %      23.3M
        Miss ratio:                                    97.2 %     793.6M
        Feeds:                                                    882.8k

L2ARC writes:
        Writes sent:                                    100 %     443.3k

L2ARC evicts:
        Lock retries:                                              21.0k
        Upon reading:                                                172

Solaris Porting Layer (SPL):
        spl_hostid                                                     0
        spl_hostid_path                                      /etc/hostid
        spl_kmem_alloc_max                                       1048576
        spl_kmem_alloc_warn                                        65536
        spl_kmem_cache_kmem_threads                                    4
        spl_kmem_cache_magazine_size                                   0
        spl_kmem_cache_max_size                                       32
        spl_kmem_cache_obj_per_slab                                    8
        spl_kmem_cache_reclaim                                         0
        spl_kmem_cache_slab_limit                                  16384
        spl_max_show_tasks                                           512
        spl_panic_halt                                                 0
        spl_schedule_hrtimeout_slack_us                                0
        spl_taskq_kick                                                 0
        spl_taskq_thread_bind                                          0
        spl_taskq_thread_dynamic                                       1
        spl_taskq_thread_priority                                      1
        spl_taskq_thread_sequential                                    4

Yesterday I moved one VM disk from poll ONE to TWO and it took way too much time :
Code:
drive-scsi2: transferred 2.0 TiB of 2.0 TiB (100.00%) in 15h 22m 23s, ready
Any advice on how to get better performance ?
 
Any advice on how to get better performance ?
The only configuration parameters you can vary are:
- use one pool
- use more vdevs
- use better hardware (-> SSD instead of HDD)
- use more hardware (and in more vdevs)

BTW: You L2ARC is cache hit ratio is very bad and is IMHO just making things slower in this constellation.
 
SA400S37240G
And for SLOG/L2ARC you are using a consumer QLC SSD. The SLOG will kill it very quickly and it is terrible slow (does not have to faster than a HDD when using sync writes...and that is what a SLOG is doing...).

If you really want to get more performance, buy an additional HDD (or even more) and recreate it as a striped mirror. If you then still need more performance get two very small enterprise grade SSDs and add them as a mirrored special device. And if you still need more performance, throw those HDDs out and only use enterprise SSDs instead.
 
Last edited:
what would i pay attention to:

scan: scrub in progress since Tue Nov 29 11:48:09 2022

L2ARC status: DEGRADED
Low memory aborts: 4
Free on write: 20.8M
R/W clashes: 246
Bad checksums: 21
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!