Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1356197
  • 博文数量: 145
  • 博客积分: 1440
  • 博客等级: 少尉
  • 技术积分: 2986
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-24 23:47
个人简介

我一直在走,至少还有条路,也好于无路可走…

文章分类

全部博文(145)

文章存档

2023年(1)

2017年(2)

2016年(5)

2015年(13)

2014年(13)

2013年(70)

2012年(41)

分类: LINUX

2014-03-09 12:50:41


      大页(Huge Page

X86( 包括x86-32x86-64)j架构的cpu默认使用4k大小的内存页面,但是它们也支持较大的内存页,如:x86-64系统就支持2MB大小的大页(huge page),linux2.6以及以上内核都支持huge page 。如果在系统中使用了huge page ,则内存页的数量就是减少,从而要更少的页表,节约了页表所占用的内存数量,并且所需的地址转换,也减少了,TLB缓存失效的次数就减少了,从而提高了内存访问的性能,另外,由于地址转换所需的信息,一般保存在cpu的缓存中,huge page 的使用让地址转换信息减少,从而减少了cpu缓存的使用,减轻了cpu缓存的压力,让cpu缓存能更多地用于应用程序的数据缓存,也能够在整体上提示系统的性能。

kvm中,也可以将huge page 的特性应用到客户机中,qemu-kvm 就提供了“-mem-path FILE” 参数选项用于使用huge page 。另外,还有一个参数“-mem-prealloc” 可以让宿主机在启动客户机时就全部分配好客户机的内存,而不是在客户机实际上用到的更多内存时才按需分配。-mem-prealloc 必须在有“-mem-path” 参数时才能使用。

优点:提前分配好内存的好处是客户机的内存访问速度更快

缺点:客户机启动时就得到了所有内存,从而让宿主机的内存很快减少(而不是根据客户机的需求而动态调整内存配置)

可以通过宿主机的如下几个操作让客户使用huge page 

1.检查宿主机目前状态,检查默认内存大小,和内存使用情况

[root@localhost Desktop]# getconf PAGESIZE

[root@localhost Desktop]#  cat /proc/meminfo   

2.挂载hugetlbfs文件系统,命令为“mount  -t hugetlbfs hugetlbfs  /dev/hugepages

[root@localhost Desktop]# mount  -t hugetlbfs hugetlbfs  /dev/hugepages

[root@localhost Desktop]# mount  

 

3.设置hugepage 的数量,命令为“sysctl vm.nr_hugepages=1024#注释:尽量给大点太小报错

[root@localhost Desktop]# sysctl vm.nr_hugepages=1024

[root@localhost Desktop]# cat /proc/meminfo # 查看是否生效

 

4.启动客户机让其使用hugepage 的内存,使用“-mem-path”参数

 

 [root@localhost Desktop]#  qemu-system-x86_64 -m 512 -smp 1 /kvm/rhel6u3.img -mem-path /dev/hugepages/

 

Free内存在随着客户机的启动而减小

Libvirt 大页(Huge Page

 

libvirt方式,先让libvirtd进程使用hugepages空间,然后再分配给虚拟机

[root@localhost ~]# mkdir  /dev/hpages            #创建挂载大页的目录

[root@localhost ~]# mount -t hugetlbfs hugetlbfs /dev/hpages/ #挂载大页

[root@localhost ~]# mount |grep -i huge            #查看挂载情况


[root@localhost dev]# cat /proc/meminfo |grep -i hugepages

 


  

[root@localhost Desktop]# sysctl vm.nr_hugepages=1024  

 

安装libvirt 

[root@localhost hpages]# yum install libvirt 

[root@localhost hpages]# service libvirtd  restart #启动libvirtd 

[root@localhost hpages]# cd /dev/hpages/

[root@localhost hpages]# ls

启动虚拟机,使用大页

[root@localhost ~]# qemu-system-x86_64  -m 512 /kvm/rhel6u3.img -mem-path /dev/hpages/

[root@localhost hpages]# cat /proc/meminfo |grep -i hugepages #free内存慢慢减少

 


阅读(8894) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~