Postgres 13基准测试:内存速度与TPS

2020-12-31 02:04:55

有些人沉迷于运动或汽车。我遵循计算机硬件。 PC行业将超频而不是亚硝酸盐,plexi机箱而不是铬和RGB照明用作转轮。

我喜欢的核心挑战是级联进行一些小的改进,以查看是否可以克服瓶颈。单个的改进通常只有几个百分点。当您将收益链接在一起时,收益百分比可能会增加。

今天,我正在将主测试系统上的内存速度从2133MHz更改为3200MHz,并测量其如何影响PostgreSQL SELECT结果。我看到这台服务器的收益为3%,但与往常一样,仅在一组狭窄的内存用例中使用数据库。预习:

PC游戏行业在微观和宏观层面进行了无数的性能测试。我今年提出的一个问题是如何从PC基准测试中获取一些有用的指标或测试方法,并将其甚至应用于虚拟数据库实例。

有一个很大的限制:我只能使用SQL。尽管我喜欢真正的硬件,但我们在Crunchy Data支持的许多客户都获得了虚拟数据库实例而不是专用服务器。对于PostgreSQL,我将其称为"端口5432"。之所以进行安装,是因为对服务器的唯一访问是与数据库标准端口号的连接。磁盘寻求测试?您无法在端口5432上运行ioio或iozone。内存速度?在5432上没有STREAM或Aida。您可以通过PostgreSQL的许多服务器端语言来隧道化系统调用。仅当将每个数据库容器中的软件缩小到最小可行安装量时,这才行得通。

我今年对pgbench-tools进行的改进使我可以全面了解客户端/大小工作负载的整个网格,而我的上一个博客则讨论了在此AMD Ryzen 9 3950X服务器上升级到PostgreSQL 13的问题。鉴于pgbench本身并不是最一致的基准,我今天在这里所做的部分工作向我自己证明了该工具包足以测量少量收益。

在许多服务器上安装调优内存是只有硬件供应商才能做到的事情。为了保证这一点,我最初的PG13比较以其平台默认速度:2133MHz保留了内存。我使用的G.SKILL F4-3600C19-16GVRB内存理论上可以在3600MHz下运行。

大多数台式机级主板具有4个RAM插槽,并且仅使用两个时,运行速度最快。实际上,这对G.SKILL对可以绑定到3600MHz的双通道。但是,当我尝试填充所有四个位置时,这种速度是不可能的。性能无法扩展到四通道;取而代之的是,您获得了双通道,每个通道都被分成两个DIMM。玩杂耍增加了足够的延迟,使得主板和CPU不再能够以最大的双通道速度运行。满载RAM,在此硬件上我能做的最好的就是以3200MHz运行内存。购买大型服务器有一个类似但更糟的权衡,因为处理大量RAM所需的缓冲会增加足够的延迟来降低单核结果。

用pgbench冲击服务器会产生足够的热量和随机条件,几年前我完全拒绝超频。我曾经失去了整个寒假,因为我每天都在基准服务器上追逐一次PG崩溃,这全都来自CPU过热,足以使它翻转一点。

上图显示了在所有测试的大小(最大256GB = 4X RAM)上速度的均匀增长,这是一个不错的开始。相反,查看客户数量会得出不同的模式:

有一个明显的趋势,那就是高数量的客户端比低数量的客户端受益更多。这正是您期望和希望的。更多的客户端意味着更大的压力来移动内存,而您可以做的任何加速操作都可以按比例分配帮助。

pgbench-tools将所有结果放入数据库中,因此我可以编写简单的SQL来分析工作负载网格:

为了使这些示例更清晰,在第一栏中,我将设置的标识符号替换为以MHz为单位的实际速度。 128个客户结果明显更好。在1个客户端上,运行时运行时的变异噪声大于回归,显示出奇怪的结果,即3000MHz内存工作的速度低于2133MHz。我可以通过运行更多测试直到平均值下降来解决类似问题。在这里似乎没有必要。我将在后续文章中更仔细地研究单个客户端的速度。

我还想看看任何测试运行的最大速率。平均值可以隐藏对分布的更改。您不能伪造合法运行速度超过以往任何时候的产品。仅考虑适合每个汇总单元的最佳运行时间,通常是scale = 100 1.6GB结果,得出:

由于提高内存速度会总体上增加2.8-3.2%的增益,具体取决于您对结果进行切片的方式,因此,我很高兴地称整个网格的固定增益为3%。 轻量级客户数量获得的收益最少,一位客户的收益低,仅为平均收益的1.3%。 当满载128个客户端时,平均吞吐量提高了5.9%。 如果您想阅读有关此主题的另一种观点,Puget Systems上有一篇不错的CPU性能文章:AMD Ryzen 9 3950X。 他们发现了与我在此处测量的结果类似的规模,并且他们对更大内存容量的评论与我上面的评论一致。