ClickHouse đạt được khả năng mở rộng gần như tuyến tính trên bộ xử lý 288 nhân của Intel thông qua tối ưu hóa bộ nhớ

Nhóm Cộng đồng BigGo
ClickHouse đạt được khả năng mở rộng gần như tuyến tính trên bộ xử lý 288 nhân của Intel thông qua tối ưu hóa bộ nhớ

ClickHouse đã thành công trong việc tối ưu hóa công cụ cơ sở dữ liệu của mình để chạy hiệu quả trên các bộ xử lý có số lượng nhân cực cao mới nhất của Intel , bao gồm chip Sierra Forest 288 nhân. Thành tựu này giải quyết một trong những thách thức lớn nhất trong điện toán hiện đại: làm cho phần mềm mở rộng hiệu quả trên hàng trăm nhân CPU mà không gặp phải các nút thắt hiệu suất.

Công việc tối ưu hóa tập trung vào việc giải quyết các vấn đề mở rộng quan trọng xuất hiện khi cơ sở dữ liệu cố gắng sử dụng toàn bộ sức mạnh xử lý có sẵn trên những bộ xử lý khổng lồ này. Các phương pháp truyền thống thường thất bại vì chúng không được thiết kế cho sự song song cực đoan như vậy.

Phân bổ bộ nhớ trở thành nút thắt chính

Thách thức lớn nhất không phải là sức mạnh CPU mà là quản lý bộ nhớ. Khi hàng trăm nhân cố gắng phân bổ bộ nhớ đồng thời, bản thân bộ phân bổ bộ nhớ trở thành một tắc nghẽn giao thông. Các kỹ sư ClickHouse phát hiện ra rằng các quy trình phân bổ bộ nhớ tiêu chuẩn không thể theo kịp nhu cầu của hơn 200 nhân đều yêu cầu bộ nhớ cùng một lúc.

Giải pháp bao gồm việc triển khai các bộ phân bổ bộ nhớ cục bộ luồng tránh các cơ chế khóa gây ra độ trễ. Mỗi luồng xử lý có được pool bộ nhớ riêng của mình, loại bỏ nhu cầu các luồng phải chờ đợi để truy cập bộ nhớ. Chỉ riêng thay đổi này đã cải thiện hiệu suất 80% và giảm độ trễ luồng 90%.

Bộ phân bổ cục bộ luồng: Hệ thống quản lý bộ nhớ trong đó mỗi luồng xử lý có pool bộ nhớ chuyên dụng riêng, tránh xung đột giữa các luồng.

Kết quả tối ưu hóa ClickHouse

  • Hiệu suất phân bổ bộ nhớ: Cải thiện 80%
  • Giảm độ trễ luồng: Giảm 90%
  • Cải thiện tần số CPU: Tăng 40%
  • Khả năng mở rộng: Gần như tuyến tính trên 200+ lõi
  • Xử lý dữ liệu: Khả năng xử lý sự kiện người dùng theo thời gian thực

Chiến lược bộ xử lý hai hướng của Intel tạo ra sự đánh đổi

Intel đã chia các bộ xử lý máy chủ của họ thành hai danh mục riêng biệt. Các bộ xử lý Sierra Forest có số lượng nhân cao sử dụng các nhân hiệu quả (E-cores) có thể đóng gói nhiều nhân hơn vào cùng một không gian nhưng thiếu các tính năng nâng cao như hướng dẫn AVX-512 . Trong khi đó, các bộ xử lý Granite Rapids của họ sử dụng các nhân hiệu suất (P-cores) với hỗ trợ AVX-512 đầy đủ nhưng tổng số nhân ít hơn.

Điều này tạo ra một lựa chọn thú vị cho khối lượng công việc cơ sở dữ liệu. Đối với các tác vụ liên quan đến việc tải nhiều dữ liệu và xử lý cơ bản, 288 E-cores có thể vượt trội hơn các P-cores ít hơn nhưng mạnh mẽ hơn vì chúng dành ít thời gian chờ đợi dữ liệu hơn. Tuy nhiên, đối với các tác vụ nặng về tính toán, các P-cores với bộ hướng dẫn nâng cao của chúng vẫn thắng.

So sánh Bộ vi xử lý Máy chủ Intel

Loại Bộ vi xử lý Số lượng Nhân Loại Nhân Hỗ trợ AVX-512 Khối lượng công việc Mục tiêu
Sierra Forest Lên đến 288 E-cores (Hiệu suất) Không Xử lý I/O chuyên sâu, xử lý song song
Granite Rapids Ít nhân hơn P-cores (Hiệu năng) Xử lý tính toán chuyên sâu, hiệu năng đơn luồng

Những cải thiện hiệu suất thực tế làm ngạc nhiên cả các chuyên gia

Phản ứng của cộng đồng rất tích cực, với người dùng báo cáo kết quả ấn tượng trên các bộ dữ liệu nhiều terabyte. Một người dùng mô tả việc tải vài terabyte dữ liệu thị trường tài chính và có thể tổng hợp qua hàng tỷ bản ghi chỉ trong vài phút, thậm chí không cần thay đổi cài đặt hệ thống mặc định.

Thật tuyệt vời khi bạn có được cả lợi ích của kích thước nhỏ và truy vấn nhanh, với những điều chỉnh tối thiểu. Tôi không nghĩ tôi đã thay đổi bất kỳ cài đặt mặc định nào ở cấp hệ thống, nhưng tôi có thể tổng hợp qua toàn bộ vài tỷ ảnh chụp nhanh trong vài phút.

Các tối ưu hóa cũng có lợi cho các ứng dụng khác ngoài cơ sở dữ liệu. Các nhà nghiên cứu làm việc về giải trình tự DNA và các tác vụ chuyên sâu dữ liệu khác đang phát hiện ra rằng những bộ xử lý có số lượng nhân cực cao này có thể cạnh tranh với phần cứng GPU chuyên dụng cho một số khối lượng công việc nhất định, một khi phần mềm được tối ưu hóa đúng cách cho kiến trúc phần cứng.

Các Kỹ Thuật Tối Ưu Hóa Chính

  • Bộ cấp phát bộ nhớ theo luồng: Loại bỏ các nút thắt cổ chai trong việc cấp phát bộ nhớ
  • Tối ưu hóa lệnh SIMD: Sử dụng SSE4.2 cho các thao tác bảng băm
  • Ngăn chặn chia sẻ sai: Tối ưu hóa việc sử dụng cache line trên các lõi
  • Cấp phát nhận biết NUMA: Quản lý vị trí bộ nhớ cho các hệ thống đa socket
  • Cấu trúc dữ liệu không khóa: Giảm tranh chấp giữa các luồng xử lý
Đội ngũ ClickHouse ăn mừng việc tối ưu hóa thành công cho các bộ xử lý siêu nhiều lõi của Intel , thể hiện những cải thiện hiệu suất ngoài đời thực ấn tượng
Đội ngũ ClickHouse ăn mừng việc tối ưu hóa thành công cho các bộ xử lý siêu nhiều lõi của Intel , thể hiện những cải thiện hiệu suất ngoài đời thực ấn tượng

Hướng tới việc áp dụng chính thống

Mặc dù các bộ xử lý 288 nhân có thể nghe như quá mức cần thiết đối với hầu hết người dùng, các kỹ thuật tối ưu hóa được phát triển cho những hệ thống cực đoan này thường cũng có lợi cho các cấu hình nhỏ hơn. Các cải thiện phân bổ bộ nhớ và xử lý nhận biết NUMA giúp cải thiện hiệu suất ngay cả trên các hệ thống desktop với 16 hoặc 32 nhân.

Sự thành công của ClickHouse trên những bộ xử lý này chứng minh rằng phần mềm thực sự có thể mở rộng để phù hợp với những tiến bộ phần cứng, nhưng nó đòi hỏi sự suy nghĩ lại cơ bản về cách các ứng dụng quản lý tài nguyên. Khi những bộ xử lý có số lượng nhân cao này trở nên phổ biến hơn trong các trung tâm dữ liệu, hãy mong đợi thấy nhiều phần mềm hơn theo các con đường tối ưu hóa tương tự.

NUMA (Non-Uniform Memory Access): Một kiến trúc máy tính trong đó các nhân khác nhau có quyền truy cập nhanh hơn vào một số vị trí bộ nhớ so với các vị trí khác, đòi hỏi tối ưu hóa cẩn thận để có hiệu suất tốt nhất.

Tham khảo: Optimizing ClickHouse for Intel's ultra-high core event processors