Oracle 打算使用 eBPF 為 Linux 重新設計 DTrace

甲骨文公司 已報告 關於將 DTrace 相關變更傳輸到上游的工作,並計劃在標準 Linux 核心基礎架構之上實現 DTrace 動態偵錯技術,即使用 eBPF 等子系統。 最初,在 Linux 上使用 DTrace 的主要問題是許可證層級的不相容,但在 2018 年 Oracle 重新獲得許可 GPLv2 下的 DTrace 程式碼。

DTrace 已 很久 作為 Oracle Linux 發行版擴展核心的一部分提供,但要在其他發行版中使用它,需要使用額外的核心補丁,這限制了該技術的使用。 舉個例子,甲骨文 準備好了 有關在 Fedora Linux 上安裝和使用 DTrace 的詳細說明。 安裝時需組裝 工具 以及使用從以下版本重建的 Linux 內核 補丁。 為了使用 Oracle 和 Fedora 補丁自動執行核心構建,建議 腳本.

eBPF 是內建在Linux 核心中的字節碼解釋器,可讓您建立網路操作處理程序、監視系統操作、攔截系統呼叫、控制存取、使用計時處理事件(perf_event_open)、運算作業的頻率和執行時間、使用kprobes 執行追蹤/uprobes/追蹤點。 由於使用了 JIT 編譯,字節碼可以即時翻譯為機器指令,並以本機程式碼的效能執行。 DTrace 可以在 eBPF 之上實現,類似於在 eBPF 之上的實作方式 工作 現有的追蹤工具。

DTrace技術是為Solaris作業系統開發的,旨在解決動態追蹤系統核心和終端應用程式的問題,使用戶能夠詳細監控系統行為並即時診斷問題。 在偵錯過程中,DTrace 不會影響正在研究的應用程式的運行,也不會以任何方式影響其效能,這使您可以即時組織對正在運行的系統的分析。 DTrace 的優點之一是高級 D 語言,類似於 AWK,在其中創建追蹤腳本比使用提供的工具透過 C、Python 和 Lua 以及外部庫編寫 eBPF 處理程序要容易得多。

Oracle 的工程師也致力於為 GCC 創建 eBPF 後端,並且已經發布了 補丁集 將 eBPF 支援整合到 GCC 中並 達到了 包括在 GNU binutils 中支援 eBPF 的程式碼。 最初,eBPF 支援的後端是基於 LLVM 技術,但 Oracle 對 GCC 中出現的為 eBPF 生成程式的標準能力感興趣,這將允許使用工具包來建立 Linux 核心和建置程式對於 eBPF。

除了字節碼產生後端之外,建議的 GCC 補丁還包括用於 eBPF 的 libgcc 連接埠和用於產生 ELF 檔案的工具,從而可以使用核心提供的載入器在 eBPF 虛擬機器中執行程式碼。 目前,C 語言的程式碼可以翻譯為字節碼(並非所有語言功能都可用),但將來預計會擴展可用的 C 語言功能,添加對其他語言的支持,創建模擬器,以及添加GCC 支持,以便在不載入到核心的情況下調試eBPF 程式。

來源: opennet.ru

添加評論