每个进程都有自己的虚拟内存,需要对应到物理内存,这种映射关系被缓存在一个硬件中,这个硬件就是TLB(旁路转换缓冲),它是CPU缓存。
通过TLB,使用大页可以提高CPU的命中率, 所以如果guestos使用大内存或者内存负载比较重的情况下,通过配置透明大页(transparent large page, TLP)可以显著提高性能。
在RHEL里,大页的大小可以是2M,1G.默认情况下,已经开启了透明大页功能:
默认情况下,大页的数目为0,通过下面的方式可以查看到:
或者:
设置系统的大页数量:
让其重启系统之后也能继续生效:
此时系统有2000个可用大页。
挂载大页:
重启libvirtd
可以看到,默认情况下即使虚拟机正常运行也是不会使用大页的。
如果想让哪个guest os使用大页来提高性能的话,那么在关闭虚拟机的情况下,编辑这个虚拟机的配置文件,添加如下内容:
从上图也可以看到vm1的内存大小为1G。
开启虚拟机看结果:
消耗了520个大页,每个大页默认大小为2M,正好是vm1所有的内存。
如果关闭vm1的话,所有大页将被释放: