PostgreSQL mở rộng tới 64 lõi?


10

Trong bài viết về Thế giới máy tính này , nó chỉ định rằng PostgreSQL có thể mở rộng đến giới hạn lõi là 64. Điều này có nghĩa đối với một bộ xử lý đa lõi gồm 64 lõi? Hoặc nhiều bộ xử lý với ít lõi hơn?

Lý do tại sao tôi hỏi là vì tôi đang cố gắng tìm xem PostgreQuery có thể mở rộng bao nhiêu bộ vi xử lý nhưng tất nhiên điều đó có thể giới hạn ở loại bộ xử lý. Tuy nhiên, tôi đã tìm thấy các số liệu thống kê khác trong các cơ sở dữ liệu khác (ví dụ: Microsoft SQL Server ở đây cho biết nó có thể mở rộng tới 320 bộ xử lý logic) và họ không chỉ định số lượng lõi của mình. Đây có phải là một thống kê rất mơ hồ?

Bất kỳ suy nghĩ sẽ được nhiều đánh giá cao. Cảm ơn!


1
PostgreQuery không quan tâm nếu đó là 8 CPU 8 lõi, 32 CPU 2 lõi hay bất cứ thứ gì. Nó chỉ quan tâm đến bộ xử lý logic. Ngoài ra, 64 lõi là gần đúng và phụ thuộc vào phần còn lại của phần cứng của bạn; 64 lõi sẽ không giúp ích gì cho bạn nếu bạn chỉ có 4GB RAM cho cơ sở dữ liệu 1TB trên ổ cứng SATA 7200 vòng / phút. Không có giới hạn kỹ thuật cứng đối với số lõi, chỉ là gần đây nó đã được kiểm tra và chứng minh có khả năng mở rộng lên đến 64.
Craig Ringer

Câu trả lời:


7

Không, đó là một thống kê rất chính xác. Một "bộ xử lý logic" là một lõi. Và cốt lõi chỉ là, nó không quan trọng bằng cách chúng lan truyền trên các bộ xử lý vật lý.

Và nếu bạn đang xử lý một máy có nhiều lõi hơn số được hỗ trợ, thì đây không phải là vấn đề với PostgreQuery. Mỗi kết nối vốn chỉmột luồng * vì vậy bất kể số lượng lõi bạn có là gì sẽ hạn chế hiệu quả và hiệu quả của các kết nối đồng thời.

Không cần phải nói điều này cũng có nghĩa là bạn nên đặt tiền của mình vào lõi nhanh hơn số lượng lõi trừ khi bạn muốn phân cụm mọi thứ theo một phương pháp phức tạp hơn.

* Cập nhật 2017: Một số truy vấn (hoặc truy vấn con) có thể được thực thi song song .


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.<- Tôi chỉ đồng ý với tuyên bố này nếu số lượng lõi lớn hơn số lượng khách hàng đồng thời và số lượng khách hàng đồng thời không có khả năng tăng. Hiệu suất khá quan trọng đối với hiệu suất để có sẵn lõi cho mỗi phụ trợ Postgres ...
voretaq7

@ voretaq7 Tôi hầu hết đồng ý nhưng một CPU có TPS cao hơn (rõ ràng) có thể xử lý nhiều giao dịch hơn trong một thời gian nhất định, do đó nhiều khách hàng hơn. Sẽ có một điểm ngọt phụ thuộc vào loại tải và ngân sách của bạn.
Oli

1
một quy trình logic là đơn vị thực thi logic nhỏ nhất, với các công nghệ hiện tại, nó không phải là cốt lõi, đó là một luồng.
dyasny

2
@ voretaq7: Không có gì lạ khi kết nối với postgresql thông qua một số cơ chế kết nối. Trong số những người khác, điều này được thực hiện bởi vì kết nối với postgresql tương đối tốn kém. Việc gộp chung có thể làm giảm số lượng kết nối đồng thời vào cơ sở dữ liệu. Vì vậy, tôi có xu hướng thích CPU nhanh hơn # lõi. Nhưng như mọi khi: nó phụ thuộc vào nhiều yếu tố ...
m.sr

2
@ m.sr Đồng ý - cơ chế tổng hợp kết nối là rất phổ biến. "Thông minh nhất" trong số này sẽ tạo ra một số kết nối tới Postgres và cân bằng giữa chúng (một trong những ứng dụng nội bộ của chúng tôi thực hiện bằng cách cung cấp cho mỗi tiến trình Apache kết nối riêng với Postgres - một ánh xạ khá thuận tiện cho trường hợp sử dụng của chúng tôi với phần phụ trợ hợp lý tỷ lệ người dùng). IMHO nếu nhóm kết nối của bạn đang thực hiện các truy vấn xếp hàng thay vì sinh ra các phụ trợ, điều đó không giúp ích gì cho bạn nhưng những ưu và nhược điểm của điều đó sẽ thú vị hơn khi nghiên cứu về Quản trị viên cơ sở dữ liệu . Thế là tôi hỏi!
voretaq7

12

Postgres có thể mở rộng tới bao nhiêu bộ xử lý mà bạn muốn cài đặt và HĐH của bạn có thể xử lý / quản lý hiệu quả. Bạn có thể cài đặt Postgres trên máy 128 lõi (hoặc thậm chí là máy có 128 bộ xử lý vật lý) và nó sẽ hoạt động tốt. Nó thậm chí có thể hoạt động tốt hơn trên máy 64 lõi nếu bộ lập lịch hệ điều hành có thể xử lý nhiều lõi đó.

Postgres đã được chứng minh để mở rộng quy mô tuyến tính lên tới 64 lõi (với hãy cẩn thận: Chúng ta đang nói về hiệu suất đọc, trong một cấu hình cụ thể (đĩa, RAM, hệ điều hành, vv) - Robert Haas có một bài viết blog với một đồ thị đẹp mà Tôi đã sao chép dưới đây:

nhập mô tả hình ảnh ở đây

Điều gì quan trọng về biểu đồ này?

Mối quan hệ là tuyến tính (hoặc gần như vậy) miễn là Số lượng khách hàng nhỏ hơn hoặc bằng Số lượng lõi , và sau đó bắt đầu giảm hiệu suất theo tuyến tính khi bạn có nhiều kết nối máy khách hơn bạn làm các lõi để chạy các phụ trợ Postgres vì ​​các phụ trợ bắt đầu chiến đấu cho CPU (tải trung bình vượt quá 1.0, v.v ...).

Mặc dù nó chỉ được chứng minh cho tối đa 64 lõi, nhưng bạn có thể khái quát rằng bạn có thể tiếp tục thêm lõi (và máy khách) và tiếp tục cải thiện hiệu suất, đến giới hạn của một số hệ thống con khác (đĩa, bộ nhớ, mạng) khi các quy trình không còn có vấn đề tranh chấp CPU nhưng thay vào đó đang chờ đợi một cái gì đó khác.

( Haas cũng có một bài viết khác, nơi họ đã chứng minh khả năng mở rộng tuyến tính tới 32 lõi , trong đó có một số tài liệu tham khảo tuyệt vời về khả năng mở rộng nói chung - đọc nền rất được khuyến khích!)


2
Ngẫu nhiên, lý do cho khả năng mở rộng tuyến tính này đã được đề cập trong câu trả lời của Oli : Postgres sử dụng một quy trình phụ trợ riêng cho mỗi kết nối máy khách. Kết quả là nếu bạn chỉ sử dụng một kết nối, bạn sẽ không thấy nhiều lợi ích (nếu có) cho nhiều lõi - bạn cần các yêu cầu song song để khai thác nhiều lõi.
voretaq7

2

Những người khác đã làm rõ rằng một bộ xử lý logic thường đề cập đến lõi CPU, nhưng tôi muốn bình luận về tuyên bố rằng nó không quan trọng như thế nào lõi được lan truyền trên CPU.

Bạn có thể có bộ nhớ cache trên CPU chết được chia sẻ giữa các lõi hoặc dành riêng cho các lõi đơn hoặc nhóm con. Ví dụ: một cấu hình phổ biến là bộ đệm L1 chuyên dụng và bộ đệm L2 được chia sẻ. Trong trường hợp này, khả năng mở rộng của CPU lõi kép đơn có thể khác với hai CPU lõi đơn.

Các khả năng mở rộng này ảnh hưởng đến việc tiếp tục vào bộ nhớ chính, với các máy NUMA thể hiện hành vi khác với không phải là NUMA.

Tôi chỉ nêu ra những điều này vì OP đang thảo luận các câu hỏi về khả năng mở rộng, câu trả lời của họ thường có nhiều sắc thái hơn "chương trình X có thể sử dụng lõi CPU Y".


1

Trong trường hợp này, chúng có nghĩa là nhiều bộ xử lý có ít lõi hơn ... Một số cuộc nói chuyện là bằng chứng trong tương lai. Một số là tiếp thị nói.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.