====== FreeBSDのL2ブリッジ(if_bridge)は本当に遅かった ====== FreeBSDでL2ブリッジを有効にすると[[https://forums.freebsd.org/threads/bad-performance-using-bridges.69952/|ネットワーク性能が激烈に落ちるという話]]がある。なんでも、ブリッジの実装であるif_bridge(4)に存在するたくさんの最適化されてないロックのせいで性能劣化を引き起こしてるとか。 いやいや、いくら何でもそんなに変わらんやろ?と思い、ブリッジの有無でiperfしてみたら、ブリッジ有りの方でありえないほど遅くなって草も生えないんですが。 {{ :blog:2020:freebsd_network_speed_bridge_enable_vs_disable.png |}} 測定環境は下表の通り。ネットワークまわりのチューニングとかは特にしてない。 ^ ^ サーバ ^ クライアント ^ | OS | FreeBSD 12.0-RELEASE-p4 amd64 | Windows 10 Pro 1903 x64 | | CPU | Xeon E5-2648Lv3 | Ryzen 1700 | | NIC | ConnectX-3 Pro EN (L2SW経由で40Gb接続) || | ソフト | iperf 2.0.13 | iperf 2.0.14a | ご覧の通り、現状のif_bridgeは1GbEには十分だけど、10GbE以上の環境では完全ボトルネックとなってしまう。bhyve使うときに割と困るぞこれ…。 ===== 参考サイト ===== * [[https://forums.freebsd.org/threads/bad-performance-using-bridges.69952/|Bad performance using bridges | The FreeBSD Forums]] * [[https://wiki.freebsd.org/NetworkPerformanceTuning|NetworkPerformanceTuning - FreeBSD Wiki]] * > if_bridge(4), specially bridge_input() uses lot's of LOCK: Avoid to use it. * [[https://github.com/ocochard/netbenches/blob/master/Atom_C2758_8Cores-Chelsio_T540-CR/bridge/results/fbsd11.1-yandex/README.md|netbenches/README.md at master · ocochard/netbenches · GitHub]] * ブリッジ使う、使わない時のコールグラフが載っている * [[https://people.freebsd.org/~olivier/talks/2018_AsiaBSDCon_Tuning_FreeBSD_for_routing_and_firewalling-Paper.pdf|Tuning FreeBSD for routing and firewalling]](PDF) * [[https://forums.freebsd.org/threads/bhyve-vtnet-with-taps-and-low-local-speed-traffic.67259/|bhyve, vtnet with taps and low local speed traffic | The FreeBSD Forums]] * [[https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=230970|230970 – [bhyve] bridge interface slow downs bandwith speed]] * [[https://bsdrp.net/documentation/technical_docs/performance|FreeBSD forwarding Performance [BSD Router Project]]]