Memory
xen vm 記憶體失去
我有一個 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。
這意味著核心/驅動程序級別的某些東西“竊取”了一些記憶體以供其他用途。如此大量的可用記憶體是膨脹的完美目標。您可以在這裡找到更多資訊。