LWN:各種BPF實現(xiàn)的性能對比!
共 1542字,需瀏覽 4分鐘
·
2024-06-17 13:38
關(guān)注了就能看到更多這么棒的文章哦~
Comparing BPF performance between implementations
By Daroc Alden
June 5, 2024
LSFMM+BPF
Gemini-1.5-flash translation
https://lwn.net/Articles/976317/
Alan Jowett 在 2024 年的 Linux 存儲、文件系統(tǒng)、內(nèi)存管理和 BPF 峰會 上進(jìn)行了第二場遠(yuǎn)程演講,在其中比較了不同 BPF 運行時的性能。他展示了 MIT 許可的 BPF 微基準(zhǔn)測試套件 的結(jié)果,他一直在開發(fā)這個套件。該基準(zhǔn)測試套件尚未提供所有平臺之間良好的直接比較,因此結(jié)果應(yīng)該謹(jǐn)慎對待。它們似乎表明,不同實現(xiàn)之間存在一些顯著差異,尤其是對于不同類型的 BPF 映射(maps)。
這些基準(zhǔn)測試測量了一些不同的指標(biāo),包括實際執(zhí)行各種測試程序所花費的時間,以及從內(nèi)核切換到 BPF 虛擬機的開銷,以及調(diào)用輔助函數(shù)的性能。Jowett 說,以平臺中立、可重復(fù)的方式測量這些指標(biāo)非常重要。該基準(zhǔn)測試套件使用 libbpf 加載 BPF 程序,libbpf 使用“編譯一次,隨處運行”(CO-RE)在不同的支持平臺上運行相同的 ELF 文件。
基準(zhǔn)測試套件中包含了幾種不同類型的 BPF 程序,包括一個空(無操作)程序、一些執(zhí)行各種輔助函數(shù)的程序,以及測試 BPF 映射性能的程序,包括 trie 和哈希表映射。在多個 CPU 內(nèi)核上并行進(jìn)行測量,以使測試并發(fā)映射的性能更有意義。
eBPF for Windows 項目使用基準(zhǔn)測試套件作為其日常持續(xù)集成 (CI) 設(shè)置的一部分,以跟蹤性能回歸。CI 還在 Linux 上運行相同的測試,但他表示,由于基礎(chǔ)設(shè)施問題,這些測試不能很好地進(jìn)行比較——CI 使用的 GitHub 運行程序無法指定特定的 Linux 內(nèi)核版本。他還指出,由于 Windows 使用 BPF 的提前編譯 (AOT),而不是像 Linux 那樣使用即時編譯 (JIT),因此會存在一些差異。
盡管如此,Jowett 認(rèn)為,從這些基準(zhǔn)測試中可以吸取一些有價值的經(jīng)驗教訓(xùn)。他說,AOT 編譯的性能優(yōu)于 JIT 編譯,JIT 編譯的性能又優(yōu)于解釋執(zhí)行。Alexei Starovoitov 對此說法提出了質(zhì)疑;他說,在 Windows 上測試的 JIT(鑒于 Linux 基礎(chǔ)設(shè)施問題,這是 Jowett 進(jìn)行比較的依據(jù))相當(dāng)笨拙,不足以對 Linux 的 JIT 做出概括。Jowett 承認(rèn)了這一點,并指出了 Windows JIT 無法改進(jìn)的一些方法。
Jowett 還展示了一些測量結(jié)果,證明最長前綴匹配 trie 映射的更新速度比哈希表更快,并且 Windows 在匹配 Linux 的 最近最少使用 (LRU) 表 的性能方面遇到了困難。他指出,維護表中鍵的年齡的全局一致性“代價高昂”。
然而,由于 Jowett 在測量 Linux 性能方面遇到的困難,因此很難說 eBPF for Windows 和 Linux BPF 實現(xiàn)的比較情況如何。也許當(dāng)這個問題得到解決時,這項工作將成為一個有用的工具,可以突出潛在的性能改進(jìn)。
全文完
LWN 文章遵循 CC BY-SA 4.0 許可協(xié)議。
長按下面二維碼關(guān)注,關(guān)注 LWN 深度文章以及開源社區(qū)的各種新近言論~
