ZFS - всегда недостаточно памяти

Я читал, что ZFS был настроен на использование всей физической памяти, кроме 1 ГБ, в системах с 4 ГБ или более. Поскольку у меня есть виртуальные машины, на которых запущен мой домашний сервер с файловой системой ZFS, я хотел вручную уменьшить это, чтобы мои виртуальные машины распределили пространство, и у меня есть некоторое пространство для будущих развертываний KVM.

Я понял, что установка следующей строки в файле /etc/modprobe.d/zfs.conf ограничит использование ZFS только 4 ГБ.

options zfs zfs_arc_max=4294967296

После перезагрузки htop показывает, что значительная часть моей оперативной памяти была выделена, но есть много неиспользуемого пространства.

Однако через некоторое время использование ОЗУ будет увеличиваться до тех пор, пока мы не начнем перестановку, как показано ниже:

enter image description here Htop домашнего сервера с отсортированными задачами по использованию RES

Вопрос

Я что-то сконфигурировал неправильно, или есть что-то еще, что мне также нужно установить для уменьшения занимаемой площади ZFS? Возможно, это не ZFS, но есть что-то еще, что ест мою оперативную память, о которой я не знаю?

Дополнительная информация

Вывод cat /proc/spl/kstat/zfs/arcstats выглядит следующим образом:

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

Обновление

Я запустил инструмент ps-mem , чтобы выполнить разбивку памяти, используемой всеми приложениями, и она составляет всего 8,3 ГБ. Это в сочетании с 4294834528 байтами (4 ГБ), которые, очевидно, у ZFS ARC, должны составлять только 12 ГиБ, но вы можете ясно видеть, что я превышаю это примерно еще на 3-4 ГиБ. Возможно, ARC неправильно высвобождает ОЗУ или что-то в этом роде?


Обновление от 5 мая 2015 г. - Временный обходной путь

Запуск следующей команды, чтобы очистить использование памяти, как показано в в это видео на YouTube .

sync; echo 2 | sudo tee /proc/sys/vm/drop_caches

Подробнее об этой команде .

7
задан 6 June 2015 в 11:57

1 ответ

ZFS также использует много из ПЛИТА пространство в ядре. Можно проверить, сколько ПЛИТЫ это использует или проверяет /proc/meminfo или путем установки nmon.

Более подробная информация об использовании плиты может быть найдена под /proc/slabinfo, и /proc/spl/kmem/slab

Это стоит считать это для понимания больше об использовании памяти ZFS.

2
ответ дан 6 June 2015 в 11:57

Другие вопросы по тегам:

Похожие вопросы: