qemu 磁盘缓存写回模式使用多少内存?

qemu 磁盘缓存写回模式使用多少内存?

我使用带有 ZFS ZVOL 或 LVM-thin 的 Proxmox 作为磁盘卷,据说使用磁盘缓存写回模式将使内存使用量超过分配量。

有没有办法检查、限制和增加 Linux KVM 中 qemu 磁盘缓存写回模式的内存使用量?

答案1

在写回模式下,QEMU/KVM 通过主机的页面缓存进行写入,基本上与任何其他用户空间程序一样。要获取有关页面缓存内容和活动的信息,您可以发出:

[user@localhost ~]$ grep -i "^cache\|dirty\|writeback:" /proc/meminfo
Cached:            84548 kB
Dirty:                 0 kB
Writeback:             0 kB

检查输出,我们可以看到:

  • 已缓存:是用于读取缓存的内存量。如果您在客户机中读取某些内容,它将结束两个都在主机内存缓存中在客户机自己的页面缓存中。有人认为这种双重缓存是一种资源浪费;实际上,如果内存压力很大,只读缓存可能会被立即丢弃。另一方面,主机的缓存通常比客户机的缓存大得多,因此可以通过打开 QEMU 写回缓存(与直接访问相比)来获得净性能提升;

  • 肮脏的:它表示要写入(即更改)的内存量。为了回收这些内存,系统必须将更改写入磁盘。这意味着,根据底层 IO 子系统,脏页回收可能会很慢;

  • 回写:这是系统内存的大小目前正在写作到磁盘,既由于内存压力(和脏页回收),也由于时间(最多 30 秒后,脏页会被写回到磁盘)。

总而言之,页面缓存的奇妙之处在于,它由主机系统自动管理,以响应内存压力和其他因素(即各种sysctl条目)。由于它经常导致客户系统的净性能提升,因此我为大多数虚拟机设置了写回缓存。

可以找到更多信息这里

相关内容