对允许虚拟内存有何看法里面虚拟机?
例如,对于一台拥有 8 GB 内存的主机,我可以运行 4 个虚拟机,每个虚拟机拥有 2 GB 内存(大约),并且不会发生主机交换。但是,在每个虚拟机中,我可以拥有一个 2 GB 的页面文件,因此虚拟服务器拥有 4 GB 的可用内存,2 个物理内存,2 个虚拟内存。
或者...我可以为每个虚拟机分配 4 GB 的“内存”,让主机使用 8 GB 的实际内存和 8 GB 的虚拟内存,并且每个虚拟机中都没有页面文件。每个虚拟机仍然有“4 GB”,但分页将在主机上进行。
我头脑发热的一面说,像在真正的服务器上一样在每个客户机中设置分页,这样就没问题了。但我分析的一面认为,过度使用主机内存和在虚拟机中不进行分页有两个主要优点。首先,虚拟内存的 IO 由主机操作系统处理,它更接近裸机,因此应该更快。其次,只需要分页如果主机没有可用内存。如果来宾需要 4G,但其他来宾不使用其内存,则无需分页。
有什么想法吗?
答案1
我不是虚拟化专家(事实上,我认为大多数时候它都不是适合这项工作的工具),但据我所知,您的客户操作系统不应被允许交换。阻止交换的主要原因是它代表了一种猜测操作系统占用主机大部分 IO 带宽的方式。
此外,您不想假装您的猜测操作系统拥有比它更多的物理内存,因为这将导致主机大量交换,但在猜测操作系统内部调试性能问题将非常困难,因为从他们的角度来看,他们没有交换,并且客户机中的任何操作系统级别工具都不会显示它。
甚至可能使用 Xen 和 VmWare 之类的工具,由于使用了气球内存驱动程序,您也无法在主机操作系统上过度使用内存。
答案2
这在很大程度上取决于主机操作系统上内存过度使用所带来的后果。例如,如果 Linux 内存不足杀手杀死了我的虚拟机,我会感到更加恼火。我倾向于为每个客户操作系统留出一个较小的、独立的、预分配的、独立于快照的(如果适用于您的 VM 解决方案)虚拟磁盘,确保托管该磁盘映像的文件没有碎片和/或位于快速驱动器上,并将客户交换空间配置为驻留在该虚拟磁盘上。如今的虚拟机管理程序内存管理已经足够好,不会感觉到 OOM 主机交换和 OOM 客户交换之间的差异,而且我可以独立微调客户行为。两全其美。
答案3
VM 中的自有交换更好地隔离资源。这样的虚拟机无法通过其 RAM 需求拖累主机 — 它已经受到限制。如果您将交换放在虚拟机系统以外的磁盘上,您甚至可以为其设置不安全的缓存策略。
但“外部”掉期是指更好地利用资源。
就是这样:隔离与利用- 你的选择。
答案4
由于 IO 问题,我不会为您的客户机提供虚拟内存。我也不会为您的主机提供虚拟内存,而为客户机提供过多的物理内存,因为客户机实际上不会意识到它使用的是虚拟内存而不是物理内存。
这除了购买更多内存之外,你别无选择。你真的找不到其他方法来购买更多内存。它非常便宜,如果你的服务器可以支持更多内存,我会买更多。