在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

PostgreSQL如何开启Huge Page场景

146次阅读
没有评论

共计 2163 个字符,预计需要花费 6 分钟才能阅读完成。

丸趣 TV 小编给大家分享一下 PostgreSQL 如何开启 Huge Page 场景,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

1. 大规格 PG 实例内存使用率较高分析

为了保证物理内存能得到充分的利用,避免内存空间浪费,Linux 把进程当前使用的内存部分加载到物理内存里,而不使用的部分则暂不加载。PostMaster 进程注册共享内存时,系统只是分配一个虚拟的地址空间,并不直接分配物理内存。当有实际的内存访问时,CPU 才会将虚拟地址映射到物理内存的一个地址上。维护这个映射关系的就是 PageTable,它负责将虚拟内存地址转换成物理内存地址。

Linux 的内存管理采取的是分页存取机制:把较大的物理内存分为了一个个固定大小(4kB)的内存页进行管理。每块内存页通过 PageTable 中的一个元组来维护虚拟 / 物理内存之间的映射。CPU 为了提高虚拟 / 物理内存之间的转换效率,也会在 TLB 中缓存一定量的 Page Table 元组。

对于 PostgreSQL 这种多进程架构程序来说,当服务端使用的共享内存较大,且并发连接数较多时,由于操作系统对于每个进程都要维护单独的内存映射,PageTable 中的元组数目将会变得非常多,所占用的内存大小也会特别大。

2. Huge Page 改善措施

Linux 为了应对这种场景,降低多进程下 PageTable 的内存消耗。自从 2.6 及以上内核版本提供了内存页大小为 2MB 的管理方式,称为 Huge Page。如果使用 Huge Page 的话,相同物理内存使用量的情况下内存页的数目变少,减少了 PageTable 元组的条目个数,从而降低了系统的内存占用。

作为世界上最先进的开源数据库,PostgreSQL 也适配了 Linux 的 Huge Page 特性,服务端在注册共享内存时,会通过配置参数 huge_pages 来决定是否申请大页内存。

postgresql.conf:
 huge_pages = on --  注册共享内存时必须使用大页
 huge_pages = try --  注册共享内存时首先考虑大页,若系统提供的大页内存不足时,则全部使用普通页
 huge_pages = off --  注册共享内存时不使用大页 

真实应用场景:某 PG 用户将实例(shared_buffers = 64GB)部署在一台内存为 256GB 的 ECS 上,业务繁忙时 ECS 内存使用率为 85%,PageTable 占用内存 120GB。而开启 Huge Page 后相同业务场景的内存使用率降低到 50% 以下,PageTable 大小仅 300M!

3. PG 实例开启 Huge Page 操作步骤

(1)查看操作系统的 Huge Page 大小 grep Hugepage /proc/meminfo

(2)估算 PostgreSQL 实例需要的 Huge Page 使用量:128GB/2MB * 1.2 = 78643

(3)/etc/sysctl.conf 中添加:vm.nr_hugepages = 78643

(4)重新加载系统配置参数:sysctl –p

(5)确认是否配置成功。可以看到 Huge Page 总数为 78643

(6)确认 PG 配置文件打开 huge_pages

(7)启动 PostgreSQL 服务端,可以看到系统中的空闲 Huge Page 已经减少,部分大页已经被共享内存使用。

4. Huge Page 使用建议

虽然 Huge Page 在一定场景下可以改善服务端内存使用过高的情况,但不是鼓励所有的 PG 实例都使用大页,盲目的开启 Huge Page 可能引起服务端的性能下降。下面我们根据 Huge Page 的优缺点来分析下使用场景。

Huge Page 优势:

(1)CPU 的 TLB 可以缓存的物理地址空间更大,从而提升 TLB 的命中率,降低 CPU 负载;

(2)Huge Page 使用的内存是不可交换(swap)的,没有内存空间换入 / 换出的开销;

(3)极大的减少了系统维护 PageTable 的内存开销。

Huge Page 劣势:

(1)Huge Page 使用的内存需要预先分配;

(2)Huge Page 使用固定大小的内存区域,不会被释放;

(3)对于写密集型的场景,Huge Page 会加大 Cache 写冲突的发生概率。

所以强烈推荐 PG 实例开启 Huge Page 的场景:共享内存使用较大(=8GB)且连接数较多(= 500),并且热点数据分散。不推荐 PG 实例开启 Huge Page 的场景:写业务密集,热点数据集中且内存使用较小。

5.PG 开启 Huge Page 时的注意事项

(1)当配置参数 huge_pages 设置为 on 时,若 PG 启动时需要注册的共享内存大于操作系统提供的 Huge Page 大小时,数据库将无法启动。推荐将 huge_pages 参数设置为 try,在此种场景下,PostMaster 将会改为申请普通内存。

(2)修改 shared_buffers/wal_buffers 等共享内存相关的 GUC 参数时,需要重新计算操作系统所需的 Huge Page 数,以防服务端无法启动或者部分大页内存没有被使用且无法释放而造成浪费。

以上是“PostgreSQL 如何开启 Huge Page 场景”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-17发表,共计2163字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 国产一区视频在线 | 亚洲欧美综合精品成 | 风流老熟女一区二区三区 | 精品久久人妻av中文字幕 | 精品人妻av区波多野结衣 | 中文字幕av无码一二三区电影 | 亚洲热视频| 国产午夜人做人免费视频 | 影音先锋久久久久av综合网成人 | 国产精品 无码专区 | 香蕉视频一区二区三区 | a天堂一码二码专区 | 四虎免费播放观看在线视频 | 伊伊人成亚洲综合人网香 | 99久久亚洲精品影院 | 亚洲综合色一区二区三区小说 | 国产chinese视频在线观看 | 亚洲色图另类小说 | 久久久亚洲精华液精华液精华液 | 四虎网站在线观看 | 十级毛片| 综合色天天| 国产一级成人毛片 | 人妻综合专区第一页 | 欧美一级看片a免费视频 | 亚洲精品久久久久久久久久吃药 | 伊人成色综合网 | 亚洲va无码专区国产乱码 | 国产的一级毛片完整 | 欧美粗大猛烈老熟妇 | 国产综合成人久久大片91 | 真实国产乱子伦对白视频 | 射射射综合网 | 亚洲精品永久在线观看 | 狠狠狠狠狠狠狠狠 | 亚洲精品乱码久久久久久中文字幕 | 精品国产欧美一区二区三区成人 | 国内精品久久久久尤物 | 女人zzzooooxxxx| 99国精品午夜福利视频不卡 | 嫒呦碧呦交91网站 |