2019独角兽企业重金招聘Python工程师标准>>>

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 e1744f50ee9bc1978d41db7cc93bcf30687853e6Author: Tomas Jedlicka <tomas.jedlicka@oracle.com>Date: Tue Aug 1 09:15:44 2017 -0400dtrace: Integrate DTrace Modules into kernel properThis changeset integrates DTrace module sources into the main kernelsource tree under the GPLv2 license. Sources have been moved toappropriate locations in the kernel tree.

CDDL vs GPL

DTrace 与 OpenSolaris 一样之前是基于 CDDL 许可证而不是 Linux kernel 使用的 GPL 许可证,二者的区别是什么呢?

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(功能)

扩展阅读:动态追踪技术

  • 操作系统原理 | How Linux Works(一):How the Linux Kernel Boots
  • 操作系统原理 | How Linux Works(二):User Space & RAM
  • 操作系统原理 | How Linux Works(三):Memory
  • 动态追踪技术(一):DTrace 导论
  • 动态追踪技术(二):strace+gdb 溯源 Nginx 内存溢出异常
  • 动态追踪技术(三):Tracing Your Kernel Function!
  • 动态追踪技术(四):基于 Linux bcc/BPF 实现 Go 程序动态追踪
  • 动态追踪技术(五):Welcome DTrace for Linux

更多精彩内容扫码关注公众号:RiboseYim's Blog

转载于:https://my.oschina.net/zijingshanke/blog/1622114

里程碑:DTrace 切换到 GPL 许可证相关推荐

  1. 十问十答 GPL 许可证

    GPL 是 GNU's General Public License 的缩写,翻译成中文叫 GNU 的通用公共许可证,是最受欢迎的开源许可证之一.它由理查德·斯托曼(Richard Stallman) ...

  2. 自由与约束:使用GPL许可证项下开源代码的法律风险

    之前在大厂的项目中和张博士合作开源风险论证,有些启发.经张博士授权转载一篇他的文章,个人认为观点比较全面也比较实用吧.原文如下,欢迎交流,不喜勿喷!多谢! 自由与约束:使用GPL许可证项下开源代码的法 ...

  3. GNU GPL 许可证常见问题解答

    润桐讯|开源软件的知识产权问题近年来日益受到关注和重视,集慧智佳对此也进行了跟踪研究,还曾承担国家级的开源知识产权研究课题,并为国内知名的互联网软件企业提供了开源知识产权风险排查服务. 本文由高级咨询 ...

  4. 开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

    开源许可证GPL.BSD.MIT.Mozilla.Apache和LGPL的区别 首先借用有心人士的一张相当直观清晰的图来划分各种协议:开源许可证GPL.BSD.MIT.Mozilla.Apache和L ...

  5. 一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别【转载】

    首先借用有心人士的一张相当直观清晰的图来划分各种协议:开源许可证GPL.BSD.MIT.Mozilla.Apache和LGPL的区别 以下是上述协议的简单介绍: BSD开源协议 BSD开源协议是一个给 ...

  6. 开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别

    2019独角兽企业重金招聘Python工程师标准>>> 首先借用有心人士的一张相当直观清晰的图来划分各种协议:开源许可证GPL.BSD.MIT.Mozilla.Apache和LGPL ...

  7. 开源许可证 GPL、BSD、MIT、Mozilla、Apache和LGPL的区别。

    一.GPL.BSD.MIT.Mozilla.Apache和LGPL的总体结构图如下: 二.协议详细说明 LGPL开源许可证: LGPL 是GPL的一个为主要为类库使用设计的开源协议.和GPL要求任何使 ...

  8. 自由软件许可证GPL

    转自阮一峰 原文网址:http://www.ruanyifeng.com/blog/2004/06/gpl.html **自从版权制度问世,大多数人就形成了一种观念:只要是正版软件,就一定会收费. 如 ...

  9. GPL与BSD许可证的区别

    GPL和BSD许可证是开源社区最大的两个阵营,尽管都提倡开源.自由,但是两阵营相互不鸟,经常争论不休.根本上是因为两者对于代码的使用自由有着本质上的不同. GPL许可证的由来 1980,一个叫Rich ...

最新文章

  1. C语言学习9(循环结构:while语句)
  2. 百度智能云开物再收“一个奖状”
  3. 深入解读无服务器架构下的数据库
  4. 面试必会系列 - 1.4 类加载机制
  5. Effulgent的《深入理解Direct3D9》整理版(转)
  6. 破洞牛仔裤中的几何学:简单理解万有覆叠问题
  7. AJAX简单使用介绍
  8. jqueryui时间插件_jQueryUI Progressbar插件
  9. 机器学习基础:交叉熵损失(Machine Learning Fundamentals: Cross Entropy Loss)
  10. 泛微e9隐藏明细表_泛微e-cology的Ecode二次开发无侵入定制说明
  11. 尘梦留痕:苏东坡的诗词里,藏着六种人生智慧
  12. gitter 卸载_最佳Gitter频道:转到
  13. wine - qq无法显示图片头像
  14. Hanoi Tower Troubles Again!
  15. PostgreSQL 中的系统字段:tableoid、xmin、xmax、cmin、cmax、ctid
  16. 2022-2028年中国保健食品行业市场运营格局及前景战略分析报告
  17. 应急响应 - Windows启动项分析,Windows计划任务分析,Windows服务分析
  18. 2019-12-20
  19. sql server 中 SET ROWCOUNT 的具体用法
  20. OpenStack之Magnum容器编服务排引擎详解

热门文章

  1. 沉迷游戏自学编程,创建游戏帝国,却黯然退场的“鬼才程序员”
  2. 从互联网大厂裸辞 500 天后,我发生哪些变化?
  3. 从CV到ML 直播场景下新技术的应用
  4. java内外循环打印等腰三角*号
  5. Windows Server 2012正式版RDS系列⑤
  6. Python基础学习之 函数
  7. android代码混淆笔记
  8. select sum也会返回null值
  9. 阿里云MaxCompute 2019-4月刊
  10. linux我安装虚拟机后安装FTP出现如下错误求解决