ClickHouse ได้ปรับปรุงเอนจินฐานข้อมูลให้ทำงานอย่างมีประสิทธิภาพบนโปรเซสเซอร์จำนวนคอร์สูงล่าสุดของ Intel รวมถึงชิป Sierra Forest 288 คอร์ ความสำเร็จนี้แก้ไขหนึ่งในความท้าทายที่ใหญ่ที่สุดในการคอมพิวติ้งสมัยใหม่: การทำให้ซอฟต์แวร์ขยายขนาดได้อย่างมีประสิทธิภาพข้ามหลายร้อยคอร์ CPU โดยไม่เกิดคอขวดด้านประสิทธิภาพ
งานปรับปรุงนี้เน้นไปที่การแก้ไขปัญหาการขยายขนาดที่สำคัญซึ่งเกิดขึ้นเมื่อฐานข้อมูลพยายามใช้พลังการประมวลผลที่มีอยู่ทั้งหมดบนโปรเซสเซอร์ขนาดใหญ่เหล่านี้ วิธีการแบบดั้งเดิมมักจะล้มเหลวเพราะไม่ได้ถูกออกแบบมาสำหรับความขนานแบบสุดขั้วเช่นนี้
การจัดสรรหน่วยความจำกลายเป็นคอขวดหลัก
ความท้าทายที่ใหญ่ที่สุดไม่ใช่พลัง CPU แต่เป็นการจัดการหน่วยความจำ เมื่อหลายร้อยคอร์พยายามจัดสรรหน่วยความจำพร้อมกัน ตัวจัดสรรหน่วยความจำเองกลายเป็นจุดติดขัดการจราจร วิศวกร ClickHouse ค้นพบว่ารูทีนการจัดสรรหน่วยความจำมาตรฐานไม่สามารถตอบสนองความต้องการของคอร์มากกว่า 200 คอร์ที่ร้องขอหน่วยความจำในเวลาเดียวกันได้
วิธีแก้ไขเกี่ยวข้องกับการใช้ตัวจัดสรรหน่วยความจำแบบเฉพาะเธรดที่หลีกเลี่ยงกลไกการล็อกที่ทำให้เกิดความล่าช้า เธรดการประมวลผลแต่ละตัวจะได้รับพูลหน่วยความจำของตัวเอง ซึ่งช่วยขจัดความจำเป็นที่เธรดต้องรอคิวเพื่อเข้าถึงหน่วยความจำ การเปลี่ยนแปลงนี้เพียงอย่างเดียวปรับปรุงประสิทธิภาพได้ 80% และลดความล่าช้าของเธรดลง 90%
ตัวจัดสรรแบบเฉพาะเธรด: ระบบการจัดการหน่วยความจำที่เธรดการประมวลผลแต่ละตัวมีพูลหน่วยความจำเฉพาะของตัวเอง หลีกเลี่ยงความขัดแย้งระหว่างเธรด
ผลลัพธ์การปรับปรุงประสิทธิภาพ ClickHouse
- ประสิทธิภาพการจัดสรรหน่วยความจำ: ปรับปรุงดีขึ้น 80%
- การลดเวลาแฝงของเธรด: ลดลง 90%
- การปรับปรุงความถี่ CPU: เพิ่มขึ้น 40%
- ความสามารถในการขยายระบบ: เกือบเป็นเส้นตรงในระบบที่มีมากกว่า 200 คอร์
- การประมวลผลข้อมูล: ความสามารถในการประมวลผลเหตุการณ์ของผู้ใช้แบบเรียลไทม์
กลยุทธ์โปรเซสเซอร์สองแนวทางของ Intel สร้างข้อแลกเปลี่ยน
Intel ได้แบ่งโปรเซสเซอร์เซิร์ฟเวอร์ออกเป็นสองประเภทที่แตกต่างกัน โปรเซสเซอร์ Sierra Forest ที่มีจำนวนคอร์สูงใช้คอร์ประสิทธิภาพ (E-cores) ที่บรรจุคอร์ได้มากกว่าในพื้นที่เดียวกันแต่ขาดคุณสมบัติขั้นสูงเช่นคำสั่ง AVX-512 ในขณะที่โปรเซสเซอร์ Granite Rapids ใช้คอร์ประสิทธิภาพ (P-cores) ที่มีการสนับสนุน AVX-512 แบบเต็มแต่มีจำนวนคอร์รวมน้อยกว่า
สิ่งนี้สร้างทางเลือกที่น่าสนใจสำหรับภาระงานฐานข้อมูル สำหรับงานที่เกี่ยวข้องกับการโหลดข้อมูลจำนวนมากและการประมวลผลพื้นฐาน E-cores 288 ตัวสามารถทำงานได้ดีกว่า P-cores ที่น้อยกว่าแต่มีพลังมากกว่า เพราะใช้เวลารอข้อมูลน้อยกว่า อย่างไรก็ตาม สำหรับงานที่ต้องการการคำนวณหนัก P-cores ที่มีชุดคำสั่งขั้นสูงยังคงเป็นผู้ชนะ
การเปรียบเทียบโปรเซสเซอร์เซิร์ฟเวอร์ Intel
ประเภทโปรเซสเซอร์ | จำนวนคอร์ | ประเภทคอร์ | รองรับ AVX-512 | งานเป้าหมาย |
---|---|---|---|---|
Sierra Forest | สูงสุด 288 คอร์ | E-cores (ประสิทธิภาพ) | ไม่รองรับ | งานที่เน้น I/O การประมวลผลแบบขนาน |
Granite Rapids | คอร์น้อยกว่า | P-cores (ประสิทธิภาพสูง) | รองรับ | งานที่เน้นการคำนวณ ประสิทธิภาพแบบเธรดเดียว |
ผลประสิทธิภาพในโลกจริงทำให้แม้แต่ผู้เชี่ยวชาญต้องประหลาดใจ
การตอบสนองจากชุมชนเป็นไปในทางบวกอย่างท่วมท้น โดยผู้ใช้รายงานผลลัพธ์ที่น่าประทับใจบนชุดข้อมูลหลายเทราไบต์ ผู้ใช้คนหนึ่งอธิบายการโหลดข้อมูลตลาดการเงินหลายเทราไบต์และสามารถรวมข้อมูลผ่านบันทึกหลายพันล้านรายการในเพียงไม่กี่นาที โดยไม่ต้องเปลี่ยนการตั้งค่าเริ่มต้นของระบบเลย
น่าทึ่งมากที่คุณได้รับทั้งประโยชน์ของขนาดเล็กและการสืบค้นที่รวดเร็ว ด้วยการปรับแต่งเพียงเล็กน้อย ผมคิดว่าผมไม่ได้เปลี่ยนค่าเริ่มต้นระดับระบบใดๆ แต่ผมสามารถรวมข้อมูลผ่านสแนปช็อตหลายพันล้านทั้งหมดในไม่กี่นาที
การปรับปรุงเหล่านี้ยังเป็นประโยชน์ต่อแอปพลิเคชันอื่นๆ นอกเหนือจากฐานข้อมูล นักวิจัยที่ทำงานเกี่ยวกับการจัดลำดับ DNA และงานที่ต้องการข้อมูลเข้มข้นอื่นๆ พบว่าโปรเซสเซอร์คอร์สูงเหล่านี้สามารถแข่งขันกับฮาร์ดแวร์ GPU เฉพาะทางสำหรับภาระงานบางประเภท เมื่อซอฟต์แวร์ได้รับการปรับปรุงอย่างเหมาะสมสำหรับสถาปัตยกรรมฮาร์ดแวร์
เทคนิคการปรับแต่งประสิทธิภาพหลัก
- ตัวจัดสรรหน่วยความจำแบบ thread-local: ขจัดปัญหาคอขวดในการจัดสรรหน่วยความจำ
- การปรับแต่งคำสั่ง SIMD: ใช้ SSE4.2 สำหรับการดำเนินการตาราง hash
- การป้องกัน false sharing: ปรับแต่งการใช้งาน cache line ระหว่างคอร์ต่างๆ
- การจัดสรรแบบ NUMA-aware: จัดการตำแหน่งหน่วยความจำสำหรับระบบหลาย socket
- โครงสร้างข้อมูลแบบ lock-free: ลดการแย่งชิงทรัพยากรระหว่าง thread การประมวลผล
![]() |
---|
ทีม ClickHouse เฉลิมฉลองการปรับปรุงประสิทธิภาพที่ประสบความสำเร็จสำหรับโปรเซสเซอร์แกนสูงของ Intel โดยแสดงให้เห็นการปรับปรุงประสิทธิภาพในโลกแห่งความเป็นจริงที่น่าประทับใจ |
มองไปข้างหน้าสู่การนำมาใช้อย่างแพร่หลาย
แม้ว่าโปรเซสเซอร์ 288 คอร์อาจฟังดูเกินความจำเป็นสำหรับผู้ใช้ส่วนใหญ่ แต่เทคนิคการปรับปรุงที่พัฒนาสำหรับระบบสุดขั้วเหล่านี้มักจะเป็นประโยชน์ต่อการกำหนดค่าที่เล็กกว่าด้วย การปรับปรุงการจัดสรรหน่วยความจำและการประมวลผลที่ตระหนักถึง NUMA ช่วยเพิ่มประสิทธิภาพแม้ในระบบเดสก์ท็อปที่มี 16 หรือ 32 คอร์
ความสำเร็จของ ClickHouse บนโปรเซสเซอร์เหล่านี้แสดงให้เห็นว่าซอฟต์แวร์สามารถขยายขนาดให้เข้ากับความก้าวหน้าของฮาร์ดแวร์ได้จริง แต่ต้องการการคิดใหม่อย่างพื้นฐานเกี่ยวกับวิธีที่แอปพลิเคชันจัดการทรัพยากร เมื่อโปรเซสเซอร์จำนวนคอร์สูงเหล่านี้กลายเป็นเรื่องธรรมดามากขึ้นในศูนย์ข้อมูล คาดว่าจะเห็นซอฟต์แวร์มากขึ้นที่ทำตามเส้นทางการปรับปรุงที่คล้ายกัน
NUMA (Non-Uniform Memory Access): สถาปัตยกรรมคอมพิวเตอร์ที่คอร์ต่างๆ มีการเข้าถึงที่เร็วกว่าไปยังตำแหน่งหน่วยความจำบางแห่งมากกว่าแห่งอื่น ต้องการการปรับปรุงอย่างระมัดระวังเพื่อประสิทธิภาพที่ดีที่สุด
อ้างอิง: Optimizing ClickHouse for Intel's ultra-high core event processors