当前位置: > 虚拟化 Virtualization > KVM >

KVM虚拟化Disk Cache模式对性能的影响分析

时间:2021-12-18 13:07来源:linux.it.net.cn 作者:IT
缓冲模式
qemu-kvm磁盘读写的缓冲(cache)模式一共有五种,分别是writethrough, wirteback, none, unsafe, directsync,当你对VM读写磁盘的性能有不同的要求的时候,你可以在其启动的参数(cache=xxxx)里面进行一个合理的选择。

cache=writethrough
该模式对应的标志位是 O_DSYNC ,仅当数据被提交到了存储设备里面的时候,写操作才会被完整的通告。此时host的页缓存可以被用在一种被称为writethrough缓存的模式。guest的虚拟存储设备被告知没有回写缓存(writeback cache),因此guest不需要为了操纵整块数据而发送刷新缓存的指令了。此时的存储功能如同有一个直写缓存(writethrough cache)一样。

cache=none(读性能最佳,适用于读多写少的场合,例如数据库服务器)
所对应的标志位是 O_DIRECT ,在 none 模式下,VM的IO操作直接在qemu-kvm的userspace缓冲和存储设备之间进行,绕开了host的页缓冲。这个过程就相当于让vm直接访问了你的host的磁盘,从而性能得到了提升。

cache=writeback(写性能最佳,ceph rbd开启缓存时必须使用此模式,并且rbd数据格式必须为raw)
对应的标志位既不是 O_DSYNC 也不是 O_DIRECT ,在writeback模式下,IO操作会经过host的页缓冲,存放在host页缓冲里的写操作会完整地通知给guest.除此之外,guest的虚拟存贮适配器会被告知有回写缓存(writeback cache),所以为了能够整体地管理数据,guest将会发送刷新缓存的指令.类似于带有RAM缓存的磁盘阵列(RAID)管理器.

cache=unsafe(数据不安全)
该模式与writeback差不多,不过从guest发出的刷新缓存指令将会被忽视掉,这意味着使用者将会以牺牲数据的完整性来换取性能的提升。

cache=directsync(新添加的模式,writethrough和none的结合)
该模式所对应的标志位是 O_DSYNC 和 O_DIRECT ,仅当数据被提交到了存储设备的时候,写操作才会被完整地通告,并且可以放心地绕过host的页缓存。就像writethrough模式,有时候不发送刷新缓存的指令时很有用的.该模式是最新添加的一种cache模式,使得缓存与直接访问的结合成为了可能.

推荐设置
ssd pool(ceph rbd)
image format: raw
hdd cache mode: Write back
sas pool(ceph fs)
image format: qcow2
hdd cache mode: Disabled / Write back
关闭系统的Swap
swapoff -a
注:物理机必须使用swap分区,虚拟机不要使用swap分区。修改/etc/fstab文件,注释掉SWAP的自动挂载,使用free -m确认swap已经关闭。

内核参数说明
overcommit_memory文件指定了内核针对内存分配的策略,其值可以是0、1、2。

0: 表示内核将检查是否有足够的可用内存供应用进程使用;如果有足够的可用内存,内存申请允许;否则,内存申请失败,并把错误返回给应用进程
1: 表示内核允许分配所有的物理内存,而不管当前的内存状态如何
2: 表示内核允许分配超过所有物理内存和交换空间总和的内存



(责任编辑:IT)
------分隔线----------------------------