64 çekirdeğe kadar PostgreSQL ölçeklendirme?


10

Bu Bilgisayar Dünyası makalesinde , PostgreSQL'in 64 çekirdek sınırına kadar ölçeklendirilebileceğini belirtir. Bu, 64 çekirdekli bir çok çekirdekli işlemci için mi anlam ifade ediyor? Yoksa daha az çekirdekli birden fazla işlemci mi?

Sormamın nedeni, PostgreSQL'in ne kadar işlemciye kadar ölçeklenebileceğini bulmaya çalışmamın nedeni, ancak bu işlemcinin türüyle sınırlı olabilir. Ancak, diğer veritabanlarında (yani burada Microsoft SQL Server 320 mantıksal işlemcilere kadar ölçeklendirilebileceğini belirten) başka istatistikler buluyorum ve çekirdek sayısını belirtmiyorlar. Bu çok belirsiz bir istatistik mi?

Herhangi bir düşünce çok takdir edilecektir. Teşekkürler!


1
PostgreSQL, 8 8 çekirdekli CPU, 32 2 çekirdekli CPU veya başka bir şey olup olmadığını umursamıyor. Sadece mantıksal işlemcileri önemsiyor. Ayrıca, 64 çekirdek yaklaşıktır ve donanımınızın geri kalanına bağlıdır; 7200 rpm SATA sabit diskinde 1 TB veritabanı için yalnızca 4 GB RAM'iniz varsa 64 çekirdek size hiçbir faydası olmaz. Çekirdek sayılarla ilgili zor bir teknik sınır yoktur, sadece son zamanlarda 64'e kadar ölçeklendirildiği test edilmiş ve kanıtlanmıştır.
Craig Ringer

Yanıtlar:


7

Hayır, çok kesin bir istatistik. Bir "mantıksal işlemci" bir çekirdektir. Ve bir çekirdek sadece, fiziksel işlemcilere nasıl yayıldıkları önemli değil.

Ve desteklenen sayıdan daha fazla çekirdeğe sahip bir makine ile uğraşıyorsanız, bu PostgreSQL ile ilgili bir sorun olmamalıdır. Her bağlantı doğası gereği tek iş parçacıklıdır *, böylece sahip olduğunuz çekirdek sayısı ne olursa olsun, eşzamanlı bağlantıların verimliliğini ve etkinliğini sınırlandıracaktır.

Söylemeye gerek yok, aynı zamanda işleri daha karmaşık bir yöntemle kümelemek istemediğiniz sürece paranızı çekirdek miktarından daha hızlı çekirdeklere koymanız gerektiği anlamına gelir.

* 2017 Güncellemesi: Bazı sorgular (veya alt sorgular) paralel olarak yürütülebilir .


1
Needless to say this also means you should put your money in faster cores than quantity of cores unless you want to cluster things in a more complicated method.<- Bu ifadeyle yalnızca çekirdek sayısı eşzamanlı istemci sayısından fazla olduğunda ve eşzamanlı istemci sayısının artması düşükse kabul ediyorum. Performansın her Postgres arka uç için bir çekirdeğe sahip olması oldukça önemli ...
voretaq7

@ voretaq7 Çoğunlukla katılıyorum, ancak daha yüksek bir TPS'ye sahip bir CPU, belirli bir zamanda daha fazla işlemi, dolayısıyla daha fazla istemciyi işleyebilir. Yük türünüze ve bütçenize bağlı tatlı bir yer olacak.
Oli

1
mantıklı bir süreç, mevcut teknolojilerle en küçük mantıksal yürütme birimidir, bir çekirdek değil, bir iş parçacığıdır.
dyasny

2
@ voretaq7: Postgresql'e bazı bağlantı havuzu oluşturma mekanizması aracılığıyla bağlanmak nadir değildir. Diğerleri arasında bu yapılır, çünkü postgresql'e bağlanma nispeten pahalıdır. Havuzlama, veritabanına eşzamanlı bağlantı sayısını son derece azaltabilir. Bu yüzden çekirdek sayısı üzerinde hızlı CPU'ları tercih etme eğilimindeyim. Ama her zamanki gibi: birçok faktöre bağlıdır ...
m.sr

2
@ m.sr Kabul - bağlantı havuzu oluşturma mekanizmaları çok yaygındır. Bunların "en akıllısı", Postgres ile birkaç bağlantı kuracak ve aralarında denge kuracaktır (kurum içi uygulamalarımızdan biri, her Apache sürecine Postgres ile kendi bağlantısını vererek makul bir arka uca sahip kullanım durumumuz için oldukça uygun bir haritalama yapar. -kullanıcı oranı). IMHO, bağlantı havuzunuz sorgulama kuyruğu yapmaktan ziyade sorguları sıraya sokuyorsa, size bir iyilik yapmaz, ancak bunun artıları ve eksileri Veritabanı Yöneticilerini araştırmak daha ilginç olacaktır . Ben de sordum!
voretaq7

12

Postgres yüklemek istediğiniz kadar işlemciye kadar ölçeklendirilebilir ve işletim sisteminiz etkin bir şekilde işleyebilir / yönetebilir. Postgres'i 128 çekirdekli bir makineye (hatta 128 fiziksel işlemciye sahip bir makineye) kurabilirsiniz ve iyi çalışır. Bu olabilir OS zamanlayıcı birçok çekirdek işleyebilir eğer daha iyi bir 64 çekirdekli makinede daha çalışır.

Postgres'in 64 çekirdeğe kadar doğrusal olarak ölçeklendiği gösterilmiştir (uyarılarla: Belirli bir yapılandırmada (disk, RAM, OS, vb.) Okuma performansından bahsediyoruz - Robert Haas'ın güzel bir grafik içeren bir blog makalesi var. Aşağıda çoğalttım:

resim açıklamasını buraya girin

Bu grafik hakkında önemli olan nedir?

İlişki, İstemci Sayısı Çekirdek Sayısından daha az veya ona eşit olduğu sürece doğrusaldır (veya neredeyse böyle) ve daha sonra sizden daha fazla istemci bağlantınız olduğunda performansta kabaca bir log-lineer düşüş gibi görünen şeye başlar. Postgres arka uçlarını çalıştırmak için çekirdek yapın çünkü arka uçlar CPU için savaşmaya başlar (yük ortalaması 1.0'ın üzerine çıkar, vb ...).

Yalnızca 64 çekirdeğe kadar gösterilmiş olsa da, işlemlerin artık olmadığı başka bir alt sistemin (disk, bellek, ağ) sınırına kadar çekirdek (ve istemciler) eklemeye devam edebileceğinizi ve performansı artırmaya devam edebileceğinizi genelleştirebilirsiniz. CPU çekişme sorunları yaşıyor ama bunun yerine başka bir şey bekliyor.

( Haas ayrıca 32 çekirdeğe doğrusal ölçeklenebilirliği kanıtlayan başka bir makaleye sahiptir; bu da genel olarak ölçeklenebilirlik konusunda büyük referans materyaline sahiptir - şiddetle tavsiye edilen arka plan okuması!)


2
Bu arada, bu doğrusal ölçeklenebilirliğin nedeni Oli'nin cevabında belirtilmiştir : Postgres her istemci bağlantısı için ayrı bir arka uç işlemi kullanır. Sonuç olarak, yalnızca bir bağlantı kullanıyorsanız, birden fazla çekirdek için çok fazla fayda görmeyeceksiniz (eğer varsa) - birden fazla çekirdeği kullanmak için paralel isteklere ihtiyacınız vardır.
voretaq7

2

Diğerleri, mantıksal bir işlemcinin genellikle bir CPU çekirdeğine atıfta bulunduğunu açıkladı, ancak çekirdeklerin CPU'lara nasıl yayıldığının önemli olmadığı ifadesine yorum yapmak istiyorum.

CPU kalıbında çekirdekler arasında paylaşılan veya tek veya alt çekirdek gruplarına ayrılmış önbellekleriniz olabilir. Örneğin, bir ortak yapılandırma ayrılmış L1 önbelleği ve paylaşılan L2 önbelleğidir. Bu durumda, tek bir çift çekirdekli CPU'nun ölçeklenebilirliği iki tek çekirdekli CPU'dan farklı olabilir.

Bu ölçeklenebilirlik etkileri ana belleğe devam eder, NUMA makineleri NUMA olmayanlardan farklı davranış gösterir.

Bunları sadece OP'nin cevapları genellikle "program X Y CPU çekirdeklerini kullanabilir" den daha incelikli olan ölçeklenebilirlik sorularını tartıştığı için belirtiyorum.


1

Bu durumda, daha az çekirdeğe sahip çoklu işlemciler anlamına geliyor ... Konuşmanın bir kısmı geleceğe hazır. Bazıları pazarlama konuşur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.