大页HugePages对PostgreSQL的性能影响

0    113    1

Tags:

👉 本文共约2220个字,系统预计阅读时间或需9分钟。

简介

Linux kernel 提供了大量可以影响性能的配置参数。关键是针对你的应用程序和负载选择合适配置参数。像其他数据库一样,PostgreSQL 依赖于最优化的 Linux kernel。糟糕的配置参数会导致糟糕的性能。因此,重要的是:在每次调整配置参数之后都要对数据库做benchmark,来避免性能降低。

在我之前的博文中《Tune Linux Kernel Parameters For PostgreSQL Optimization》 https://www.percona.com/blog/2018/08/29/tune-linux-kernel-parameters-for-postgresql-optimization/

我描述了一些最有用的Linux kernel配置参数以及这些配置参数如何提高你的数据库性能的。本文将会分享打开 Linux 大页之后,不同的工作负载的 benchmark 结果。针对不同大小的负载和并发访问客户端,我做了大量的benchmark。

benchmark 机器配置

Linux Kernel 配置

我使用默认的操作系统配置,除了关掉了透明大页(Transparent HugePages)。透明大页是默认打开的,分配页的大小并不可控,对于数据库来说并不太推荐。通常,对于数据库来说,需要固定大小的大页,这个是透明大页所提供不了的。因此,通常推荐的是打开大页,并且要关闭透明大页。

PostgreSQL的配置

我使用固定的PostgreSQL配置来做benchmark,主要是为了获得不同的负载和不同的配置的大页的测试结果。PostgreSQL配置如下:

benchmark测试方法

做benchmark的时候,测试的方法是非常重要的。所有的 benchmark 都会运行三次,每次都会运行30分钟。我取这三次benchmark的中间值(去掉最低和最高,取中间)。我们使用 PostgreSQL 的benchmark工具 pgbench 来进行测试。pgbench 工作时使用了不同的比例因子 (scaling fatctor),每个比例因子大概使用16M的内存。

大页 (HugePages)

Linux中大页默认使用的页大小是4K。BSD系统有Super Pages,Windows有Large Pages。PostgreSQL 只支持Linux上提供的大页 (HugePages). 在内存使用率比较高的情况下,大页使用的页面大小太小会降低性能。通过设置大页,可以为应用程序指定内存,就可以降低分配内存和swap的操作开销,所以,可以通过使用大页来提高性能。

下面是使用1G大小的大页的配置。你可以通过从/proc获取这些信息。

对于大页更细节的信息,可以看之前的博客:

https://www.percona.com/blog/2018/08/29/tune-linux-kernel-parameters-for-postgresql-optimization/

通常,大页的大小是从2M到1G,因此(实际生产环境中)合理的配置是使用1G的大小而不是更小的2M页面大小。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复