Ich habe gelesen, dass ZFS so eingestellt ist, dass es den gesamten physischen Speicher außer 1 GB auf Systemen mit 4 GB oder mehr verwendet. Da auf meinem Heimserver, auf dem das ZFS-Dateisystem ausgeführt wird, virtuelle Maschinen ausgeführt werden, wollte ich dies manuell reduzieren, damit meinen VMs Speicherplatz zugewiesen wird und ich für zukünftige KVM-Bereitstellungen etwas Spielraum habe.
Ich habe verstanden, dass das Setzen der folgenden Zeile in der /etc/modprobe.d/zfs.conf
Datei ZFS auf die Verwendung von nur 4 GB beschränken würde.
options zfs zfs_arc_max=4294967296
Nach einem Neustart zeigt htop an, dass ein erheblicher Teil meines Arbeitsspeichers zugewiesen wurde, aber viel ungenutzter Speicherplatz vorhanden ist.
Nach einer gewissen Zeit wird die RAM-Auslastung jedoch zunehmen, bis wir wie unten gezeigt mit dem Swap beginnen:
Htop von Home Server mit Aufgaben, sortiert nach RES-Nutzung
Frage
Habe ich etwas falsch konfiguriert oder muss ich noch etwas einstellen, um den Platzbedarf von ZFS zu verringern? Vielleicht ist es nicht ZFS, aber es gibt noch etwas, das meinen RAM frisst, von dem ich nichts weiß?
Zusatzinformation
Die Ausgabe von cat /proc/spl/kstat/zfs/arcstats
ist wie folgt:
5 1 0x01 85 4080 4981548270 615775159747876
name type data
hits 4 46287364
misses 4 2610021
demand_data_hits 4 30804990
demand_data_misses 4 578061
demand_metadata_hits 4 9829556
demand_metadata_misses 4 357556
prefetch_data_hits 4 2489500
prefetch_data_misses 4 1569248
prefetch_metadata_hits 4 3163318
prefetch_metadata_misses 4 105156
mru_hits 4 12907488
mru_ghost_hits 4 114469
mfu_hits 4 27727068
mfu_ghost_hits 4 464039
deleted 4 2749215
recycle_miss 4 8133
mutex_miss 4 740
evict_skip 4 62122
evict_l2_cached 4 0
evict_l2_eligible 4 270710646272
evict_l2_ineligible 4 122732333056
hash_elements 4 268203
hash_elements_max 4 268941
hash_collisions 4 7490083
hash_chains 4 71651
hash_chain_max 4 9
p 4 1982394368
c 4 4294967296
c_min 4 4194304
c_max 4 4294967296
size 4 4294834528
hdr_size 4 86552992
data_size 4 3125542912
meta_size 4 526384640
other_size 4 556353984
anon_size 4 540672
anon_evict_data 4 0
anon_evict_metadata 4 0
mru_size 4 1985674752
mru_evict_data 4 1692532736
mru_evict_metadata 4 124579328
mru_ghost_size 4 2308680192
mru_ghost_evict_data 4 1841692672
mru_ghost_evict_metadata 4 466987520
mfu_size 4 1665712128
mfu_evict_data 4 1432485888
mfu_evict_metadata 4 56686592
mfu_ghost_size 4 1953543680
mfu_ghost_evict_data 4 1462370304
mfu_ghost_evict_metadata 4 491173376
l2_hits 4 0
l2_misses 4 0
l2_feeds 4 0
l2_rw_clash 4 0
l2_read_bytes 4 0
l2_write_bytes 4 0
l2_writes_sent 4 0
l2_writes_done 4 0
l2_writes_error 4 0
l2_writes_hdr_miss 4 0
l2_evict_lock_retry 4 0
l2_evict_reading 4 0
l2_free_on_write 4 0
l2_abort_lowmem 4 0
l2_cksum_bad 4 0
l2_io_error 4 0
l2_size 4 0
l2_asize 4 0
l2_hdr_size 4 0
l2_compress_successes 4 0
l2_compress_zeros 4 0
l2_compress_failures 4 0
memory_throttle_count 4 0
duplicate_buffers 4 0
duplicate_buffers_size 4 0
duplicate_reads 4 0
memory_direct_count 4 2561
memory_indirect_count 4 36032
arc_no_grow 4 0
arc_tempreserve 4 0
arc_loaned_bytes 4 0
arc_prune 4 0
arc_meta_used 4 1169291616
arc_meta_limit 4 3221225472
arc_meta_max 4 1490740400
Aktualisieren
Ich habe das ps-mem-Tool ausgeführt , um eine Aufschlüsselung des von allen Anwendungen verwendeten Speichers durchzuführen, und es beträgt nur 8,3 GB. Das zusammen mit den 4294834528
Bytes (4 GB), die der ZFS ARC anscheinend hat, sollte nur 12 GiB betragen, aber Sie können deutlich sehen, dass ich das um ungefähr weitere 3-4 GiB übertreffe. Vielleicht gibt der ARC RAM nicht richtig frei oder so?
Update 5. Mai 2015 - Temporäre Problemumgehung
Wenn Sie den folgenden Befehl ausführen, wird die Speichernutzung gelöscht, wie in diesem YouTube-Video gezeigt .
sync; echo 2 | sudo tee /proc/sys/vm/drop_caches