ZFS - 总是内存不足

ZFS - 总是内存不足

我读到 ZFS 被设置为在具有 4GB 或更多内存的系统上使用除 1GB 之外的所有物理内存。由于我的家庭服务器运行着运行 ZFS 文件系统的虚拟机,因此我想手动减少内存,以便我的虚拟机有分配的空间,并为未来的 KVM 部署留出一些喘息空间。

我知道在文件中设置以下/etc/modprobe.d/zfs.conf行将限制 ZFS 仅使用 4GB。

options zfs zfs_arc_max=4294967296

重启后,htop 显示我的 RAM 的很大一部分已被分配,但还有很多未使用的空间。

然而,一段时间后,RAM 利用率将会增加,直到我们开始进入交换,如下所示:

在此处输入图片描述 家庭服务器的 Htop,按 RES 使用情况排序任务

问题

我是否配置不正确,或者我是否还需要设置其他内容以减少 ZFS 的占用空间?也许不是 ZFS,而是有其他我不知道的东西占用了我的 RAM?

额外信息

的输出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 GB。加上4294834528ZFS ARC 显然拥有的字节数 (4GiB),应该只有 12 GiB,但您可以清楚地看到我超出了大约 3-4 GiB。也许 ARC 没有正确释放 RAM 或什么原因?


2015 年 5 月 5 日更新 - 临时解决方法

运行以下命令似乎可以清除内存使用情况此 YouTube 视频演示了

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

有关此命令的更多信息

答案1

ZFS 还使用了很多板坯内核中的空间。您可以通过检查/proc/meminfo或安装来检查它使用了多少 SLAB nmon

有关板材使用的更多详细信息,请参阅/proc/slabinfo/proc/spl/kmem/slab

值得一读了解有关 ZFS 内存使用情况的更多信息。

相关内容