ClickHouse Mencapai Penskalaan Hampir Linear pada Prosesor 288-Core Intel Melalui Optimasi Memori

Tim Komunitas BigGo
ClickHouse Mencapai Penskalaan Hampir Linear pada Prosesor 288-Core Intel Melalui Optimasi Memori

ClickHouse telah berhasil mengoptimalkan mesin basis datanya untuk berjalan secara efisien pada prosesor terbaru Intel dengan jumlah core ultra-tinggi, termasuk chip Sierra Forest 288-core. Pencapaian ini mengatasi salah satu tantangan terbesar dalam komputasi modern: membuat perangkat lunak dapat diskalakan secara efektif di ratusan core CPU tanpa mengalami hambatan kinerja.

Pekerjaan optimasi ini berfokus pada penyelesaian masalah penskalaan kritis yang muncul ketika basis data mencoba menggunakan semua daya pemrosesan yang tersedia pada prosesor besar ini. Pendekatan tradisional sering gagal karena tidak dirancang untuk paralelisme yang ekstrem seperti ini.

Alokasi Memori Menjadi Hambatan Utama

Tantangan terbesar bukanlah daya CPU melainkan manajemen memori. Ketika ratusan core mencoba mengalokasikan memori secara bersamaan, pengalokasi memori itu sendiri menjadi kemacetan lalu lintas. Para insinyur ClickHouse menemukan bahwa rutinitas alokasi memori standar tidak dapat mengimbangi permintaan dari 200+ core yang semuanya meminta memori pada waktu yang bersamaan.

Solusinya melibatkan implementasi pengalokasi memori thread-local yang menghindari mekanisme penguncian yang menyebabkan penundaan. Setiap thread pemrosesan mendapat pool memori sendiri, menghilangkan kebutuhan thread untuk menunggu dalam antrian untuk akses memori. Perubahan ini saja meningkatkan kinerja sebesar 80% dan mengurangi penundaan thread sebesar 90%.

Pengalokasi thread-local: Sistem manajemen memori di mana setiap thread pemrosesan memiliki pool memori khusus sendiri, menghindari konflik antar thread.

Hasil Optimasi ClickHouse

  • Performa alokasi memori: Peningkatan 80%
  • Pengurangan latensi thread: Penurunan 90%
  • Peningkatan frekuensi CPU: Peningkatan 40%
  • Kemampuan scaling: Hampir linear di lebih dari 200 core
  • Pemrosesan data: Kemampuan pemrosesan event pengguna secara real-time

Strategi Dua Jalur Prosesor Intel Menciptakan Trade-off

Intel telah membagi prosesor server mereka menjadi dua kategori yang berbeda. Prosesor Sierra Forest dengan jumlah core tinggi menggunakan efficiency core (E-core) yang mengemas lebih banyak core dalam ruang yang sama tetapi tidak memiliki fitur canggih seperti instruksi AVX-512. Sementara itu, prosesor Granite Rapids mereka menggunakan performance core (P-core) dengan dukungan AVX-512 penuh tetapi dengan total core yang lebih sedikit.

Ini menciptakan pilihan yang menarik untuk beban kerja basis data. Untuk tugas yang melibatkan banyak pemuatan data dan pemrosesan dasar, 288 E-core dapat mengungguli P-core yang lebih sedikit namun lebih kuat karena mereka menghabiskan lebih sedikit waktu menunggu data. Namun, untuk tugas yang berat komputasi, P-core dengan set instruksi canggih mereka masih menang.

Perbandingan Prosesor Server Intel

Jenis Prosesor Jumlah Core Jenis Core Dukungan AVX-512 Target Beban Kerja
Sierra Forest Hingga 288 E-cores (Efisiensi) Tidak Intensif I/O, pemrosesan paralel
Granite Rapids Core lebih sedikit P-cores (Performa) Ya Intensif komputasi, performa single-thread

Peningkatan Kinerja Dunia Nyata Mengejutkan Bahkan Para Ahli

Respons komunitas sangat positif, dengan pengguna melaporkan hasil yang mengesankan pada dataset multi-terabyte. Satu pengguna menggambarkan memuat beberapa terabyte data pasar keuangan dan dapat melakukan agregasi melalui miliaran catatan hanya dalam hitungan menit, bahkan tanpa mengubah pengaturan sistem default.

Sungguh menakjubkan bagaimana Anda mendapatkan manfaat dari ukuran kecil dan kueri cepat, dengan penyesuaian minimal. Saya rasa saya tidak mengubah default tingkat sistem apa pun, namun saya dapat melakukan agregasi melalui seluruh beberapa miliar snapshot dalam beberapa menit.

Optimasi ini juga menguntungkan aplikasi lain di luar basis data. Peneliti yang bekerja pada sekuensing DNA dan tugas intensif data lainnya menemukan bahwa prosesor ultra-high core ini dapat bersaing dengan perangkat keras GPU khusus untuk beban kerja tertentu, setelah perangkat lunak dioptimalkan dengan benar untuk arsitektur perangkat keras.

Teknik Optimasi Utama

  • Alokator memori thread-local: Menghilangkan hambatan alokasi memori
  • Optimasi instruksi SIMD: Menggunakan SSE4.2 untuk operasi hash table
  • Pencegahan false sharing: Mengoptimalkan penggunaan cache line di seluruh core
  • Alokasi yang sadar NUMA: Mengelola penempatan memori untuk sistem multi-socket
  • Struktur data lock-free: Mengurangi kontention antar thread pemrosesan
Tim ClickHouse merayakan keberhasilan optimisasi mereka untuk prosesor Intel dengan core ultra-tinggi, menampilkan peningkatan performa dunia nyata yang mengesankan
Tim ClickHouse merayakan keberhasilan optimisasi mereka untuk prosesor Intel dengan core ultra-tinggi, menampilkan peningkatan performa dunia nyata yang mengesankan

Melihat ke Depan untuk Adopsi Mainstream

Meskipun prosesor 288-core mungkin terdengar berlebihan untuk sebagian besar pengguna, teknik optimasi yang dikembangkan untuk sistem ekstrem ini sering menguntungkan konfigurasi yang lebih kecil juga. Peningkatan alokasi memori dan pemrosesan yang sadar NUMA membantu kinerja bahkan pada sistem desktop dengan 16 atau 32 core.

Keberhasilan ClickHouse pada prosesor ini menunjukkan bahwa perangkat lunak memang dapat diskalakan untuk menyesuaikan kemajuan perangkat keras, tetapi memerlukan pemikiran ulang fundamental tentang bagaimana aplikasi mengelola sumber daya. Ketika prosesor dengan jumlah core tinggi ini menjadi lebih umum di pusat data, harapkan untuk melihat lebih banyak perangkat lunak mengikuti jalur optimasi serupa.

NUMA (Non-Uniform Memory Access): Arsitektur komputer di mana core yang berbeda memiliki akses lebih cepat ke beberapa lokasi memori daripada yang lain, memerlukan optimasi yang cermat untuk kinerja terbaik.

Referensi: Optimizing ClickHouse for Intel's ultra-high core event processors