FreeBSD ได้อัพเดต Kernel ให้มาใช้โค้ดของ sendfile() ใหม่ล่าสุดที่ถูกพัฒนาร่วมกันโดย NGINX และ Netflix มาตั้งแต่ปี 2013 ทำให้ sendfile() syscall สามารถทำงานได้อย่างรวดเร็วและมีประสิทธิภาพมากขึ้น รวมถึงมีฟีเจอร์ใหม่ๆ ดังนี้
- Asynchronous I/O สามารถส่งคำสั่ง I/O Operation ต่างๆ โดยไม่ต้องรอให้การทำงานนั้นเสร็จสิ้นได้
- เพิ่ม Flag ใหม่ เช่น SF_NOCACHE ทำให้ Kernel ไม่ Cache ข้อมูลนี้หลังจากส่งเสร็จแล้ว
- SF_READAHEAD() กำหนดขนาดของ Readahead ใน Page ได้
การอัพเกรดมาใช้โค้ด sendfile() ใหม่นี้สามารถทำได้ทันทีโดยไม่ต้องแก้ไข Application ที่ใช้งานอยู่แต่อย่างใด โดยปัจจุบันนี้ Netflix เองก็ใช้โค้ด sendfile() ชุดนี้ในระบบ Production ของ Netflix เองในการส่งข้อมูลหลายสิบ Gbps ต่อวินาทีอยู่แล้วอีกด้วย
ใครที่อยากอ่านรายละเอียดเต็มๆ ก็เข้าไปอ่านได้ที่ https://lists.freebsd.org/pipermail/svn-src-head/2016-January/080924.html เลยนะครับ
ที่มา: http://www.phoronix.com/scan.php?page=news_item&px=FreeBSD-Faster-Sendfile