CentOS下的KVM,swap耗盡,物理記憶體可用
我已經有一個測試 CentOS KVM 主機執行了大約一周,現在有 3 個 CentOS 來賓。有 12GB 物理 RAM,其中大約 7.5GB 實際分配給虛擬機。這些虛擬機甚至還沒有被使用,因為伺服器仍處於測試階段,但我注意到在過去 24-48 小時內交換使用率一直在攀升。現在看起來已經筋疲力盡了。
這是輸出
free
# free -m total used free shared buffers cached Mem: 11905 11749 155 0 81 4632 -/+ buffers/cache: 7035 4869 Swap: 2047 2047 0
因此,您可以看到物理記憶體已全部使用,但它被用作記憶體記憶體,我認為這通常很好,因為如果應用程序需要它,它將被釋放。
我執行了在這個答案中找到的 shell 腳本,它列出了 3 個
qemu-kvm
程序。為我配置了伺服器,只為交換分配了 2GB 的邏輯卷,通常我喜歡匹配高達 8GB 的物理記憶體。
是否值得擴展交換邏輯卷或添加單獨的交換卷?
這在 KVM 中很常見嗎?這不是我在其他 KVM 主機上看到的東西,所以我需要調整一個特定的設置嗎?
還有其他意見/建議嗎?
這很正常。空閒虛擬機使用的頁面將被交換,記憶體將用於記憶體。您可以將swappiness設置為零,這可能會以性能為代價(較小的記憶體)阻止像這樣使用交換。
這是 Red Hat 的建議(有許多 YMMV):
交換空間計算如下:
計算所有來賓總和所需的記憶體量 - 在此範例中:(50 個來賓 * 每個來賓 1GB 記憶體)= 50GB
將客戶記憶體量添加到主機作業系統和主機最小交換空間所需的量 - 在此範例中:50GB 客戶記憶體 + 4GB 主機作業系統 + 4GB 最小交換 = 58GB
從系統上的物理 RAM 量中減去這個量 - 在這個例子中 58GB - 32GB = 26GB
答案是需要分配的交換空間量。在這個例子中 26GB
此範例未考慮核心同頁合併 (KSM),這將減少使用的記憶體量。
這裡 RH 說 4G 交換主機,但這裡他們建議 12G * 0.5 = 6G 交換給你。
如果您是 KVM 新手,我建議您閱讀 IBM 的KVM 最佳實踐文件。