Mit den folgenden Schritten können wir die Details zum Adaptive Replacement Cache (kurz ARC) des ZFS-Dateisystems auf OPNsense einsehen.

Erst stellen wir sicher das die Abhängigkeiten auf dem System vorhanden und aktuell sind:

opnsense-code tools ports src

Danach können wir das entsprechende Tool kompilieren und installieren:

cd /usr/ports/sysutils/arc_summary
make install

Danach können wir die entsprechenden Statistiken über verschiedene Ansätze einsehen:

# Alle Statistiken anzeigen
arc_summary

# Eine grobe Zusammenfassung der MFU/MRU Cache-Hits
arc_summary | grep Most

Eine Beispielausgabe wäre:

------------------------------------------------------------------------
ZFS Subsystem Report                            Mon Feb 06 14:50:29 2023
FreeBSD 13.1-RELEASE-p5                                    zpl version 5
Machine: OPNsense.localdomain (amd64)                   spa version 5000

ARC status:                                                      HEALTHY
        Memory throttle count:                                         0

ARC size (current):                                    68.2 %    4.7 GiB
        Target size (adaptive):                        71.8 %    5.0 GiB
        Min size (hard limit):                          3.6 %  253.1 MiB
        Max size (high water):                           27:1    6.9 GiB
        Most Frequently Used (MFU) cache size:         66.8 %    2.8 GiB
        Most Recently Used (MRU) cache size:           33.2 %    1.4 GiB
        Metadata cache size (hard limit):              75.0 %    5.2 GiB
        Metadata cache size (current):                 14.8 %  785.6 MiB
        Dnode cache size (hard limit):                 10.0 %  530.6 MiB
        Dnode cache size (current):                    42.1 %  223.5 MiB

ARC hash breakdown:
        Elements max:                                             378.8k
        Elements current:                             100.0 %     378.8k
        Collisions:                                               359.5k
        Chain max:                                                     5
        Chains:                                                    54.1k

ARC misc:
        Deleted:                                                       0
        Mutex misses:                                                  0
        Eviction skips:                                                0
        Eviction skips due to L2 writes:                               0
        L2 cached evictions:                                     0 Bytes
        L2 eligible evictions:                                   0 Bytes
        L2 eligible MFU evictions:                        n/a    0 Bytes
        L2 eligible MRU evictions:                        n/a    0 Bytes
        L2 ineligible evictions:                                 0 Bytes

ARC total accesses (hits + misses):                                19.5M
        Cache hit ratio:                               99.6 %      19.4M
        Cache miss ratio:                               0.4 %      85.2k
        Actual hit ratio (MFU + MRU hits):             99.5 %      19.4M
        Data demand efficiency:                        99.3 %      10.0M
        Data prefetch efficiency:                      20.0 %       7.4k

Cache hits by cache type:
        Most frequently used (MFU):                    90.2 %      17.5M
        Most recently used (MRU):                       9.7 %       1.9M
        Most frequently used (MFU) ghost:               0.0 %          0
        Most recently used (MRU) ghost:                 0.0 %          0
        Anonymously used:                             < 0.1 %       3.6k

Cache hits by data type:
        Demand data:                                   51.0 %       9.9M
        Demand prefetch data:                         < 0.1 %       1.5k
        Demand metadata:                               49.0 %       9.5M
        Demand prefetch metadata:                       0.1 %      14.5k

Cache misses by data type:
        Demand data:                                   83.4 %      71.1k
        Demand prefetch data:                           7.0 %       5.9k
        Demand metadata:                                8.2 %       7.0k
        Demand prefetch metadata:                       1.4 %       1.2k

DMU prefetch efficiency:                                            5.1M
        Hit ratio:                                      0.7 %      34.5k
        Miss ratio:                                    99.3 %       5.1M

L2ARC not detected, skipping section