里程碑: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阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容