
การจัดการชั้นแคชของ Ceph ทำงานอย่างไร?
บทนำ:
ในโพสต์นี้ เราจะแบ่งปันทดสอบการวัดประสิทธิภาพเพื่อแสดงให้เห็นว่าการจัดการชั้นแคชของ Ceph สามารถปรับปรุงประสิทธิภาพของพูล HDD ได้อย่างไร โดยการตั้งค่าชั้นแคชที่รองรับโดยพูล NVMe.
Ceph Cache Tier คืออะไรและทำงานอย่างไร
ชั้นบันทึกแคช Ceph ช่วยให้เราสามารถใช้อุปกรณ์จัดเก็บข้อมูลที่เร็วกว่าเป็นแคชสำหรับอุปกรณ์ที่ช้ากว่าได้ นี้เกี่ยวข้องกับการสร้างกลุ่มของอุปกรณ์จัดเก็บข้อมูลที่เร็ว/แพง (เช่น NVMe SSD) ที่กำหนดค่าให้ทำหน้าที่เป็นชั้นแคช และกลุ่มของอุปกรณ์ที่ช้า/ถูกกว่า (เช่น HDD) ที่กำหนดค่าให้ทำหน้าที่เป็นชั้นจัดเก็บที่ประหยัดค่าใช้จ่าย เทียบกับชั้นเก็บข้อมูลหลังคาและให้บริการคำขอการอ่านและเขียนจากไคลเอ็นต์ ชั้นเก็บแคชเก็บข้อมูลที่ถูกเข้าถึงบ่อยจากชั้นเก็บข้อมูลหลังคาและให้บริการคำขอการอ่านและเขียนจากไคลเอ็นต์ ตัวแทนการจัดชั้นแคชจะส่งออกหรือลบวัตถุจากชั้นแคชเป็นระยะๆ โดยอิงตามนโยบายบางอย่าง
การสาธิตชั้นเก็บแคชของ Ceph
ในอดีตเมื่อใช้ SATA SSD เป็นอุปกรณ์จัดเก็บแคชเทียร์ การปรับปรุงประสิทธิภาพของการใช้แคชเทียร์ไม่มีความสำคัญ ในปัจจุบัน ราคา NVMe SSD ลดลงมากเมื่อเปรียบเทียบกับหลายปีที่ผ่านมา และประสิทธิภาพของ NVMe SSD ก็เร็วกว่า HDD อย่างมาก เราต้องการทราบว่าการใช้ NVMe SSD เป็นแคชเทียร์สามารถช่วยเพิ่มประสิทธิภาพของ HDD pool ได้มากน้อยแค่ไหน
เพื่อตรวจสอบประสิทธิภาพของชั้นแคช NVMe เราได้ตั้งค่าการทดสอบเพื่อดูว่าชั้นแคชช่วยปรับปรุงประสิทธิภาพของพูลเก็บข้อมูลที่ใช้ HDD หรือไม่.
การติดตั้งคลัสเตอร์
โฮสต์ NVME | 3 x Ambedded Mars500 Ceph Appliances |
ข้อมูลสเปคของแต่ละอุปกรณ์ Mars 500 | |
หน่วยประมวลผล (CPU) | 1x Ampere Altra Arm 64-Core 3.0 Ghz |
หน่วยความจำ (Memory) | 96 GiB DDR4 |
เครือข่าย (Network) | 2 พอร์ต 25Gbps Mellanox ConnectX-6 |
ไดรฟ์ OSD | 8 x Micron 7400 960GB |
โฮสต์ HDD | 3 x Ambedded Mars400 Ceph Appliances |
รายละเอียดสเปคของแต่ละอุปกรณ์ Mars 400 | |
หน่วยประมวลผล (CPU) | 8 โหนด Quad-Cores Arm64 1.2 GHz |
หน่วยความจำ (Memory) | 4GiB ต่อโหนด 32 GiB ต่ออุปกรณ์ |
เครือข่าย (Network) | 2 x 2.5Gbps ต่อโหนด 2x 10 Gb การเชื่อมต่อขึ้นผ่านสวิตช์ภายในตู้ |
ไดรฟ์ OSD | 8 x 6 TB Seagate Exos HDD |
ข้อมูลคลัสเตอร์ Ceph
- 24 x OSD บน NVMe SSD (3x Ambedded อุปกรณ์ Mars500)
- 24x OSD บน HDD (3x Ambedded อุปกรณ์ Mars400)
- เซิร์ฟเวอร์ HDD และ NVMe ตั้งอยู่ในราก CRUSH ที่แยกกัน
ผู้ใช้ทดสอบ
- 2 x เซิร์ฟเวอร์ทาง物理 2x การ์ดเครือข่าย 25Gb
- แต่ละเซิร์ฟเวอร์ทำงาน 7x VMs
- แต่ละ VM มี 4x คอร์ และ 8 GB หน่วยความจำ
ตั้งค่า Cache Tier โดย Ambedded UVS manager
1. สร้างพูลหลักโดยใช้ HDD osd.
2. สร้างพูล NVMe โดยใช้ NVMe SSD osd.
3. เพิ่ม NVMe pool เป็นชั้นความจำแคชของ HDD pool.
การกำหนดค่าชั้นความจำแคชเริ่มต้น:
- โหมดแคช: เขียนกลับ
- hit_set_count = 12
- hit_set_period = 14400 วินาที (4 ชั่วโมง)
- target_max_byte = 2 TiB
- target_max_objects = 1 ล้าน
- min_read_recency_for_promote & min_write_recency_for_promote = 2
- cache_target_dirty_ratio = 0.4
- cache_target_dirty_high_ratio = 0.6
- cache_target_full_ratio = 0.8
- cache_min_flush_age = 600 วินาที
- cache_min_evict_age = 1800 วินาที
เราทดสอบ HDD pool ก่อนและหลังจากเพิ่ม cache tier โดยใช้ไคลเอ็นต์สูงสุด 14 คนเพื่อสร้างภาระการทดสอบ แต่ละลูกค้าติดตั้ง RBD สำหรับการทดสอบ fio การทดสอบเริ่มต้นด้วยลูกค้าหนึ่งและเพิ่มจำนวนลูกค้าเมื่องานทดสอบแต่ละงานเสร็จสิ้น รอบทดสอบแต่ละรอบใช้เวลาห้านาทีและถูกควบคุมโดยอัตโนมัติโดย Jenkins ประสิทธิภาพของงานทดสอบคือผลรวมของผลลัพธ์ของลูกค้าทั้งหมด ก่อนที่จะทดสอบการจัดชั้นแคช เราเขียนข้อมูลลงใน RBDs จนกระทั่งพูลแคชชั้นถูกเต็มตามอัตราส่วนเป้าหมายของแคชเซฟ (0.8)
แผนภูมิแสดงให้เห็นว่าประสิทธิภาพของพูล HDD สะอาดได้รับการเพิ่มขึ้นอย่างมีนัยสำคัญหลังจากเพิ่มพูลแคช NVMe
ในระหว่างการทดสอบระดับแคชเราสังเกตสถิติพูลโดยใช้คำสั่ง CEPH OSD Pool Stats แคชและสระว่ายน้ำฐานมีการล้าง, evicting และการส่งเสริมกิจกรรม เราจับสถิติสระว่ายน้ำในเวลาที่ต่างกันในระหว่างการทดสอบระดับแคช
ข้อมูลถูกเขียนลงในแคช
พูลแคชไอดี 84
การเขียนข้อมูลลูกค้า 21 MiB/s wr, 0 op/s rd, 5.49k op/s wr
พูล mars400_rbd ไอดี 86
ไม่มีอะไรเกิดขึ้น
แคชกำลังทำการโปรโมตและลบออก
พูลแคชไอดี 84
คลายเอาท์ไอโอไคลเอ็นต์ 42 MiB/s เขียน, 0 การดำเนินการอ่าน, 10.79k การดำเนินการเขียน
คลายเอาท์ไอโอแคชเทียร์ 179 MiB/s ลบออก, 17 การโปรโมต
พูล mars400_rbd ไอดี 86
คลายเอาท์ไอโอไคลเอ็นต์ 0 B/s อ่าน, 1.4 MiB/s เขียน, 18 การดำเนินการอ่าน, 358 การดำเนินการเขียน
แคชกำลังถูกล้าง
พูลแคชไอดี 84
คลายเอาท์ไอโอไคลเอ็นต์ 3.2 GiB/s rd, 830 op/s rd, 0 op/s wr
คลายเอาท์แคชทีร์ไอโอ 238 MiB/s flush, 14 op/s promote, 1 PGs flushing
พูล mars400_rbd ไอดี 86
คลายเอาท์ไอโอไคลเอ็นต์ 126 MiB/s rd, 232 MiB/s wr, 44 op/s rd, 57 op/s wr
PG กำลังไล่ออก
พูลแคช id 84
การเขียนข้อมูลของไคลเอ็นต์ 2.6 GiB/s rd, 0 B/s wr, 663 op/s rd, 0 op/s wr
การเขียนข้อมูลของแคชทีร์ 340 MiB/s flush, 2.7 MiB/s evict, 21 op/s promote, 1 PGs evicting (full)
พูล mars400_rbd id 86
การเขียนข้อมูลของไคลเอ็นต์ 768 MiB/s rd, 344 MiB/s wr, 212 op/s rd, 86 op/s wr
การล้างและการสื่อสารระหว่างลูกค้าโดยตรงไปยังพูลหลักของ PG.(ลูกค้ากำลังเขียนข้อมูล)
พูลแคชไอดี 84
ไคลเอ็นต์ไอโอ 0 B/s เขียน, 0 การดำเนินการ/วินาที อ่าน, 1 การดำเนินการ/วินาที เขียน
แคชทีร์ไอโอ 515 MiB/s ล้าง, 7.7 MiB/s ลบออก, 1 PGs กำลังล้าง
พูล mars400_rbd ไอดี 86
ไคลเอ็นต์ไอโอ 613 MiB/s เขียน, 0 การดำเนินการ/วินาที อ่าน, 153 การดำเนินการ/วินาที เขียน
หลังจากการทดสอบอย่างต่อเนื่อง เราได้พักคลัสเตอร์เป็นเวลาหลายชั่วโมงและทำการทดสอบการเขียนแบบสุ่ม 4 kB ใหม่ เราได้รับประสิทธิภาพที่ดีกว่าอย่างมาก นี่เป็นเพราะพื้นที่แคชถูกปล่อยให้กับการเขียนใหม่
จากการทดสอบนี้ เรามั่นใจว่าการใช้ NVMe pool เป็นชั้นแคชของ HDD pool สามารถทำให้ประสิทธิภาพดีขึ้นอย่างมีนัยสำคัญ
ควรสังเกตว่าประสิทธิภาพของการจัดชั้นแคชไม่สามารถรับประกันได้ ประสิทธิภาพขึ้นอยู่กับสภาพการเข้าถึงแคชในขณะนั้น และไม่สามารถทำให้ประสิทธิภาพเดียวกันได้โดยการทำการทดสอบซ้ำด้วยการตั้งค่าและภาระงานเดียวกัน
หากแอปพลิเคชันของคุณต้องการประสิทธิภาพที่สม่ำเสมอ ให้ใช้ NMMe SSD pool แบบบริสุทธิ์
- ผลิตภัณฑ์ที่เกี่ยวข้อง
-
Mars500 NVME อุปกรณ์จัดเก็บข้อมูลแบบแฟลชทั้งหมด Ceph
Mars 500
Mars 500 Ceph Appliance ถูกออกแบบมาเพื่อตอบสนองความต้องการในการจัดเก็บข้อมูลแบบคลาวด์ที่มีประสิทธิภาพสูง...
รายละเอียดอุปกรณ์จัดเก็บข้อมูล Mars 400PRO Ceph
Mars 400PRO
Mars 400 Ceph Appliance ถูกออกแบบมาเพื่อตอบสนองความต้องการในการจัดเก็บข้อมูลแบบคลาวด์ที่มีความจุสูง...
รายละเอียด