Kvm-Virtualization
KVM 來賓中的交換文件不是浪費嗎?有沒有更好的辦法?
所以我在一堆伺服器上執行一堆客人,目前我的“標準”客人分區是這樣的:
- /boot 1GB
- 4 - 8 GB 用於交換
- 其餘的 /
我根據在其中執行的應用程序的需要,為每個來賓分配不同數量的 RAM。交換也取決於應用程序。
當某些操作超出其設計範圍並使用更多 RAM 時,交換就存在。
但是,這對我來說似乎很浪費:我為每個客人使用 4-8GB 的磁碟空間只是因為它可能每天需要幾次?考慮到這些客人通常是 20GB,主要是託管程式碼(數據庫伺服器是獨立的),這是一個相當大的百分比。
我只是在各種堆棧交換站點上閱讀了有關此的文章,但沒有找到任何更優雅的解決方案的踪跡。“優雅的解決方案”是指客戶端之間的某種交換空間共享。
建議的方法(我看到的)是:
- 在客人中使用交換
- 過度使用主機
或者,已經有效的最佳方法(但不經常被建議)似乎是記憶體膨脹(僅適用於 Linux 客戶機,但這很好),使用某種實時監視器/調整代理,可以在要求。
那麼,利用這些時間的最佳方法是什麼?
我建議讓事情盡可能簡單:記憶體管理本身就是一個複雜的主題,您最不想要的就是由於過早/不必要的優化而導致客戶機崩潰。
2 GB 的交換空間對於小型客戶來說是一個合理的起點,而 4/8 GB 足夠用於更大的客戶。您可以使用精簡捲進行交換,但在這些小尺寸下,它應該無關緊要。
刪除來賓分頁空間。分配來賓記憶體以不過度使用主機記憶體。必要時獲取更多記憶體
(可選)啟用核心同頁合併 (KSM)以獲得一些重複數據刪除。
分頁空間應該是便宜的,以證明比 DRAM 慢 100 倍。在我看來,如果它既昂貴又慢,並且需要一些精簡配置方案才能擁有足夠的資源,那麼不值得保留。
過度使用是有風險的,因為如果使用超出預期,性能將會很糟糕。或者更糟的是,惹惱了OOM殺手。通過監控使用情況,您可以在 OOM 之前採取行動,但您是否想花精力來節省一點 DRAM 成本?