FreeBSD網橋if_bridge實現性能提高5倍
FreeBSD 在企業網絡基礎架構中的性能很好,但是網絡橋接設備內核代碼 if_bridge 處會遇到性能瓶頸(if_bridge 可以有效地將FreeBSD 機器變成交換機)。開發人員研究過程中發現,當前的if_bridge 實現在單個BRIDGE_LOCK 互斥鎖上有很大的競爭。if_bridge 實現將吞吐量限制為每秒約370 萬個數據包。
在遍歷了一些選項之後,開發人員的最終解決方案利用了FreeBSD 13 (CURRENT) 中的epoch (9),通過巧妙地使用並發,epoch (9) 允許安全使用受保護的數據結構,而根本不需要獲得鎖(互斥鎖或讀寫鎖)。
最終結果是,新的if_bridge 實現每秒可以轉發約1860 萬個數據包,性能大約提升了5 倍。
FreeBSD 基金會在博客上介紹了這一改進,在此研究過程中,基金會通過社區贈款提供了資助。
詳情查看:https://www.freebsdfoundation.org/blog/500-if_bridge-performance-improvement