这张图表有何重要意义?

这张图表有何重要意义?

在此《计算机世界》文章,它指定 PostgreSQL 可以扩展到 64 个核心限制。这是否意味着一个 64 核的多核处理器?还是多个核心较少的处理器?

我之所以问这个问题,是因为我想了解 PostgreSQL 可以扩展到多少处理器,但当然这可能受限于处理器的类型。不过,我在其他数据库(例如 Microsoft SQL Server)中找到了其他统计数据这里声明它可以扩展到 320 个逻辑处理器),并且他们没有指定其核心数量。这是一个非常模糊的统计数据吗?

任何想法都将不胜感激。谢谢!

答案1

不,这是一个非常精确的统计数据。“逻辑处理器”是一个核心。核心就是核心,它们如何分布在物理处理器上并不重要。

如果你使用的机器的核心数超过支持的数量,那么这对 PostgreSQL 来说应该不是问题。每个连接都是本质上是单线程的* 因此,无论您拥有多少个核心,都会限制并发连接的效率和功效。

不用说,这也意味着您应该把钱投入到更快的核心而不是核心数量上,除非您想采用更复杂的方法对事物进行聚类。

* 2017年更新:某些查询(或子查询)可以并行执行

答案2

Postgres 可以扩展到您想要安装的任意数量的处理器,并且您的操作系统可以有效处理/管理。您可以在 128 核机器(甚至是具有 128 个物理处理器的机器)上安装 Postgres,它将正常工作。它可能如果操作系统调度程序可以处理那么多核心,甚至比在 64 核机器上工作得更好。

Postgres 已被证明规模 线性地最多 64 个核心(需要注意:我们讨论的是特定配置(磁盘、RAM、操作系统等)下的读取性能——Robert Haas 有一篇博客文章,其中有一个漂亮的图表我将其复述如下:

在此处输入图片描述

这张图表有何重要意义?

只要客户数量小于或等于核心数然后开始看起来大致是对数线性的减少在性能上,因为您拥有的客户端连接数多于运行 Postgres 后端的核心数,因为后端开始争夺 CPU(平均负载超过 1.0,等等...)。

虽然它只是证明对于最多 64 个核心,您可以概括为可以继续添加核心(和客户端)并不断提高性能,直至达到其他子系统(磁盘、内存、网络)的限制,其中进程不再存在 CPU 争用问题,而是等待其他东西。

Haas 还在另一篇文章中证明了 32 核的线性可扩展性其中有一些关于可扩展性的很好的参考资料——强烈推荐的背景阅读!)

答案3

其他人已经澄清说,逻辑处理器通常是指 CPU 核心,但我想对以下说法进行评论:核心如何分布在 CPU 上并不重要。

CPU 芯片上的缓存可以在内核之间共享,也可以专用于单个或子内核组。例如,一种常见配置是专用 L1 缓存和共享 L2 缓存。在这种情况下,单个双核 CPU 的可扩展性可能与两个单核 CPU 不同。

这些可扩展性的影响会持续到主内存中,NUMA 机器表现出与非 NUMA 机器不同的行为。

我指出这些只是因为 OP 正在讨论可扩展性问题,其答案通常比“程序 X 可以使用 Y 个 CPU 核心”更微妙。

答案4

在这种情况下,它们指的是具有更少内核的多个处理器... 一些讨论是为了面向未来。一些讨论是营销用语。

相关内容