里程碑:DTrace 切換到 GPL 許可證

News:dtrace dropped the CDDL and switched to the GPL!

根據 2月14日 Brendan Gregg 在 Twitter 上推送的消息:Oracle 已經將 DTrace 模塊的開源許可證從 CDDL 切換到 GPL,預計最快到 2018 年底 Linux kernel 就可以發布一個可用的 /usr/sbin/dtrace ,底層基于 bcc 和 eBPF 。

Good news from Oracle: DTrace is GPL'd (thank you!). I'd guess by the end of 2018 we'll have a working /usr/sbin/dtrace on Linux for running D scripts (using libbcc+eBPF on the backend)

關于動態追蹤技術(Dynamic Tracing),我們在之前的文章已經有所介紹,動態追蹤技術(一):DTrace 導論 。DTrace 是動態追蹤技術的鼻祖,源自 Solaris 操作系統,提供了高級性能分析和調試功能( advanced performance analysis and troubleshooting tool )。

Oracle 收購 SUN 公司之后推出了 Oracle Linux DTrace (基于 Oracle 企業級內核 Unbreakable Enterprise Kernel ,UEK),針對性地發展完善了一系列探針如 syscall, profile, sdt, proc, sched 和 USDT,受制于諸多原因一直沒有進入 Linux kernel 代碼樹,其中最大的一個障礙是許可授權問題:DTrace 源代碼采用 CDDL 許可證,不兼容 Linux kernel 使用的 GPLv2 許可證,無法直接移植。

 commit e1744f50ee9bc1978d41db7cc93bcf30687853e6
 Author: Tomas Jedlicka <tomas.jedlicka@oracle.com>
 Date: Tue Aug 1 09:15:44 2017 -0400

 dtrace: Integrate DTrace Modules into kernel proper

 This changeset integrates DTrace module sources into the main kernel
 source tree under the GPLv2 license. Sources have been moved to
 appropriate locations in the kernel tree.

CDDL vs GPL

DTrace 與 OpenSolaris 一樣之前是基于 CDDL 許可證而不是 Linux kernel 使用的 GPL 許可證,二者的區別是什么呢?

image

GNU通用公共許可協議(GNU General Public License,簡稱 GNU GPL、GPL,港臺地區翻譯為“GNU通用公共授權條款”)是廣泛使用的免費軟件許可證,最初由GNU項目的自由軟件基金會(FSF)的理查德·斯托曼(Richard Matthew Stallman)撰寫。

一般的版權概念(“copyright”),從不授予用戶任何權利(除了使用的權利),更多的是限制性規定,例如復制、修改、分發等,也可以包括一些法律允許的行為,比如逆向工程。GPL 則代表了知識產權制度的左翼陣營(“copyleft”),它授予被許可人以下權利(或稱“自由”):

  • 以任何目的運行此程序的自由;
  • 再復制的自由;
  • 修改程序并公開發布改進版的自由(前提是能得到源代碼)。

GPL 及其它 Copyleft 協議授予了被許可人(幾乎是任何人)以非常廣泛的自由,同時利用版權法設計了“傳染機制”:GPL明確規定,任何源碼的衍生產品,如果對外發布,都必須保持同樣的許可證。這就是說,任何人只要發布基于某個GPL軟件的修改版本,他就必須公開源碼,并且同意他人可以自由地復制和分發,否則原始作者可以根據版權法起訴 。

DTrace 的 CDDL 許可證繼承自 Sun Microsystems 。通用開發與發行許可證(Common Development and Distribution License,簡稱CDDL) 是一個由 Sun 提出的授權協議,它以 Mozilla 公共許可證(MPL)1.1版本為基礎。基于 CDDL 許可證的項目主要有:OpenSolaris (含 DTrace 和 ZFS) 、NetBeans IDE 、GlassFish 等。

Like the MPL, the CDDL is a weak copyleft license in-between GPL license and BSD/MIT permissive licenses, requiring only source code files under CDDL to remain under CDDL.

鑒于 GPL 許可模式下很難通過開源軟件直接盈利,因此也有很多類似 CDDL 的開源協議傾向于支持商業開發,授予廠商更大的決定權。CDDL 最大的特點是源代碼和可執行文件允許采用不同的許可證。例如一般不存在 GPL 模式下存在的 “社區”版本,而是由廠商提供一些免費版本供開發者在非生產環境下使用,同時附上 CDDL 許可的源代碼,開發者可以自行編譯和部署;更重要的是,廠商只對付費客戶提供安全補丁修復和維護版本的源代碼。

綜上所述,基于 CDDL 許可證的 DTrace 你只可以使用但不允許圍繞代碼進行修改,或者添加其他跟蹤點。Paul Fox 個人貢獻的dtrace4linux 項目就試圖移植 Sun DTrace 到 Linux 的 ,但是受限于許可證只能做到附加產品(add-on), 外部人員很難直接參與進來,事實上 CDDL 許可證的項目外部貢獻最多一般不會超過 10% 。

Future

在此之前,Linux 已經擁有 SystemTap 和動態探針(dprobes),DTrace 是基于整個系統的全局跟蹤、調試、分析工具。Linux kernel 的創建者顯然不喜歡一個“復雜”的系統(large system), 他們傾向于將跟蹤、分析和探測劃分為彼此獨立的小單元。許多開發者為此發明了各種鉤子(hooks)以及整合某些特定探針(probes)的便利工具,例如 kprobes , uprobes, markers 等。 dtrace for linux 正式進入 Linux kernel 之后,有望將相關技術整合成一個更強大的體系,這一點非常令人期待。

里程碑:Linux 合并 BPF

2016年11月,Linux 4.9-rc1發布,正式合并了一項重要特性:BPF追蹤(Timed sampling)。

系統性能領域的國際導師Brendan Gregg,感動得都快哭了,當即在Twitter上表示這是一個重要的里程碑!
他隨后又寫了一篇長文《DTrace for Linux 2016》,以示慶祝。

As a long time DTrace user and expert, this is an exciting milestone!
--Brendan Gregg

Linux 合并了BPF而已嘛,跟DTrace這個勞什子有什么關系呢?

DTrace 是動態追蹤技術的鼻祖,源自 Solaris 操作系統,提供了高級性能分析和調試功能,它的源代碼采用 CDDL 許可證,不兼容 Linux 內核使用的 GPLv2 許可證,無法直接移植。當然,江湖上還有另外一種說法,Linux之所以一直沒有原生支持DTrace,是因為Linus 覺得這玩意沒什么必要。Anyway,隨著 BPF跟蹤的最后主要功能合并到 Linux 4.9-rc1,Linux 現在有了類似 DTrace 的高級分析和調試功能。

Linux 這次合并的BPF(The Berkeley Packet Filter ),來自于加州大學伯克利分校(這所大學很有意思,以后還要反復提到)。BPF,顧名思義,最早只是一個純粹的封包過濾器,后來在很多牛人的參與下,進行了擴展,得到了一個所謂的 eBPF,可以作為某種更加通用的內核虛擬機。通過這種機制,我們其實可以在 Linux 中構建類似 DTrace 那種常駐內核的動態追蹤虛擬機。

Linux 沒有 DTrace(名字),但現在有了 DTrace(功能)

擴展閱讀:動態追蹤技術

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,619評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,155評論 3 425
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,635評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,539評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,255評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,646評論 1 326
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,655評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,838評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,399評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,146評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,338評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,893評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,565評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,983評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,257評論 1 292
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,059評論 3 397
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,296評論 2 376

推薦閱讀更多精彩內容