Zum Inhalt springen
labkompass

Tool · ZFS

ZFS-RAM- und ARC-Planer

Wie viel Arbeitsspeicher nimmt sich ZFS — und wie viel bleibt für deine Dienste und VMs? Der Planer zeigt die Standardgrenzen des ARC für deine OpenZFS-Version, stellt sie deinem eigenen RAM-Bedarf gegenüber und erzeugt bei Bedarf die Zeile für ein dauerhaftes Limit.

ARC-Maximum (Default)

15 GiB

zfs_arc_max = 0 → automatisch

Neben deinen Diensten frei

11,8 GiB

RAM − Reservierung − 256 MiB Freihalteziel

ARC-Minimum (Default)

512 MiB

zfs_arc_min = 0 → RAM / 32

Aufteilung des RAM (Obergrenze, nicht Momentaufnahme)
  • Dienste: 4 GiB
  • ARC (max.): 11,8 GiB
  • Rest: 256 MiB

Das ARC-Maximum ist größer als der RAM, der neben deinen Diensten übrig bleibt. Das ist kein Fehler: Linux fordert Speicher zurück, wenn Anwendungen ihn brauchen, und der ARC schrumpft. Beobachte, ob die Anwendungen dabei ins Swapping geraten.

Seit OpenZFS 2.3 darf der ARC auf Linux bis „RAM minus 1 GiB“ wachsen (vorher die Hälfte). Hohe RAM-Belegung nach einigen Tagen Betrieb ist deshalb normal und kein Speicherleck.

Beobachten statt raten

free -h
zarcstat 5   # bis OpenZFS 2.3: arcstat 5
zarcsummary -s arc   # bis OpenZFS 2.3: arc_summary -s arc
grep -E '^(size|c|c_min|c_max|hits|misses|memory_throttle_count) ' /proc/spl/kstat/zfs/arcstats

Der Planer rechnet nur mit belegten Werten: den Linux-Defaults von OpenZFS laut Manpage, dem Proxmox-Installer-Default und der Dedup-Planungsgröße der OpenZFS-Doku. Wie viel RAM deine Dienste brauchen, kann er nicht wissen — miss es mit free -h im Betrieb. Den ARC bei Linux live zu ändern und dauerhaft zu setzen, erklärt der Guide zum ARC-Limit; bei Root auf ZFS braucht es zusätzlich ein neues initramfs.

Freier RAM ist verschenkter Cache

Der ARC (Adaptive Replacement Cache) hält häufig und zuletzt gelesene Daten im Arbeitsspeicher. Linux zählt ihn nicht als „Cache“ wie den normalen Seitencache, deshalb sieht ein ZFS-Server nach einigen Tagen oft „voll“ aus. Das ist gewollt: Brauchen Anwendungen Speicher, gibt der ARC ihn wieder frei. Ein Limit lohnt sich vor allem dort, wo Speicher schnell und verlässlich frei sein muss — etwa auf Virtualisierungshosts.

Warum der Planer keinen „RAM-Bedarf“ ausrechnet

Wie viel Cache dein Pool sinnvoll nutzen kann, hängt davon ab, wie viele Daten regelmäßig gelesen werden — nicht davon, wie groß die Platten sind. Eine pauschale Formel wäre geraten. Belastbar sind die Grenzen, die OpenZFS selbst setzt, und die Beobachtung im Betrieb: Trefferquote, Größe und Speicherdruck.

Häufige Fragen

Wie groß wird der ARC ohne eigene Einstellung?

Auf Linux seit OpenZFS 2.3 bis zum größeren Wert aus „RAM minus 1 GiB“ und 5/8 des RAM, bis Version 2.2 bis zur Hälfte des RAM. Proxmox VE setzt bei Neuinstallationen ab Version 8.1 ein Limit von 10 % des RAM, höchstens 16 GiB.

Gilt die Regel „1 GB RAM pro TB Speicher“?

Nicht allgemein. Die OpenZFS-Doku nennt eine Planungsgröße nur für Deduplizierung: mindestens 1,25 GiB RAM pro TiB deduplizierter Daten. Ohne Dedup läuft ZFS auch mit wenig RAM; mehr RAM bedeutet vor allem mehr Cache.

Warum ignoriert ZFS mein Limit?

zfs_arc_max wird nur übernommen, wenn der Wert mindestens 64 MiB beträgt, kleiner als der RAM und größer als zfs_arc_min ist. Auf Systemen mit viel RAM liegt der Default von zfs_arc_min bei RAM/32 — ein sehr kleines Limit braucht dann zusätzlich einen kleineren zfs_arc_min.

Werden meine Eingaben gespeichert?

Nein. Alles wird im Browser berechnet; gesendet wird höchstens, dass das Tool benutzt wurde — nie die eingegebenen Werte.

Passende Tools