Ceph: เส้นทางสู่ 1 TiB/s
(ceph.io)Ceph: เส้นทางสู่ 1TiB/s
- บทความที่บอกเล่าเส้นทางการปรับปรุงประสิทธิภาพของคลัสเตอร์ Ceph โดยผ่านกระบวนการดีบักอันยาวนานและการปรับแต่งประสิทธิภาพ จนสามารถทำความเร็วในการประมวลผลข้อมูลได้ถึง 1TiB/s
- แชร์ปัญหาทางเทคนิคหลากหลายรูปแบบและแนวทางแก้ไขที่เกิดขึ้นระหว่างที่บริษัทชื่อ Clyso ช่วยสร้างคลัสเตอร์ Ceph ขนาด 10 เพตะไบต์บนพื้นฐาน NVMe
- เครือข่ายของลูกค้ามีความเร็วสูงมาก และเป็นหนึ่งในการตั้งค่า Ethernet ที่เร็วที่สุด
คำขอบคุณ
- กล่าวขอบคุณลูกค้าของ Clyso ซึ่งความร่วมมือของพวกเขาทำให้สามารถแบ่งปันประสบการณ์นี้กับชุมชน Ceph ได้
- ขอบคุณ IBM/Red Hat และ Samsung ที่จัดหาฮาร์ดแวร์สำหรับใช้ในการทดสอบเปรียบเทียบ
- ขอบคุณผู้มีส่วนร่วมใน Ceph สำหรับความพยายามในการทำให้ Ceph เป็นซอฟต์แวร์ที่ยอดเยี่ยม
การตั้งค่าคลัสเตอร์
- ลูกค้าเสนอให้ใช้โหนดแบบ dual-socket ขนาด 2U จำนวน 34 เครื่องกระจายอยู่ใน 17 แร็ก แต่ Clyso ได้นำเสนอหลายรูปแบบที่ใช้โหนดขนาดเล็กกว่า
- สุดท้ายได้เลือกสถาปัตยกรรมของ Dell เพื่อลดต้นทุน พร้อมให้แบนด์วิดท์หน่วยความจำที่เร็วขึ้น ทรัพยากร CPU มากขึ้น และปริมาณงานเครือข่ายที่สูงขึ้น
- เมื่อล้มเหลวที่ระดับโหนด ผลกระทบต่อการกู้คืนคลัสเตอร์จะลดลงเหลือครึ่งหนึ่ง
การตั้งค่าการทดสอบ
- ใช้ CBT เพื่อดีพลอยคลัสเตอร์ Ceph ชั่วคราวและรันการทดสอบ FIO
- ใช้การทดสอบ FIO แบบอิงไลบรารีเพื่อแบ่งคลัสเตอร์ออกเป็นหน่วยเล็ก ๆ และเปรียบเทียบกับผลก่อนหน้า
- ทดสอบทั้ง replication 3X และ erasure coding 6+2 รวมถึงทดสอบ message version 2 ในโหมดเข้ารหัสและโหมด secure
ข้อควรระวังเกี่ยวกับจำนวน PG
- ทดสอบเชิงทดลองว่าจำนวน PG ส่งผลต่อประสิทธิภาพอย่างไร
- แม้จำนวน PG ที่สูงอาจส่งผลบวกต่อประสิทธิภาพ แต่ในสภาพแวดล้อม production จริงต้องพิจารณาร่วมกับการตั้งค่าอื่น ๆ
จุดที่เริ่มต้นได้ยาก
- หลังจากล็อกอินเข้าเครื่องฮาร์ดแวร์ครั้งแรก ก็พบปัญหาในการแก้ไขสถานการณ์เพราะประสิทธิภาพต่ำกว่าที่คาดไว้
- การทดสอบประสิทธิภาพช่วงแรกออกมาดี แต่เมื่อทดสอบโดยใช้ OSD หลายตัวกลับเกิดการลดลงของประสิทธิภาพ
พฤติกรรมประหลาด
- ระหว่างรันชุดการทดสอบ OSD หลายรูปแบบ พบว่ามีแพตเทิร์นแปลก ๆ ในประสิทธิภาพ
- สังเกตว่าระบบจะมีประสิทธิภาพลดลงหลังการทดสอบแบบ multi-OSD แล้วค่อยฟื้นกลับมาอีกครั้งหลังผ่านไปหลายชั่วโมง
วิธีแก้ไขสามอย่าง
- แก้ปัญหาความหน่วงที่เกิดจากการสลับ CPU c-state ซึ่งช่วยเพิ่มประสิทธิภาพได้เล็กน้อย
- ปิดการใช้งาน IOMMU และทำให้ประสิทธิภาพดีขึ้นอย่างมาก
- แก้ปัญหา compile flag ของ RocksDB ทำให้ประสิทธิภาพการเขียนแบบสุ่มขนาด 4K เพิ่มขึ้นเป็นสองเท่า
สัปดาห์แรกของปี 2024
- ในวันแรกของปีใหม่ เกิดเหตุขัดข้องครั้งใหญ่ในอีกคลัสเตอร์หนึ่ง ทำให้ไม่สามารถโฟกัสกับการทดสอบประสิทธิภาพได้
- กลับมาทดสอบประสิทธิภาพอีกครั้งในวันศุกร์ และยืนยันได้ว่าคลัสเตอร์ทำงานได้ดีแม้อยู่ภายใต้โหลดสูง
รอยยิ้มแห่งโชคชะตา
- เมื่อผลการทดสอบประสิทธิภาพดีขึ้น ก็ยืนยันได้ว่าคลัสเตอร์สามารถขยายตัวได้แบบเชิงเส้น
- คลัสเตอร์ที่ประกอบด้วย 63 โหนดสามารถทำความเร็วในการประมวลผลข้อมูลได้ 635GiB/s
ดาวมรณะที่ใช้งานได้เพียงบางส่วน
- เนื่องจากมี client node ไม่เพียงพอ จึงต้องให้ OSD node ใช้ร่วมกับโปรเซส FIO
- แม้ตั้งค่าแบบนี้ ก็ยังทำประสิทธิภาพได้ใกล้ 950GiB/s
แตะ 1TiB/s
- ปรับจำนวน OSD shard และจำนวน messenger thread จนสามารถทำความเร็วในการประมวลผลข้อมูลได้ถึง 1TiB/s
การนอนหลับ; erasure coding
- หลังจากทดสอบด้วย replication 3X แล้ว ก็รีคอนฟิกคลัสเตอร์เป็น erasure coding 6+2 ซึ่งเป็นรูปแบบที่ลูกค้าจะใช้งานจริง และทำการทดสอบต่อ
- ประสิทธิภาพการอ่านสูงกว่า 500GiB/s และประสิทธิภาพการเขียนเกือบแตะ 400GiB/s
GN⁺ ความเห็น:
- บทความนี้อธิบายกระบวนการปรับแต่งประสิทธิภาพของคลัสเตอร์ Ceph อย่างละเอียด และมอบมุมมองเชิงเทคนิคผ่านกรณีศึกษาการแก้ปัญหาที่ซับซ้อนจนไปสู่ประสิทธิภาพระดับสูง
- แสดงให้เห็นว่าความร่วมมือกับลูกค้า ความพยายามของผู้มีส่วนร่วมในชุมชน และกลยุทธ์การปรับแต่งทั้งฮาร์ดแวร์และซอฟต์แวร์ สามารถสร้างผลลัพธ์ที่ยิ่งใหญ่ในโลกจริงได้อย่างไร
- บทความนี้ให้ข้อมูลที่เป็นประโยชน์ไม่เพียงกับผู้เชี่ยวชาญด้านระบบจัดเก็บข้อมูลขนาดใหญ่ แต่ยังรวมถึงวิศวกรที่สนใจเรื่องการปรับแต่งประสิทธิภาพด้วย
1 ความคิดเห็น
ความคิดเห็นใน Hacker News