可以看出,KSM为系统提供了很多共享内存页,并且当前KSM运行标志(运行)设置为1. 当然,您看到的运行值也可能为0,因为RHEL 6.3中的两个服务ksm和ksmtuned将根据系统状态根据已建立的规则修改“ / sys / kernel / mm / ksm / run”文件. 用于调整KSM操作的值.
5.7KVM其他功能简介前面的部分介绍了KVM的一些重要且较大的功能. 本节介绍了几个较小但同样有用的功能,例如使用1GB大页面内存,透明大页面,AVX和XSAVE指令支持,AES新指令支持,充分展现了主机CPU的特性.

5.7.11GB大页面第4.3.3节介绍的大页面主要用于x86-64 CPU体系结构上的2MB大页面. 本节将介绍较大的1GB大页面,这两个页面的基本用法和原理相似. 通常,1GB的大页面与2MB的大页面相同,使用hubetlbfs(基于内存的特殊文件系统)直接利用硬件提供的大页面支持来创建共享或私有内存映射,从而减少了内存数量. 页表提高了TLB缓存的效率,从而提高了系统内存访问的性能. 借助英特尔EPT(或AMD NTP)技术,KVM客户端的内存访问性能将得到显着改善. 在KVM虚拟化环境中,客户端是qemu-kvm进程,Linux主机系统可以为qemu-kvm进程分配大页面,并且当客户端中的应用程序或库使用大页面时,可以提高性能. 客户端中的内存访问良好. 1GB和2MB大页面之间的差异主要是由于它们的内存页面大小不同,并且1GB大页面的分配只能在Linux系统的内核启动参数中指定,而2MB大页面可以由内核参数在以下位置配置: 启动,并且可以在系统运行时通过命令行操作进行配置.
以下是在KVM环境中使用1GB大页面的具体步骤.
1)检查对1GB大页面的硬件和内核配置支持,命令行如下:
英特尔的某些新服务器平台(例如Westmere,SandyBridge,IvyBridge等)支持1GB大页面,某些台式机平台可能不支持1GB大页面. 如以上命令所示,在Linux系统中,您可以检查/ proc / cpuinfo中是否存在“ pdpe1gb”标志,以确定硬件和内核是否支持1GB,以及/ proc / cpuinfo中是否具有2MB大页面标志“ Pse”. 在内核配置中,对大页面(1GB和2MB)的支持主要是检查与“ HUGETLB”有关的支持.
2)在主机的内核启动参数中配置1GB. 例如,启动时使用6个1GB大页面的grub配置文件如下:
在上述内核引导选项中,与大页面相关的几个选项如下:
hugepagesz表示HugeTLB内存页面的大小,在x86-64平台上为“ 2MB”或“ 1GB”.
hugepages指示启动时分配的大页面数.
default_hugepagesz表示未设置hugetlb文件系统时,默认情况下使用大页面的大小. 如果未设置此选项,则在x86-64平台上默认值为2MB.
对于这3个选项,需要注意两点:
heugepagesz×hugepages的值不得大于系统的物理内存.
“ hugepagesz”和“ hugepages”选项可以成对使用多次,从而允许系统同时保留多个不同大小的大页面(在x86-64上为2MB和1GB). 例如,“ hugepagesz = 1GB巨大页面= 6 default_hugepagesz = 1GB巨大页面= 2MB巨大页面= 512”选项表示启动时系统保留6个1GB巨大页面和512个2MB巨大页面的内存. 安装hubetlb时,默认大小为1GB页面.

3)启动主机后,检查主机中的内存信息和大页内存信息,命令行如下:
在以上输出信息中,启动主机后,/ proc / meminfo文件中的“ MemFree”和“ MemTotal”之差大于6GB,这意味着在系统处于运行状态时将保留6个1GB页面开始. 内存. / proc / meminfo中的“ Hugepagesize: 1048576 kB”表示大页面的大小为1GB,“ HugePages_Total: 6”表示总共有6个大页面,“ HugePages_Free: 6”表示有6个未使用的大页面, HugePages_Rsvd: “ 0”表示有0个大页面保留供其他程序使用. “ hugeadm”命令行工具是用于配置RHEL 6.3中“ libhugetlbfs-utils” RPM软件包提供的大页面资源池的工具. “ hugeadm--pool-list”命令显示系统当前大页面资源池的状态,如果使用前面提到的设置,在启动时同时保留2MB和1GB大页面,则以大页面为例使用“ hugeadm”工具查看的资源池状态为:
4)挂载Hugetlbfs文件系统,命令行如下:
如果使用两种大小的大页面,则在安装hubetlbfs文件系统时,可以通过“ pagesize”选项指定要安装hubgetlbfs的大页面的大小. 以下命令行指定使用2MB的大页面(而不是1GB):
5)使用qemu-kvm命令启动客户端. “ -mem-path”参数为其提供1GB大页面支持. 命令行操作如下:
使用1GB大页面时,作者发现启动客户端的内存不能超过“ -mem-path”(此处为6GB)指定的目录的1GB大页面数量,否则“不能”出现mmap RAM页面: “无法分配内存”错误消息,因此它不会为客户端提供对大页面的任何实际支持.
6)此时,再次检查主机中的内存状态,命令行如下:
从/ proc / meminfo中的“ HugePages_Free: 3”可以看出,只有三个1GB的大页面是可用的,这表明已将三个1GB的大页面分配给了客户端qemu-kvm进程. 从那时起,当客户端中的应用程序真正请求分配1GB的大页面时,主机可以帮助其在物理内存中分配1GB的大页面. (目前,由于支持大页面需要显式调用libhugetlb库函数,因此正式发布的应用程序中没有很多大页面可以使用. 根据作者的说法,可以配置诸如Oracle和Sybase之类的大型程序. 使用大页面. )
就像2MB的大页面一样,当使用1GB的大页面时,问题在于您需要在开始时保留大页面的内存(无法分配给普通的4KB页面),并且不能被交换到交换分区. 您不能使用膨胀功能来使用大页内存. 但是,当硬件,主机和客户端都支持1GB大页面时,在客户端中使用1GB大页面的应用程序在内存访问效率上的改善更为明显,这要好于2MB大页面. 简而言之,了解其优缺点后,对于要求高内存性能的应用程序,您可以选择在KVM中使用1GB大页面功能.
5.7.2在4.3.3和5.7.1中引入了透明大页面,使用大页面可以提高系统内存的效率和性能,但是大页有以下缺点:
1)大页面必须在使用前保留(1GB大页面只能在启动时分配).
2)应用程序代码必须显式使用大页面(通常调用libhugetlbfs API来分配大页面).
3)大页面必须驻留在物理内存中,并且不能交换到交换分区中.
4)挂载hubetlbfs文件系统需要超级用户权限.
5)如果保留了大页内存但未实际使用,则会浪费物理内存.
透明大页面(Transparent Hugepage)是要利用大页面的一些优点,但也避免了上述缺点. 透明大页面(THP)是Linux内核的功能,Redhat的工程师Andrea Arc也是如此
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-214106-2.html
想抢票都不行
不说别的也不说倒贴只是真心单纯希望四只越来越好嗯就这样越来越美