10 คะแนน โดย xguru 2021-11-15 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
<p>- Heap ดำเนินการฐานข้อมูล Postgres สำหรับงานวิเคราะห์ขนาดหลายเพตะไบต์<br /> - เมื่อเติบโตอย่างรวดเร็ว อัตราการใช้งานโหนดเกิน 80% ทำให้เกิดปัญหาด้านประสิทธิภาพในไปป์ไลน์การเก็บข้อมูล <br /> - สาเหตุของปัญหาคือ SSD มักมีแนวโน้มที่ประสิทธิภาพจะลดลงเมื่อการใช้งานเข้าใกล้ 100%<br /> - การใช้ ZFS ซึ่งเป็น CoW (Copy-on-Write) ทำให้ปัญหารุนแรงขึ้น <br /> → ทุกครั้งที่มีการอัปเดตบล็อก จะต้องเขียนสำเนาใหม่ <br /> - แน่นอนว่า CoW ก็มีข้อดีหลายอย่าง<br /> → การบีบอัดในระดับไฟล์ซิสเต็มทำได้สะดวกกว่าไฟล์ซิสเต็มอื่น จึงบีบอัดได้ 4-5x และประหยัดพื้นที่ <br /> → มีความทนทานสูงกว่า จึงสามารถปิด `full_page_writes` ของ Postgres ได้ ส่งผลให้ประสิทธิภาพดีขึ้นและลด IO โดยรวม <br /> → มี Point-in-time snapshot ที่รับประกันความสอดคล้องได้ — เนื่องจากหน้าเพจไม่สามารถถูกเปลี่ยนแปลงย้อนหลังได้ จึงยังคงเก็บหน้าเดิมไว้ระหว่างการทำ snapshot<br /> - แต่ไฟล์ซิสเต็มแบบ CoW อย่าง ZFS จะมีประสิทธิภาพลดลงเมื่อพื้นที่ใกล้เต็ม<br /> → ทุกครั้งที่อัปเดตหน้าเพจ block allocator ต้องหาบล็อกว่างใหม่ จึงยิ่งช้าลงมากเมื่ออัตราการใช้งานสูง <br /> → ต้องลบบล็อกที่เคยถูก unlink ออก และจัดให้ปะปนกับบล็อกเดิม <br /> → ยิ่งแย่ลงเพราะตั้งขนาดบล็อกไว้ใหญ่ถึง 64kb เพื่อให้ได้อัตราการบีบอัดที่สูงขึ้น <br /> → ด้วยเหตุผลเหล่านี้ จึงควรรักษาการใช้งานของ ZFS ไว้ไม่ให้เกิน 80% <br /> <br /> - จึงลองอัปเกรดเป็น ZFS 2.x และเปลี่ยนจากการบีบอัดแบบ lz4 ไปเป็น Zstandard <br /> → lz4 เร็วมากและให้อัตราการบีบอัดราว ~4.4x <br /> → Zstandard ให้อัตราการบีบอัดได้ถึง ~5.5x จึงดีขึ้น 20% <br /> → แต่หลายเบนช์มาร์กบอกว่า Zstandard ช้ากว่า lz4<br /> → จึงตัดสินใจทดสอบอย่างเข้มงวดในสภาพแวดล้อมจริง <br /> → ผลการทดสอบพบว่าประสิทธิภาพของคิวรีไม่เปลี่ยนไป การใช้สตอเรจลดลง ~20% และเวลาคิวรีเขียนลดลงครึ่งหนึ่ง <br /> <br /> - DB cluster ของ Heap แบ่งเป็น 5 โหนด และแต่ละโหนดอยู่ใน ASG ของตัวเอง <br /> → การเปลี่ยนโหนดทำได้ง่าย เพียงแยกออกจาก ASG แล้ว ASG จะสร้างโหนดใหม่ จากนั้นรีสโตร์จากแบ็กอัปล่าสุดและเข้าสู่โหมด warm standby <br /> → สร้าง AMI ด้วยการตั้งค่าใหม่ แล้วค่อย ๆ ทำทีละโหนด <br /> → โดยรวมแล้วการใช้งานลดลง ~21% เวลาเขียนลดลง 50% และประสิทธิภาพคิวรีแทบไม่เปลี่ยน </p>

1 ความคิดเห็น

 
xguru 2021-11-15
<p>- Arch Linux เปลี่ยนเครื่องมือบีบอัดแพ็กเกจจาก xz เป็น Zstandard https://th.news.hada.io/topic?id=1227<br /> - ยุคฟื้นฟูของอัลกอริทึมการบีบอัด https://th.news.hada.io/topic?id=1228<br /> <br /> ในบทความไม่ได้พูดถึงการใช้ CPU แต่พอไปดูคอมเมนต์ของผู้เขียนต้นฉบับบน HN ก็เห็นว่ามันเพิ่มขึ้นจากประมาณ ~40% เป็น ~50% (หมายความว่า Zstd ใช้ CPU มากกว่า)<br /> - https://news.ycombinator.com/item?id=29164727</p>;