查找神秘的 Linux 内存使用情况 - 不是缓存或平板(或膨胀?)

查找神秘的 Linux 内存使用情况 - 不是缓存或平板(或膨胀?)

我有一台运行 Debian Linux 的 Xen VM,它占用的 RAM 数量异常大。罪魁祸首可能是什么?我认为我已经排除了磁盘缓存、内核板使用和内存膨胀等常见原因。

free -h显示:

               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       3.6Gi        87Mi       0.0Ki        55Mi        33Mi
Swap:          1.0Gi       275Mi       748Mi

因此,虚拟机的 3.8 GiB RAM 几乎全部被使用,并且只有一小部分使用来自内核的磁盘缓存。

smem -kt不将内存归属于任何进程:

  PID User     Command                         Swap      USS      PSS      RSS 
-------------------------------------------------------------------------------
   52 1                                      214.4M   128.4M   133.2M   146.6M 

smem -w -kt说内存属于内核:

Area                           Used      Cache   Noncache 
firmware/hardware                 0          0          0 
kernel image                      0          0          0 
kernel dynamic memory          3.6G -20205568.0       3.6G 
userspace memory             133.6M      77.6M      56.0M 
free memory                   87.8M      87.8M          0 
----------------------------------------------------------
                               3.8G     146.1M       3.6G 

(而且,那个负数看起来很奇怪。)

/proc/meminfo除其他事项外,还指出内核 slab 分配器仅负责大约 95 MiB 的 RAM 使用(并且也没有真正说明使用 RAM):

MemTotal:        3973392 kB
MemFree:           89144 kB
MemAvailable:      41860 kB
Buffers:            5084 kB
Cached:            37972 kB
SwapCached:        30000 kB
Active:            52356 kB
Inactive:          77832 kB
Active(anon):      30756 kB
Inactive(anon):    56396 kB
Active(file):      21600 kB
Inactive(file):    21436 kB
Unevictable:          80 kB
Mlocked:              80 kB
SwapTotal:       1048572 kB
SwapFree:         775576 kB
Dirty:               104 kB
Writeback:             0 kB
AnonPages:         78660 kB
Mapped:            91004 kB
Shmem:                20 kB
KReclaimable:      28348 kB
Slab:              96740 kB
SReclaimable:      28348 kB
SUnreclaim:        68392 kB
KernelStack:        4288 kB
PageTables:         6768 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:     3035268 kB
Committed_AS:    1697316 kB
VmallocTotal:   34359738367 kB
VmallocUsed:       10028 kB
VmallocChunk:          0 kB
Percpu:             2352 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
FileHugePages:         0 kB
FilePmdMapped:         0 kB
CmaTotal:              0 kB
CmaFree:               0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      428032 kB
DirectMap2M:     3799040 kB
DirectMap1G:           0 kB

如果我正确理解了 Xen 内存的内容,系统并没有因为内存膨胀而损失太多的 RAM。 /sys/devices/system/xen_memory/xen_memory0/info/current_kb包含4079228,这与系统报告的 RAM 非常匹配。在同一目录中,high_kb分别low_kb包含016384。我相信这意味着 Xen 内存膨胀驱动程序只占用了 16 MiB 的 RAM。

我遗漏了什么?还有什么会占用这么多的系统内存?

相关内容