KVM几种缓存模式
2013-10-07 21:07
274 查看
原文在这里:
http://pic.dhe.ibm.com/infocenter/lnxinfo/v3r0m0/index.jsp?topic=%2Fliaat%2Fliaatbpkvmguestcache.htm
kvm中host和guest可以各自维护自己的缓存,这导致内存中可以有两份缓存数据。这里说的host上的缓存是页缓存,guest上的缓存则是说guest机上的disk write cache。一般至少要保留这两种缓存的其中一种。在linux上,不通过页缓存进行读写使用O_DIRECT标识(buffer io vs direct io)。页缓存通过fsync将改动写入硬盘,大小是剩余可用物理内存,大小差别这么大。按照文章的描述,我感觉这里的disk write cache应该是一个块缓存,并非硬盘自带缓存。
RHEL6上,kvm/qemu支持以下缓存模式:
1.writethrough:默认缓存模式
page cache enable,
disk write cache disabled.重复读的性能可以,但是写入的性能可能会受影响。原文说:数据完整性有保障,不理解为何。
2.writeback
both enabled,尽管性能比较有保障,但是仍然怕突然断电,所以只能做临时方案,不推荐。
3.none
host cache disabled,guest cache enabled.这意味着对磁盘映像文件的访问是direct io,性能很好。如果虚拟机的disk write cache不怕停电(难道能搞得真想硬盘自带的缓存?),或者guest机有序地存储数据(fsync,或者文件系统级别上),数据完整性就有保障了。但是由于host上的page cache被关闭,重复读性能会下降(不过想想,guest上的系统应该也有page cache,其中的程序也会考虑缓存,这样应该不会有大问题)。
4.unsafe
不安全,安装guest机性能好,不能用于生产,具体这个策略怎么工作,原文没有言明。
本地硬盘推荐使用writethrough,因为性能可以接受,数据完整性有保证。NFS推荐用none,因为在nfs上O_DIRECT比O_SYNC快。
PS:感觉水有点深,不能完全理解,只能记下结论。原文中有提到stroage stack,可以搜到ppt:the kvm/qemu storage stack
http://www.linuxfoundation.jp/jp_uploads/JLS2009/jls09_hellwig.pdf
http://pic.dhe.ibm.com/infocenter/lnxinfo/v3r0m0/index.jsp?topic=%2Fliaat%2Fliaatbpkvmguestcache.htm
kvm中host和guest可以各自维护自己的缓存,这导致内存中可以有两份缓存数据。这里说的host上的缓存是页缓存,guest上的缓存则是说guest机上的disk write cache。一般至少要保留这两种缓存的其中一种。在linux上,不通过页缓存进行读写使用O_DIRECT标识(buffer io vs direct io)。页缓存通过fsync将改动写入硬盘,大小是剩余可用物理内存,大小差别这么大。按照文章的描述,我感觉这里的disk write cache应该是一个块缓存,并非硬盘自带缓存。
RHEL6上,kvm/qemu支持以下缓存模式:
1.writethrough:默认缓存模式
page cache enable,
disk write cache disabled.重复读的性能可以,但是写入的性能可能会受影响。原文说:数据完整性有保障,不理解为何。
2.writeback
both enabled,尽管性能比较有保障,但是仍然怕突然断电,所以只能做临时方案,不推荐。
3.none
host cache disabled,guest cache enabled.这意味着对磁盘映像文件的访问是direct io,性能很好。如果虚拟机的disk write cache不怕停电(难道能搞得真想硬盘自带的缓存?),或者guest机有序地存储数据(fsync,或者文件系统级别上),数据完整性就有保障了。但是由于host上的page cache被关闭,重复读性能会下降(不过想想,guest上的系统应该也有page cache,其中的程序也会考虑缓存,这样应该不会有大问题)。
4.unsafe
不安全,安装guest机性能好,不能用于生产,具体这个策略怎么工作,原文没有言明。
本地硬盘推荐使用writethrough,因为性能可以接受,数据完整性有保证。NFS推荐用none,因为在nfs上O_DIRECT比O_SYNC快。
PS:感觉水有点深,不能完全理解,只能记下结论。原文中有提到stroage stack,可以搜到ppt:the kvm/qemu storage stack
http://www.linuxfoundation.jp/jp_uploads/JLS2009/jls09_hellwig.pdf
相关文章推荐
- KVM几种缓存模式
- 微软BI 之SSIS 系列 - Lookup 组件的使用与它的几种缓存模式 - Full Cache, Partial Cache, NO Cache
- TimesTen 数据库复制学习:11. ASP带缓存组复制的几种固定架构模式
- TimesTen 数据库复制学习:12. Classic带缓存组复制的几种固定架构模式
- SSIS 系列 - Lookup 组件的使用与它的几种缓存模式 - Full Cache, Partial Cache, NO Cache
- 浅谈单例设计模式的几种实现方式
- [Android实例] Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式
- linux网卡bond的几种模式
- 几种常见的软件授权模式
- Oracle中清除游标缓存的几种方法
- SLF4J 的几种实际应用模式--之二:SLF4J+Logback(转载)
- iOS中常用的几种设计模式
- 单例模式java中的几种写法和确保多线程下安全
- Qemu-kvm的网络模式
- C# 字符串中判断存在的几种模式和效率(string.contains、string.IndexOf、Regex.Match)
- [Android实例] Handler+ExecutorService(线程池)+MessageQueue模式+缓存模式
- ESB的几种模式
- web项目不用现有缓存技术,应用单例模式,将字典等内容放到服务器缓存
- Spring客户端对Redis 缓存的使用(Java客户端等Redis3.X RedisCluster模式的支持)
- MYSQL复制的几种模式