您的位置:首页 > 运维架构 > Linux

Linux 关于Transparent Hugepages的介绍【转】

2017-04-18 17:39 375 查看
透明大页介绍

TransparentHugePages的一些官方介绍资料:

TransparentHugePages(THP)areenabledbydefaultinRHEL6forallapplications.ThekernelattemptstoallocatehugepageswheneverpossibleandanyLinuxprocesswillreceive2MBpagesifthemmapregionis2MBnaturallyaligned.Themainkerneladdressspaceitselfismappedwithhugepages,reducingTLBpressurefromkernelcode.ForgeneralinformationonHugepages,see:WhatareHugePagesandwhataretheadvantagesofusingthem?

Thekernelwillalwaysattempttosatisfyamemoryallocationusinghugepages.Ifnohugepagesareavailable(duetononavailabilityofphysicallycontinuousmemoryforexample)thekernelwillfallbacktotheregular4KBpages.THParealsoswappable(unlikehugetlbfs).Thisisachievedbybreakingthehugepagetosmaller4KBpages,whicharethenswappedoutnormally.

Buttousehugepageseffectively,thekernelmustfindphysicallycontinuousareasofmemorybigenoughtosatisfytherequest,andalsoproperlyaligned.Forthis,akhugepagedkernelthreadhasbeenadded.Thisthreadwilloccasionallyattempttosubstitutesmallerpagesbeingusedcurrentlywithahugepageallocation,thusmaximizingTHPusage.

Inuserland,nomodificationstotheapplicationsarenecessary(hencetransparent).Buttherearewaystooptimizeitsuse.Forapplicationsthatwanttousehugepages,useofposix_memalign()canalsohelpensurethatlargeallocationsarealignedtohugepage(2MB)boundaries.

Also,THPisonlyenabledforanonymousmemoryregions.Thereareplanstoaddsupportfortmpfsandpagecache.THPtunablesarefoundinthe/systreeunder/sys/kernel/mm/redhat_transparent_hugepage.

查看是否启用透明大页

1:命令cat/sys/kernel/mm/redhat_transparent_hugepage/enabled该命令适用于RedHatEnterpriseLinux系统

[code]
[code][root@getlnx06~]#more/etc/issue


RedHatEnterpriseLinuxServerrelease6.6(Santiago)


Kernel\ronan\m


[root@getlnx06~]#cat/sys/kernel/mm/redhat_transparent_hugepage/enabled


[always]madvisenever

[/code]
[/code]

2:命令cat/sys/kernel/mm/transparent_hugepage/enabled该命令适用于其它Linux系统


[code]
[code][root@getlnx06~]#cat/sys/kernel/mm/transparent_hugepage/enabled


alwaysmadvise[never]


[root@getlnx06~]#

[/code]
[/code]
使用命令查看时,如果输出结果为[always]表示透明大页启用了。[never]表示透明大页禁用、[madvise]表示

3:如何HugePages_Total返回0,也意味着透明大页禁用了


[code]
[code][root@getlnx06~]#grep-iHugePages_Total/proc/meminfo


HugePages_Total:0

[/code]
[/code]

4:cat/proc/sys/vm/nr_hugepages返回0也意味着透明大页禁用了。


[code]
[code][root@getlnx06~]#cat/proc/sys/vm/nr_hugepages


0

[/code]
[/code]

禁用、启用透明大页功能

方法1:设置/etc/grub.conf文件,在系统启动是禁用。


[code]
[code][root@getlnx06~]#vi/etc/grub.conf

#grub.confgeneratedbyanaconda

#

#Notethatyoudonothavetorerungrubaftermakingchangestothisfile

#NOTICE:Youhavea/bootpartition.Thismeansthat

#allkernelandinitrdpathsarerelativeto/boot/,eg.

#root(hd0,0)

#kernel/vmlinuz-versionroroot=/dev/mapper/VolGroup--LogVol0-LogVol01

#initrd/initrd-[generic-]version.img

#boot=/dev/sda

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

titleRedHatEnterpriseLinux6(2.6.32-504.el6.x86_64)

root(hd0,0)

kernel/vmlinuz-2.6.32-504.el6.x86_64roroot=/dev/mapper/VolGroup--LogVol0-LogVol01rd_NO_LUKSLANG=en_US.UTF-8rd_NO_MDSYSFONT=latarcyrheb-sun16crashkernel=autord_LVM_LV=VolGroup-LogVol0/LogVol01rd_LVM_LV=VolGroup-LogVol0/LogVol00KEYBOARDTYPE=pcKEYTABLE=usrd_NO_DMrhgbquiet

initrd/initramfs-2.6.32-504.el6.x86_64.img

transparent_hugepage=never

[/code]
[/code]




方法2:设置/etc/rc.local文件


[code]
[code][root@getlnx06~]#vi/etc/rc.local

#!/bin/sh

#

#Thisscriptwillbeexecuted*after*alltheotherinitscripts.

#Youcanputyourowninitializationstuffinhereifyoudon't

#wanttodothefullSysVstyleinitstuff.


touch/var/lock/subsys/local


iftest-f/sys/kernel/mm/redhat_transparent_hugepage/enabled;then

echonever>/sys/kernel/mm/redhat_transparent_hugepage/enabled

fi

[/code]
[/code]




使用上面的配置后必须重启操作系统才能生效,你也可以运行下面命令不用重启操作系统。

Youmustrebootyoursystemforthesettingtotakeeffect,orrunthefollowingtwoecholinestoproceedwiththeinstallwithoutrebooting:


[code]
[code][root@getlnx06~]#echonever>/sys/kernel/mm/redhat_transparent_hugepage/enabled

[root@getlnx06~]#cat/sys/kernel/mm/redhat_transparent_hugepage/enabled

alwaysmadvise[never]

[root@getlnx06~]#

[/code]
[/code]

小知识点:

1:从RedHat6,OEL6,SLES11andUEK2kernels开始,系统缺省会启用TransparentHugePages:用来提高内存管理的性能透明大页(TransparentHugePages)和之前版本中的大页功能上类似。主要的区别是:TransparentHugePages可以实时配置,不需要重启才能生效配置;

2:TransparentHugePages在32位的RHEL6中是不支持的。

TransparentHugePagesarenotavailableonthe32-bitversionofRHEL6.

3:ORACLE官方不建议我们使用RedHat6,OEL6,SLES11andUEK2kernels时的开启透明大页(TransparentHugePages),因为透明大页(TransparentHugePages)存在一些问题:

1.在RAC环境下透明大页(TransparentHugePages)会导致异常节点重启,和性能问题;

2.在单机环境中,透明大页(TransparentHugePages)也会导致一些异常的性能问题;

TransparentHugePagesmemoryisenabledbydefaultwithRedHatEnterpriseLinux6,SUSELinuxEnterpriseServer11,andOracleLinux6withearlierreleasesofOracleLinuxUnbreakableEnterpriseKernel2(UEK2)kernels.TransparentHugePagesmemoryisdisabledinlaterreleasesofOracleLinuxUEK2kernels.TransparentHugePagescancausememoryallocationdelaysduringruntime.Toavoidperformanceissues,OraclerecommendsthatyoudisableTransparentHugePagesonallOracleDatabaseservers.OraclerecommendsthatyouinsteadusestandardHugePagesforenhancedperformance.TransparentHugePagesmemorydiffersfromstandardHugePagesmemorybecausethekernelkhugepagedthreadallocatesmemorydynamicallyduringruntime.StandardHugePagesmemoryispre-allocatedatstartup,anddoesnotchangeduringruntime.

StartingwithRedHat6,OEL6,SLES11andUEK2kernels,TransparentHugePagesareimplementedandenabled(default)inanattempttoimprovethememorymanagement.TransparentHugePagesaresimilartotheHugePagesthathavebeenavailableinpreviousLinuxreleases.ThemaindifferenceisthattheTransparentHugePagesaresetupdynamicallyatruntimebythekhugepagedthreadinkernelwhiletheregularHugePageshadtobepreallocatedatthebootuptime.BecauseTransparentHugePagesareknowntocauseunexpectednoderebootsandperformanceproblemswithRAC,OraclestronglyadvisestodisabletheuseofTransparentHugePages.Inaddition,TransparentHugepagesmaycauseproblemseveninasingle-instancedatabaseenvironmentwithunexpectedperformanceproblemsordelays.Assuch,OraclerecommendsdisablingTransparentHugePagesonallDatabaseserversrunningOracle.

4:安装VerticaAnalyticDatabase时也必须关闭透明大页功能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: