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]
2:命令cat/sys/kernel/mm/transparent_hugepage/enabled该命令适用于其它Linux系统
[/code]
[/code]
使用命令查看时,如果输出结果为[always]表示透明大页启用了。[never]表示透明大页禁用、[madvise]表示
3:如何HugePages_Total返回0,也意味着透明大页禁用了
[/code]
[/code]
4:cat/proc/sys/vm/nr_hugepages返回0也意味着透明大页禁用了。
[/code]
[/code]
禁用、启用透明大页功能
方法1:设置/etc/grub.conf文件,在系统启动是禁用。
[/code]
[/code]
方法2:设置/etc/rc.local文件
[/code]
[/code]
使用上面的配置后必须重启操作系统才能生效,你也可以运行下面命令不用重启操作系统。
Youmustrebootyoursystemforthesettingtotakeeffect,orrunthefollowingtwoecholinestoproceedwiththeinstallwithoutrebooting:
[/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时也必须关闭透明大页功能。
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时也必须关闭透明大页功能。
相关文章推荐
- Linux 关于Transparent Hugepages的介绍
- Linux 关于Transparent Hugepages的介绍
- Linux 关于Transparent Hugepages的介绍
- How to use, monitor, and disable transparent hugepages in Red Hat Enterprise Linux 6
- Linux 6 Transparent Huge Pages and Hadoop Workloads
- Linux传统Huge Pages与Transparent Huge Pages再次学习总结
- Linux HugePages
- Linux发行版知识:关于PCLinuxOS的介绍
- 关于 Linux 下的 chroot 的些许介绍
- 关于Linux Grep命令使用的详细介绍
- 关于Linux Grep命令使用的详细介绍
- Linux发行版知识:关于Gentoo的详细介绍
- Linux发行版知识:关于Mandriva的详细介绍
- Linux发行版知识:关于openSUSE的详细介绍
- 关于Linux下.so的介绍和编写过程
- 关于Linux Grep命令使用的详细介绍
- Linux发行版知识:关于Knoppix的详细介绍
- 一个关于linux安装oracle介绍的网址
- Linux发行版知识:关于Fedora的详细介绍
- Linux发行版知识:关于Ubuntu的详细介绍