重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
Transparent Hugepages该如何理解,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
成都创新互联是创新、创意、研发型一体的综合型网站建设公司,自成立以来公司不断探索创新,始终坚持为客户提供满意周到的服务,在本地打下了良好的口碑,在过去的10年时间我们累计服务了上千家以及全国政企客户,如成都人造雾等企业单位,完善的项目管理流程,严格把控项目进度与质量监控加上过硬的技术实力获得客户的一致称扬。
用过不少种类的数据库的人会遇到一个问题, transparent Hugepages 在不少的数据库中都被提到 disabled, turn off . Why should we turn off the transparent hugepage ?
透明的巨型页面是 transparenet 的专用中文释义名词,对于LINUX kernel 来说 page, 页面相当于一个内存的unit, (其实对于数据库来说,大部分也是).默认来说是2048KB, 当然有的不是.
transparent Huge pages 允许为频繁频繁访问的数据保留相关的资源,打开他的确是可以提高系统的性能,保持数据滞留在linux 内存中.
在LINUX 中有一项建议(非数据库服务器), 设置3/8 以内的内存为transparenet huge page. 因为部分LINIUX的应用也不能使用transparenet huge page. 而在Linux内核中包括了 THP 的压缩功能,压缩的操作对资源是密集型的操作,对整体的系统性能是有影响的.
那么问题回到一个basement level , 为什么会有 HP THP, 这样的东西,大部分的应用程序和OS 运行在虚拟内存中,虚拟内存,虚拟内存就是物理内存的映射,相当于地址转换,CPU通过 cpu's memory management unit 简称mmu来访问, 自然MMU也有自己的cache 来缓存经常访问的页面.这个cache 叫, Translation lookside buffer(TLB), 但实际上CPU 访问的内存数量越来越多
后,会带来访问率或者叫命中率的降低, 那解决的方法有两种
1 提高 TLB 的大小 (这不容易,这是硬件的问题)
2 将每次寻址的单元扩大, 也就是以前一个页面 4KB,那我们将一个页面变为1MB ,这样访问的效率不就提升了. 所以就有了HP THP 这样的东西了.
那这样的问题就产生了新的问题,一次尽量访问更多的内存, 但内存也有碎片,也不见得一次是完整的连续的空间, 如果不能满足HP THP 的需求, 则系统会对页面进行换出, 压缩 这样一番下来,会出现一个名词叫 latency spikes , 会严重影响访问的时间和性能.
而为什么有些数据库要禁用掉THP ,主要的原因是这类数据库大部分访问内存的方式是分散的,并不是访问连续的页面,而这样的访问模式,就会造成内存的碎片化.访问的page 不也不是大量连续性的. 并且在不启用THP 时申请4KB的内存时,LINUX会分配相应的内存给应用, 但如果是在系统级别启用了THP,则类似数据库申请内存时,即使申请的值是4KB ,但分配是会以大于4KB例如 2MB 来进行分配,这样数据库申请使用内存的方式也会出现问题,和相关的损耗.
值得说明的是大部分数据库都会建议你关闭 THP , 包括 MySQL POSTGRESQL ORACLE 等数据库也是建议关闭THP.
但PostgreSQL 中有一个设置从PG9.4而来, Huge Page 并且有三个参数 ON OFF TRY,默认使用 try ,内核中有足够的大页面,PostgreSQL将尝试使用大页面,若没有就不使用它。强制使用巨大的页面,内核没有足够大的页面则PostgreSQL将无法启动。HugePages可以通过显著减少内存页表中的页表条目数量来提高系统性能,要让应用程序使用HugePages,需要显式指令。用这种方式更改应用程序有时可以,有时不行,需要在系统管理级别进行重新设计。因此,引入了透明巨页(THP)技术。如果启用,它可能会在应用程序实际上“不知道”的情况下为应用程序分配巨大的页面;因此,透明度。
猜测这也就是PG 为什么支持HP 而建议关闭THP的原因之一吧
关于Transparent Hugepages该如何理解问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。