- เครื่องมือน้ำหนักเบาที่ออกแบบมาเพื่อปรับแต่งประสิทธิภาพของระบบโดยอัตโนมัติอยู่เสมอ โดยอาศัยความสามารถด้านการสังเกตการณ์ของ BPF (eBPF)
ปัญหาที่ต้องการแก้ไข
- ตัวเลือกการปรับแต่งมีมากเกินไป: เคอร์เนล Linux มีพารามิเตอร์ sysctl ที่สามารถปรับแต่งได้มากกว่า 1,600 รายการ การค้นหาค่าที่เหมาะสมสำหรับสภาพแวดล้อมที่หลากหลายเป็นเรื่องซับซ้อนและยาก
- ลดการแทรกแซงของผู้ดูแลระบบ: ในระบบคลาวด์สมัยใหม่ จำเป็นต้องมีการจัดการแบบอัตโนมัติมากกว่าการปรับแต่งด้วยมือ ระบบส่วนใหญ่แทบไม่มีการแทรกแซงจากผู้ดูแลหลังการตั้งค่าเริ่มต้น
- ข้อจำกัดของการตั้งค่าแบบคงที่: เนื่องจากสภาพแวดล้อมของระบบเปลี่ยนแปลงอยู่ตลอดเวลา การปรับแต่งด้วยค่าคงที่จึงอาจไม่มีประสิทธิภาพ
หลักการออกแบบสำคัญ
- โอเวอร์เฮดต่ำที่สุด: หลีกเลี่ยงการติดตามเหตุการณ์ความถี่สูง และใช้ความสามารถด้านการสังเกตการณ์เฉพาะเมื่อจำเป็นจริง ๆ
- ทำให้คำอธิบายนโยบายชัดเจน: บันทึกลงใน syslog ว่าเปลี่ยน "อะไร" และ "ทำไม"
- ผู้ดูแลระบบมาก่อน: หากผู้ดูแลระบบตั้งค่าเอง จะปิดการทำงานของการปรับแต่งอัตโนมัติ
- หลักการไม่ต้องตั้งค่า: ปรับแต่งอัตโนมัติโดยไม่ต้องมีการตั้งค่าเพิ่มเติม และหลีกเลี่ยง magic number ให้มากที่สุด
- การปรับแบบไดนามิก: หากการใช้หน่วยความจำของ TCP เพิ่มขึ้น จะลดขนาดบัฟเฟอร์เพื่อรักษาสมดุลของระบบ
แนวคิดหลัก
- tuner: tuner แต่ละตัวจะประมวลผลเหตุการณ์ที่เกิดจากโปรแกรม BPF และจัดการรายการที่เกี่ยวข้องซึ่งสามารถปรับแต่งได้
- strategy: tuner สามารถมีได้หลาย strategy และแต่ละ strategy จะเลือกแนวทางที่มีประสิทธิภาพผ่านฟังก์ชันการประเมินผล
- event: ประกอบด้วย ID ของ tuner, สถานการณ์, ข้อมูล network namespace เป็นต้น และ tuner จะดำเนินการที่เหมาะสมโดยอิงจากข้อมูลนี้
สถาปัตยกรรม
bpftune เป็นเดมอนที่โหลดและจัดการปลั๊กอิน tuner หลายตัวในรูปแบบ .so
- tuner แต่ละตัวมี ID เฉพาะของตนเอง และประมวลผลเหตุการณ์ทั้งในฝั่ง BPF และ user space
- องค์ประกอบ BPF รวม
bpftune.bpf.h และใช้ตัวแปรที่ใช้ร่วมกันกับการกำหนด map
รายการ tuner ที่รองรับ
- TCP connection tuner: ปรับแต่งอัลกอริทึมควบคุมความแออัดโดยอัตโนมัติ
- neighbour table tuner: ขยายขนาดตารางเพื่อนบ้านโดยอัตโนมัติ
- route table tuner: ขยายขนาดตารางเส้นทางโดยอัตโนมัติ
- sysctl tuner: ปิดการทำงานของ tuner หากค่า sysctl ที่ปรับแต่งชนกับการตั้งค่าด้วยตนเอง
- TCP buffer tuner: ปรับขนาดบัฟเฟอร์ TCP โดยอัตโนมัติ
- net buffer tuner: ปรับแต่งค่าที่เกี่ยวข้องกับเครือข่ายระดับแกนกลางโดยอัตโนมัติ
- netns tuner: ตรวจจับการเพิ่มและการลบ network namespace
2 ความคิดเห็น
ความเห็นจาก Hacker News
bpftuneถูกออกแบบให้เป็นเครื่องมือที่ไม่ต้องตั้งค่าCachyOSCachyOS Hello->Apps/Tweaks