首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >--Transparent Hugepages 为什么是众多数据库的

--Transparent Hugepages 为什么是众多数据库的

作者头像
AustinDatabases
发布2020-07-27 10:31:54
1.2K0
发布2020-07-27 10:31:54
举报
文章被收录于专栏:AustinDatabasesAustinDatabases

用过不少种类的数据库的人会遇到一个问题, 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的原因之一吧

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AustinDatabases 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档