Memory

xen vm 記憶體失去

  • May 12, 2015

我有一個 320GB 記憶體的 Ubuntu 伺服器。我在這台機器上安裝了 xen 4.4.1,並執行了 2 個 Debian VM。一種具有 +-100GB 的記憶體,另一種具有 +-200GB 的記憶體。一切正常,直到有一次,200GB 機器報告只有 128GB。伺服器的正常執行時間為 144 天,在上個月的某個地方,失去了超過 70GB 的記憶體。

在 dom0 上:

$ sudo xl info
...
total_memory           : 327634
free_memory            : 16547
...

$ sudo xl list
Name                               ID   Mem  VCPUs      State   Time(s)
Domain-0                            0    510    32     r-----      54.4
mycroft                             1 102400    16     -b----      33.3
adler                               2 204000    16     -b----      34.5

$ uname -a
Linux moriarty 3.13.0-32-generic #57-Ubuntu SMP Tue Jul 15 03:51:08 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

根據 xl 列表,在具有 204000MB 的 VM 上:

$ free -m
            total       used       free     shared    buffers     cached
Mem:        128404       6220     122184          0         10         56
-/+ buffers/cache:       6152     122251
Swap:            0          0          0

$ uname -a
Linux adler 3.2.0-4-amd64 #1 SMP Debian 3.2.65-1+deb7u2 x86_64 GNU/Linux

$ cat /proc/meminfo
MemTotal:       131486352 kB
MemFree:        125117048 kB
Buffers:           11216 kB
Cached:            58016 kB
SwapCached:            0 kB
Active:          6057868 kB
Inactive:          47632 kB
Active(anon):    6036284 kB
Inactive(anon):      324 kB
Active(file):      21584 kB
Inactive(file):    47308 kB
Unevictable:           0 kB
Mlocked:               0 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                12 kB
Writeback:             0 kB
AnonPages:       6036296 kB
Mapped:            14740 kB
Shmem:               344 kB
Slab:              20024 kB
SReclaimable:       6504 kB
SUnreclaim:        13520 kB
KernelStack:        2728 kB
PageTables:        14824 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    65743176 kB
Committed_AS:   91568356 kB
VmallocTotal:   34359738367 kB
VmallocUsed:      214612 kB
VmallocChunk:   34359523687 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:    208896000 kB
DirectMap2M:           0 kB

我已經重新啟動了兩台伺服器,但沒有任何結果:dom0 一直報告 204gB,機器本身報告 128gB。差異的原因是什麼,我該如何解決?

編輯

dmesg 輸出給了我這個

[    0.000000] BIOS-provided physical RAM map:
[    0.000000]  Xen: 0000000000000000 - 00000000000a0000 (usable)
[    0.000000]  Xen: 00000000000a0000 - 0000000000100000 (reserved)
[    0.000000]  Xen: 0000000000100000 - 0000002000000000 (usable)
[    0.000000]  Xen: 0000002000000000 - 00000031ce000000 (unusable)

最後一行的範圍似乎與失去的記憶體相對應。

我對 debian wheezy 7.8 客人有同樣的問題。安裝 wheezy backports 核心 3.16.0-0.bpo.4-amd64 為我解決了這個問題。這是在客人身上,我沒有碰過主人。

將以下行添加到 /etc/apt/sources.list:

deb http://ftp.uk.debian.org/debian/ wheezy-backports main

然後執行

apt-get update
apt-get -t wheezy-backports install linux-image-amd64
reboot

你有記憶體膨脹嗎?如果是這樣,“失去”的記憶體應該是氣球驅動程序回收的記憶體。

您可以將輸出cat /proc/meminfo發佈到帶有“缺失”記憶體的機器上嗎?

編輯

從您的 /proc/meminfo 輸出來看,氣球似乎確實在工作。

查看“DirectMap4k”值:它報告說,MMU 以 4k 粒度管理大約 200 GB 的 RAM。換句話說,虛擬化硬體看到完整的 200 GB RAM。

但是,“MemTotal”值清楚地表明總可用記憶體“僅”135 GB。

這意味著核心/驅動程序級別的某些東西“竊取”了一些記憶體以供其他用途。如此大量的可用記憶體是膨脹的完美目標。您可以在這裡找到更多資訊。

引用自:https://serverfault.com/questions/684026