vSwap 和 Burstable RAM 之间有什么大区别?
vSwap 是否使用磁盘创建并导致 I/O?我知道 SWAP 将使用磁盘,因此 vSwap 是否与容器中虚拟化的交换相同。
答案1
突发内存本质上是主机节点有可用内存并且您已超出保证给容器的内存时可以使用的内存。这是一个有缺陷的系统,因为应用程序不会读取 OpenVZ 计数器中的内存。这意味着您的 VPS 认为它拥有的内存比主机节点实际保证的内存要多。
例如,如果我将内存保证设置为 1GB,并为您提供 2GB 的突发内存,您将看到一个有 2GB 内存可供使用的 VPS。但是,如果您的使用量超过 1GB,并且主机服务器没有内存可供您使用,则 OpenVZ 内核将开始终止您的进程,将您的使用量降至等于或低于 1GB(即保证内存)的值。
更合适的解决方案是 vSwap。应用程序通常不希望用频繁访问的数据填充交换空间。这通常(有很多例外)被视为额外的内存存储,以便在您的内存使用量恰好超过物理内存时让您继续运行。在普通的 Linux 系统上,交换是磁盘空间。磁盘比 RAM 慢。将系统磁盘视为 RAM 会影响性能。OpenVZ 将 vSwap 分配为主机节点上的实际 RAM,而不是磁盘空间。为了模拟更原生的环境,内核人为地减慢了容器的速度,以使交换变得没有吸引力,而人们通常认为和预期它会如此。
使用 RAM 而不是磁盘来分配 vSwap 的理念是,当一些容器开始耗尽其内存和交换空间时,您不希望服务器上所有用户的磁盘延迟增加。通过将其分配给 RAM,您可以避免不必要的磁盘性能问题。
对于性能更像实际虚拟化或实际专用服务器的 OpenVZ VPS,vSwap 是您的首选,而 Burst 已经过时了。
答案2
vSwap 计算即分配给容器的 RAM 量减去分配给它的突发内存量之间的差值。正数会创建 vSwap 来解释差值。至于虚拟内存操作导致物理驱动器上的 iopts,我没有任何硬数据,但我认为答案可能是否定的,或者至少不会比任何其他内存管理系统多得多