Linux + KVM 上的 ZFS 窃取内存

Linux + KVM 上的 ZFS 窃取内存

我在 CentOS 7 服务器上遇到了一个问题,我创建了一个 ZFS 池以及(当前)一个正在运行的 KVM VM(CentOS 6 客户机)。Top 报告称 VM 使用了我系统内存的大约 50%(这是正确的 - 我已将其配置为总共 32 GB 中的 16 GB),但是 free 报告称我正在使用的活动内存约为 26 GB。虽然我已将 ZFS 限制为仅使用 4 GB 用于 ARC,但某个地方还有 10 GB 的额外 RAM 在使用,我根本找不到它。Top 显示没有其他使用内存的情况:

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
10928 qemu      20   0 20.773g 0.015t    680 S  55.8 50.7  12148:34 qemu-kvm
  530 root      20   0   59376   7940   7796 S   0.0  0.0   1:52.59 systemd-journal
 1913 root      20   0 1063816   5820   3120 S   0.0  0.0   0:01.36 libvirtd
 9005 root      20   0  135612   5344   4092 S   0.0  0.0   0:01.69 sshd
 8637 root      20   0  135612   5336   4092 S   0.0  0.0   0:00.42 sshd
    1 root      20   0   50960   4360   2152 S   0.0  0.0   0:12.09 systemd
11597 postfix   20   0   91636   3892   2892 S   0.0  0.0   0:00.00 pickup
 1400 root      20   0  378052   3168   2076 S   0.0  0.0   0:04.18 NetworkManager
 8651 root      20   0  115452   2140   1672 S   0.0  0.0   0:00.13 bash
 9020 root      20   0  115352   2056   1632 S   0.0  0.0   0:00.00 bash

Free 没有关于 RAM 位置的详细信息(不,它不是文件系统缓存,据报告它正在使用中):

             total       used       free     shared    buffers     cached
Mem:         31974      26534       5439         13          0         90
-/+ buffers/cache:      26444       5530
Swap:         1999        925       1074

我的 ZFS 统计数据报告 ARC 在正常范围内:

5 1 0x01 85 4080 3000154942 1126206978029170
name                            type data
hits                            4    626600066
misses                          4    531647209
demand_data_hits                4    324930179
demand_data_misses              4    239380938
demand_metadata_hits            4    246080774
demand_metadata_misses          4    33168747
prefetch_data_hits              4    55239743
prefetch_data_misses            4    256749089
prefetch_metadata_hits          4    349370
prefetch_metadata_misses        4    2348435
mru_hits                        4    170996240
mru_ghost_hits                  4    146648139
mfu_hits                        4    412479249
mfu_ghost_hits                  4    55201631
deleted                         4    522830695
recycle_miss                    4    688200803
mutex_miss                      4    5494038
evict_skip                      4    263172839174
evict_l2_cached                 4    2293824808448
evict_l2_eligible               4    3235679258112
evict_l2_ineligible             4    711594439680
hash_elements                   4    1003039
hash_elements_max               4    31494585
hash_collisions                 4    453192154
hash_chains                     4    298915
hash_chain_max                  4    105
p                               4    1899257344
c                               4    4294967296
c_min                           4    4194304
c_max                           4    4294967296
size                            4    4294703744
hdr_size                        4    428382448
data_size                       4    3463036928
meta_size                       4    268575232
other_size                      4    101467000
anon_size                       4    2181120
anon_evict_data                 4    0
anon_evict_metadata             4    0
mru_size                        4    1823588352
mru_evict_data                  4    1620893696
mru_evict_metadata              4    92227584
mru_ghost_size                  4    2367817728
mru_ghost_evict_data            4    1721548800
mru_ghost_evict_metadata        4    646268928
mfu_size                        4    1905842688
mfu_evict_data                  4    1840373760
mfu_evict_metadata              4    17820160
mfu_ghost_size                  4    1927131648
mfu_ghost_evict_data            4    1881784320
mfu_ghost_evict_metadata        4    45347328
l2_hits                         4    124320745
l2_misses                       4    404820103
l2_feeds                        4    1128427
l2_rw_clash                     4    52038
l2_read_bytes                   4    474159669248
l2_write_bytes                  4    246928839168
l2_writes_sent                  4    541747
l2_writes_done                  4    541747
l2_writes_error                 4    0
l2_writes_hdr_miss              4    6389
l2_evict_lock_retry             4    1037
l2_evict_reading                4    3
l2_free_on_write                4    3709466
l2_abort_lowmem                 4    1752
l2_cksum_bad                    4    0
l2_io_error                     4    0
l2_size                         4    2306560512
l2_asize                        4    2249048064
l2_hdr_size                     4    33242136
l2_compress_successes           4    45560845
l2_compress_zeros               4    0
l2_compress_failures            4    7074167
memory_throttle_count           4    0
duplicate_buffers               4    0
duplicate_buffers_size          4    0
duplicate_reads                 4    0
memory_direct_count             4    140693
memory_indirect_count           4    222279
arc_no_grow                     4    0
arc_tempreserve                 4    0
arc_loaned_bytes                4    0
arc_prune                       4    36031794
arc_meta_used                   4    831666816
arc_meta_limit                  4    3221225472
arc_meta_max                    4    10590063600

这是当前的 ZFS 配置:

  pool: pool
 state: ONLINE
  scan: scrub repaired 0 in 1h33m with 0 errors on Sat Dec  6 02:33:48 2014
config:

        NAME                                                  STATE     READ WRITE CKSUM
        pool                                                  ONLINE       0     0     0
          mirror-0                                            ONLINE       0     0     0
            sda                                               ONLINE       0     0     0
            sdb                                               ONLINE       0     0     0
          mirror-1                                            ONLINE       0     0     0
            sdc                                               ONLINE       0     0     0
            sdd                                               ONLINE       0     0     0
        logs
          mirror-2                                            ONLINE       0     0     0
            ata-INTEL_SSDSA2CW120G3_BTPR13600113120LGN-part3  ONLINE       0     0     0
            ata-INTEL_SSDSA2CW120G3_BTPR152503LQ120LGN-part3  ONLINE       0     0     0
        cache
          ata-INTEL_SSDSA2CW120G3_BTPR13600113120LGN-part4    ONLINE       0     0     0
          ata-INTEL_SSDSA2CW120G3_BTPR152503LQ120LGN-part4    ONLINE       0     0     0

errors: No known data errors

看来我有 6+ GB 的内存,刚刚消失了从系统中,我不确定这里发生了什么。有人能解释一下吗?

谢谢。

答案1

您拥有很多 L2ARC... 比您应该拥有的多。这并非全是魔法... 一些 ZFS 最佳实践应该成为设计的一部分。

L2ARC 需要映射到实际 RAM 中。我记得的最佳做法是每 5GB L2ARC 对应约 1GB RAM。因此,您有 172GB 的 L2ARC... 系统需要调整为约 34.5GB RAM 以用于 ZFS。为虚拟机占用大量内存显然会影响这一点。

尝试使用不带 L2ARC 的该系统或使用更少量的 L2ARC。

在我的环境中,我会在添加 L2ARC 设备之前优化 RAM。有人说,除非您有 64GB 或更多 RAM,否则您不应该走这条路。如果您有备用 SSD 并想使用它们,请创建一个 SSD 池。

相关内容