在我使用的各种主机系统上设置虚拟机时,无论是Hyper-V,VMware还是KVM,我总是按照物理内存configuration的大小分配RAM,例如添加1GB内存,我将增加1024MB, 6GB的RAM我将添加6×1024 = 6144MB。
我意识到,我从来没有想过为什么要这样做,这只是以前的工作方式,我从来没有质疑的方式。
所以,我的问题是,除了这个事实,即虚拟化的操作系统可以将分配的RAM整齐地分散到最接近的GB,那么以不是2的幂数或其倍数来分配RAM有什么缺点呢? 例如添加500MB RAM,750MB RAM或1001MB RAM会有什么不利之处?
或者,有没有什么好处可以使这种推荐的做事方式?
我已经把这个问题留给了主机操作系统,因为我有兴趣看看是否有不同的主机需要考虑。
没有缺点。 你可以添加你需要的内存。 相同的CPU。 如果您需要3个vCPU或4或5个,您可以根据需要进行分配。
一些pipe理员喜欢看到512和1024的倍数,但是真的没关系。
不,没有优点/缺点。 系统pipe理员往往更喜欢圆形的大小,我呢。
我可以build立一个非常小的linux系统,并给它403 MB的RAM,系统将分配它需要它的工作。 但是,你不会find403 MB的内存模块,因为所有的东西都可以和2的能力一起工作。
我曾经在我的单一esxi虚拟化Windows和Linux操作系统,给了Ubuntu 768MB和Windows 3328MB,这对两个,总共4GB是好的。 如果我用更less的内存来使用它,我就会失去它。
以不是2的幂数或其倍数的数量分配RAM有什么缺点?
首先。 请记住,每个整数是2的幂的倍数。 所以真正要问的问题是,如果你应该限制自己某种乘数或某些二的幂。
物理机器通常带有两倍功率的小倍数(1,3或5)的存储器。 但是这个原因不适用于虚拟机。
但是,页面大小是适用于虚拟机的问题。 有两种可能的页面大小的架构。 常见的32位体系结构支持正好4KB和4MB的页面。 常见的64位体系结构支持正好4KB和2MB的页面。
如果让分配给虚拟机的内存总是4MB的倍数,底层代码使用大页面来优化性能会更实用一些。 由于这些原因,我build议瞄准4MB的倍数。
我确实希望devise合适的软件能够为您提供4MB的倍数,如果这样做更有利的话。 但是,如果您select4MB的倍数,那么您将不太需要软件来获取这些angular落案例。
除此之外,我说分配内存到虚拟机的数量是准确的,你可以预测他们的要求。 如果您预测虚拟机需要500MB到750MB以获得最佳性能,则分配752MB。 我看不出有什么理由将其分成768MB或1024MB。
一些系统使用的伙伴内存分配方法被devise为与两个权力一起工作。 然而,该方法可以采用小的努力来处理不是两个幂的大小。 即使在内存大小为2的倍数的物理机器上,物理内存的部分物理内存仍然可能不可用于伙伴分配器。 因此,使用这种方法的每个操作系统都可以确保其他内存大小的工作。