ZFS - Immer zu wenig Speicher

8

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.confDatei 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:

Geben Sie hier die Bildbeschreibung ein 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/arcstatsist 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 4294834528Bytes (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

Weitere Informationen zu diesem Befehl .

Programmierer
quelle
1
ZFS-Dienste benötigen mehr Speicher "speicherhungrige Anwendungen" ;-)
PKumar
Ich benutze ZFS nicht, da ich denke, dass es zu gierig ist, aber Sie können dies hilfreich finden: wiki.freebsd.org/ZFSTuningGuide und auch: unix.stackexchange.com/questions/116217/…
Elder Geek
Kennen Sie ein alternatives System, bei dem ich ein anderes RAID 10-Array als BTRFS "wachsen" und neu ausgleichen kann, das ich mit KVM nicht verwenden kann? Derzeit in Ceph suchen.
Programster
21. Juni 2015 - Bin ich es nur oder wurde dieses Problem in einem kürzlich durchgeführten Kernel-Update behoben?
Programster
Was ist dein Primärcache? Haben Sie Dedup aktiviert und was ist der Synchronisierungswert?
Alex Iepuras

Antworten:

2

ZFS verwendet auch viel SLAB- Speicherplatz im Kernel. Sie können überprüfen, wie viel SLAB verwendet wird, indem Sie entweder überprüfen /proc/meminfooder installieren nmon.

Weitere Informationen zur Plattennutzung finden Sie unter /proc/slabinfound/proc/spl/kmem/slab

Es lohnt sich, dies zu lesen , um mehr über die Speichernutzung von ZFS zu erfahren.

Torge
quelle