W tym artykule Computer World określa, że PostgreSQL może być skalowany do limitu rdzenia 64. Czy to oznacza, że dla jednego wielordzeniowego procesora 64 rdzeni? A może wiele procesorów z mniejszą liczbą rdzeni?
Powodem, dla którego pytam, jest to, że staram się ustalić, do ilu procesorów PostgreSQL może być skalowane, ale oczywiście może to być ograniczone do rodzaju procesora. Znalazłem jednak inne statystyki w innych bazach danych (np. Microsoft SQL Server , który mówi, że może skalować do 320 procesorów logicznych) i nie określają ich liczby rdzeni. Czy to bardzo niejasna statystyka?
Wszelkie myśli będą mile widziane. Dzięki!
Odpowiedzi:
Nie, to bardzo dokładna statystyka. „Procesor logiczny” jest rdzeniem. Najważniejsze jest to, że nie ma znaczenia, w jaki sposób są one rozmieszczone na procesorach fizycznych.
A jeśli masz do czynienia z maszyną z większą liczbą rdzeni niż obsługiwana liczba, nie powinno to stanowić problemu w PostgreSQL. Każde połączenie jest z natury jednowątkowe *, więc niezależnie od liczby posiadanych rdzeni ograniczy wydajność i efektywność jednoczesnych połączeń.
Nie trzeba dodawać, że oznacza to również, że powinieneś wkładać pieniądze w szybsze rdzenie niż w liczbę rdzeni, chyba że chcesz skupić rzeczy w bardziej skomplikowany sposób.
* Aktualizacja 2017: Niektóre zapytania (lub podkwerendy) mogą być wykonywane równolegle .
źródło
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.
<- Zgadzam się z tym stwierdzeniem tylko wtedy, gdy liczba rdzeni jest większa niż liczba równoczesnych klientów, a liczba współbieżnych klientów raczej nie wzrośnie. Bardzo ważne jest, aby wydajność miała rdzeń dostępny dla każdego zaplecza Postgres ...Postgres może skalować się do dowolnej liczby procesorów, którą chcesz zainstalować, a Twój system operacyjny może efektywnie obsługiwać / zarządzać. Możesz zainstalować Postgres na maszynie 128-rdzeniowej (a nawet na maszynie ze 128 procesorami fizycznymi) i będzie działać dobrze. To może nawet lepiej niż na maszynie 64 rdzenia jeśli harmonogram OS może obsłużyć że wielu rdzeni.
Wykazano, że Postgres skaluje się liniowo do 64 rdzeni (z zastrzeżeniami: mówimy o wydajności odczytu, w określonej konfiguracji (dysk, pamięć RAM, system operacyjny itp.) - Robert Haas ma artykuł na blogu z ładnym wykresem który Przedstawiłem poniżej:
Co jest ważne w tym wykresie?
Zależność jest liniowa (lub prawie taka), o ile liczba klientów jest mniejsza lub równa liczbie rdzeni , a następnie zaczyna się to, co wydaje się być w przybliżeniu log-liniowy spadek wydajności, jak masz więcej połączeń klienckich niż ty wykonaj rdzenie, aby uruchomić backendy Postgres, ponieważ backend zaczyna walczyć o procesor (średnia obciążenie przekracza 1,0 itd.).
Chociaż było tylko wykazane dla maksymalnie 64 rdzeni, możesz uogólnić, że możesz nadal dodawać rdzenie (i klientów) i dalej zwiększać wydajność, aż do limitu niektórych innych podsystemów (dysk, pamięć, sieć), w których procesy już nie są problemy z rywalizacją z procesorem, ale zamiast tego czekają na coś innego.
( Haas ma również inny artykuł, w którym udowodniono skalowalność liniową do 32 rdzeni, która zawiera świetny materiał odniesienia na temat skalowalności w ogóle - wysoce zalecane czytanie w tle!)
źródło
Inni wyjaśnili, że procesor logiczny ogólnie odnosi się do rdzenia procesora, ale chcę skomentować stwierdzenie, że nie ma znaczenia, w jaki sposób rdzenie są rozmieszczone na procesorach.
Na kości procesora mogą znajdować się pamięci podręczne, które są współużytkowane przez rdzenie lub są dedykowane pojedynczym lub podgrupom rdzeni. Na przykład jedna wspólna konfiguracja to dedykowana pamięć podręczna L1 i wspólna pamięć podręczna L2. W tym przypadku skalowalność pojedynczego dwurdzeniowego procesora może różnić się od dwóch jednordzeniowych procesorów.
Skalowalność wpływa na pamięć główną, a maszyny NUMA wykazują inne zachowanie niż inne niż NUMA.
Zwracam na to uwagę tylko dlatego, że OP omawia pytania dotyczące skalowalności, których odpowiedzi są na ogół bardziej szczegółowe niż „program X może używać rdzeni procesora Y”.
źródło
W tym przypadku mają na myśli wiele procesorów z mniejszą liczbą rdzeni ... Część rozmowy jest przygotowana na przyszłość. Niektóre mówią marketingowo.
źródło