假设您有一台运行多个KVM客户端的基本服务器。 现在就磁盘I / Ocaching而言,似乎基本服务器会将I / Ocaching在其内存中,但是访客是否也会在内存池中caching相同的I / O呢? 如果是这样,如果磁盘内容被caching两次,这不会浪费内存吗? 如果是这种情况,那么调整这种行为的好方法是什么(例如,caching基本服务器的所有内容,或者从基础caching任何内容,并且仅仅从客户端caching)? 我能想到的唯一方法是为客户分配较less的内存,通常情况下,将guest虚拟机中的swappiness参数设置为0(所以进程内存不会被换出,而不是磁盘caching),所以没有在guest虚拟机中可用于caching的额外内存。 这会强制所有caching在基本服务器中发生。 或者,这是一个由KVM自动解决的问题吗?
是的,客人将使用他们的内存进行磁盘caching。 就像非虚拟系统一样。
pipe理程序上可能发生的高速caching取决于您用于guest虚拟机的磁盘接口的types以及您select的高速caching策略的types。 但是,无论您的select是什么,hypervisor上的caching都只能发生在guest虚拟机正在致力于虚拟驱动器而不是caching数据的数据上。
这就是为什么有额外的调音。 对于KVM客人,build议至less在客人和主机的deadline使用noop 。 客人的截止date有时可以产生更好的结果,这取决于IO模式。
还有其他的调音(dataplane,vhost-blk等),每种调音都有自己的优点和局限性。
旧的,但仍然有用: http : //pic.dhe.ibm.com/infocenter/lnxinfo/v3r0m0/index.jsp?topic=%2Fliaat%2Fliaatbpstorage.htm