web-dev-qa-db-ja.com

PostgreSQLは64コアまで拡張できますか?

この Computer Worldの記事 では、PostgreSQLが64のコア制限まで拡張できることを指定しています。これは、64コアの1つのマルチコアプロセッサを意味しますか?それともコアの少ないマルチプロセッサですか?

私が尋ねる理由は、PostgreSQLがスケールアップできるプロセッサの数を見つけようとしているためですが、もちろんそれはプロセッサのタイプに制限される可能性があります。ただし、他のデータベースで他の統計情報(つまり、Microsoft SQL Server ここ は320の論理プロセッサまで拡張できると述べている)を見つけており、コアの数を指定していません。これは非常にあいまいな統計ですか?

どんな考えでも大歓迎です。ありがとう!

10
O_O

いいえ、それは非常に正確な統計です。 「論理プロセッサ」はコアです。コアはそれだけです。物理プロセッサにどのように分散しているかは問題ではありません。

サポートされている数よりも多くのコアを持つマシンを扱っている場合、これはPostgreSQLの問題ではありません。各接続は 本質的にシングルスレッド *であるため、コアの数に関係なく、同時接続の効率と効率が制限されます。

言うまでもなく、これは、より複雑な方法で物事をクラスター化する場合を除き、コアの数よりも高速なコアにお金を投入する必要があることを意味します。

* 2017更新: 一部のクエリ(またはサブクエリ)が並列に実行される場合があります

7
Oli

Postgresは、インストールしたい数のプロセッサまで拡張でき、OSは効果的に処理/管理できます。 Postgresを128コアマシン(または128物理プロセッサを搭載したマシン)にインストールすれば、問題なく動作します。 OSスケジューラがその数のコアを処理できる場合、64コアマシンよりも動作する可能性があります

Postgresはscalelinearlyupであることが示されています64コアまで(注意:特定の構成(ディスク、RAM、OSなど)での読み取りパフォーマンスについて話している)- Robert Haasは、Niceグラフのブログ記事を掲載しています 以下を再現しました:

enter image description here

このグラフの何が重要ですか?

クライアントのコアの数以下である限り、関係は線形(またはそれに近い)です、その後、Postgresバックエンドを実行するコアよりも多くのクライアント接続があるため、バックエンドが競合を開始するため、パフォーマンスがほぼログリニア減少しているように見えますCPU(負荷平均が1.0を超えるなど)。

最大64コアでのみ実証されていますが、コア(およびクライアント)を追加し続け、他のサブシステムの限界までパフォーマンスを改善し続けることができると一般化できます。 (ディスク、メモリ、ネットワーク)プロセスでCPU競合の問題が発生しなくなったが、代わりに別のプロセスで待機している。

Haasはまた、32コアへの線形スケーラビリティを証明した別の記事もあります これは、一般的にスケーラビリティに関するいくつかの優れた参考資料を持っています-強くお勧めのバックグラウンドリーディング!)

12
voretaq7

他の人は、論理プロセッサは一般的にCPUコアを指すことを明らかにしましたが、コアがCPUにどのように分散されているかは問題ではないという声明についてコメントしたいと思います。

コア間で共有されるか、コアの単一またはサブグループ専用のキャッシュをCPUダイ上に置くことができます。たとえば、1つの一般的な構成は、専用L1キャッシュと共有L2キャッシュです。この場合、単一のデュアルコアCPUのスケーラビリティは、2つのシングルコアCPUとは異なる場合があります。

これらのスケーラビリティはメインメモリに継続的に影響し、NUMAマシンは非NUMAとは異なる動作を示します。

私がこれらを指摘しているのは、OPがスケーラビリティの質問について話し合っているからです。その答えは一般に、「プログラムXはY CPUコアを使用できる」よりも微妙です。

2
Tim B

この場合、それらはより少ないコアを持つ複数のプロセッサを意味します...話のいくつかは将来を見据えています。一部はマーケティングの話です。

1
ewwhite