暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Linux大页与透明大页

IT那活儿 2021-12-05
3194

点击上方“IT那活儿”,关注后了解更多精彩内容!!!




前言




最近看着手头维护的数据库服务器,发现物理内存是越来越大,500G起步,TB也不在话下。都知道数据库是一种吃内存的软件,但是面对如此巨大的物理内存,如何高效的使用又成了一个话题,于是各家数据库软件厂商针对这个问题都引入了参数调优。

比如oracle的use_large_pages,mysql的large_pages,postgres的huge_pages等参数,都是用来告诉数据库是否使用大页模式的内存策略。




大页vs透明大页



这里有个关键词就是 大页(huge page),我们以postgres为例来查一下他们的文档解释:

其中有2段话比较重要,第一段就是说使用大页(huge page)能够缩小page tables,减少cpu在内存管理上的的系统开销,提高性能注意依赖于操作系统的大页配置情况。而第二段意思说在Linux/FreeBSD这类操作系统上还有一种自动的大页(huge page)管理策略称之为透明大页(transparent  huge page/ THP), 而THP经常会导致数据库性能下降,hang之类的,需要禁用这个THP策略。作为oracle老司机一看这个TPH就很懂,不管是MOS上的文档,还是处理过的案例都是一茬一茬的。如下:

由于THP引起大量的重启、以及性能问题 Oracle强烈建议客户关闭THP特性。

经过数据库的文档描述我们知道,数据库厂商都建议启用大页来提升性能,并且都强烈建议关闭透明大页以免引起各类故障。接下来我们就来深入了解一下这2个点:

大页(huge page/large page):

我们以rhel的文档为参考,如下:

文档主要描述linux大多数页为标准页4k,当内存较大时建议配置大页,降低开销之类的。

Linux内存采用段页式管理,这里我们不在深入探讨。物理内存会按照标准页(page)4k来进行划分,所有的4k页打包在一块就是page tables,比较简单。当物理内存为100G时 page tables=(100*1024*1024/4)。

由此可以确认page tables与物理内存成正比关系,随着物理内存的增长,page tables 则会越来越庞大不利于管理,损耗就会逐步上升。举个例子:当我们口袋里有1000块的1元时,钱包都炸裂了,可以想象这是多么恐怖的一件事。此时我们就需要使用50和100的单位了。这个单位就是具体的 huge page size,通常在linux中为2048k,也就是2M。当巨量的数据库内存使用2M 的大页时,产生的page tables则相对较小,page table的理开销则相对较小,从而提升系统性能。如下图:

实际数据库一般使用共享内存,大量的用户连接进程attach到一个巨大的共享内存段(page table)时,也会产生隐性开销,比如进程fork过慢导致数据库连接建立缓慢等等。搞清楚了大页原理,我们在设置数据库大页时则相对简单了,一般计算公式为:

大页数=共享内存(GB) *1024/2,当我们算出页量时,设置Linux 参数vm.nr_hugepages就可以了,如下:

图中我们使用计算器求出3G内存的页数,然后设置nr_hugepages使之生效,就是HugePages_Total,当然我们这里没有使用所以大页都是Free状态. 注意写入sysctl.conf中后可以永久生效。

透明大页(transparent huge page / THP)


老样子先查一下rhel的文档描述,如下:

主要描述由于上文的大页配置为手动模式,不是很灵活,于是内核又搞出了一个自动分配大页的技术,用来代替手动分配大页。以及THP主动性的分配连续大页内存以及频繁的page compact等可能会导致内存分配延迟,引发性能问题。

关闭也很简单,如下:

# echo never > /sys/kernel/mm/transparent_hugepage/enabled# 或者修改/etc/grub.conf 添加transparent_hugepage=neve





总结



最后我们总结一下,实际在数据库服务器上,巨大的共享内存段属于启动时的一次性分配,且大部分的启动操作都属于计划性的工作,不需要内核给我们动态分配,而数据库连接的那些server process往往内存较小也不需要用到大页,也就是Oracle强烈建议关闭THP的原因,本文就到此为止。


END


本 文 原 创 来 源:IT那活儿微信公众号(上海新炬王翦团队)

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论