免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 13774 | 回复: 27

[内核模块] 搞不懂为何有了kprobe了还要systemtap? [复制链接]

论坛徽章:
0
发表于 2014-01-01 20:52 |显示全部楼层
systemtap能实现的功能kprobe都可以做,为了用systemtap学习那一套语言有些麻烦,因为不是经常用,过几天就忘了,搞不懂为何有了kprobe了还要systemtap?

大家来谈一谈,你为何用systemtap ?
我能想到的:
1.systemtap较用kprobe写内核模块要安全一些,systemtap脚本不会把系统crash掉,而写内核模块就不一样了. 至于为何安全,还没去研究,毕竟systemtap后面也是要加载内核模块的。

2.systemtap适合不会内核编程,C语言的人士使用,脚本语言方便。说实话对于我这种熟悉内核编程的人来说,相反systemtap还麻烦一些。

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2014-01-02 08:55 |显示全部楼层
todaygood 发表于 2014-01-01 20:52
systemtap能实现的功能kprobe都可以做,为了用systemtap学习那一套语言有些麻烦,因为不是经常用,过几天就忘 ...

systemtap是kprobe的封装,基于kprobe实现。个人觉得主要优势为:
1、动态调试。这个应该是最大的亮点,不需更换内核、不需重启系统,对于需要在线调试问题的应用场景来说,这个功能是非常关键的,因为很多疑难故障都是很难复现的,如果重启或更换内核,可能就很难再捕获到故障信息了。
2、使用方便,如你所说,由于使用脚本,不用手动编写C代码,模块编译以及加载模块的操作。只需要按照systemtap的语法编写脚本,其他操作都由Systemtap自动完成。

论坛徽章:
0
发表于 2014-01-02 09:01 |显示全部楼层
1, kprobe也有。
2.使用方便是相对的,现网问题如使用systemtap需要安装一些包才行(一般现网环境不会去默认装这些运行时用不到的包),而kprobe模块拷过去直接插入,哪个方便?

个人觉得那一套语法是硬伤。

论坛徽章:
0
发表于 2014-01-02 09:05 |显示全部楼层
脚本语言和C语言编程,无非就是脚本语言少了make而已,脚本语言一样的要调测,运行效率还低。

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2014-01-02 09:32 |显示全部楼层
todaygood 发表于 2014-01-02 09:01
1, kprobe也有。
2.使用方便是相对的,现网问题如使用systemtap需要安装一些包才行(一般现网环境不会去默 ...

呵呵,对kprobe不熟,systemtap用得比较多,systemtap与kprobe同源,个人理解systemtap的设计初衷应该主要是提高易用性。

论坛徽章:
0
发表于 2014-01-02 19:09 |显示全部楼层
差很多。systemtap支援regular expression,並且和symbol file做結合。

比方說我想要hook所有drivers/usb/host/ehci-hcd.c裡面的function。沒有systemtap,你只能一個一個自己用kprobe寫上去。
有systemtap他可以幫你作search,並且幫你把kprobe的code編譯好。
  1. probe kernel.function("*@drivers/usb/host/ehci-hcd.c").call {
  2.         printf("%s --> %s\n", thread_indent(1), probefunc())
  3. }

  4. probe kernel.function("*@drivers/usb/host/ehci-hcd.c").return {
  5.         printf("%s <-- %s\n", thread_indent(-1), probefunc())
  6. }
复制代码

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
发表于 2014-01-02 22:43 |显示全部楼层
回复 1# todaygood


脚本语言做的事C都能做,为什么还要有脚本语言呢?

systemtap适合不会内核编程,C语言的人士使用,脚本语言方便。说实话对于我这种熟悉内核编程的人来说,相反systemtap还麻烦一些


搞笑了。真正Unix界出来的内核开发者(不是那些学完了C就去啃内核的人)绝大部分都熟悉某种脚本语言,而且极有可能甚于你对C语言的熟悉。

论坛徽章:
2
CU十二周年纪念徽章
日期:2013-10-24 15:41:34处女座
日期:2013-12-27 22:22:41
发表于 2014-01-02 23:13 |显示全部楼层
Systemtap是为了要达到Dtrace的效果而做出来的,我记得它底层基本全是由kprobe实现的,现在或许加上了ftrace和perf,但整体体验还是不好。

(光是想象一下它底层做的事我就头皮发麻)

Systemtap各方面来看都与Dtrace相差甚远。现在有人在做ktap,设计思路与Dtrace类似,脚本最后编译为字节码,内核里实现一个小解释器。这比Systemtap轻量多了。用独立的程序编译脚本,而不像Systemtap需要一整套GCC工具链。生成的字节码平台无关,理论上来说跨平台调试很方便。社区的反应也非常好。Greg力推这个东西,上次擅自把它加到了staging树中。不过代码没经review就进去了遭Ingo质疑,最后被revert了。但是整个讨论中,perf方面的Ingo, ftrace方面的Steven Rostedt,都支持这个东西。Linus在讨论中也未表示反对。目前来看,ktap进主线应该只是时间问题。

PS: ktap作者是华为的工程师,这个feature要是进去了,可能是中国开发者贡献中,能见度最高的一个。

https://lwn.net/Articles/551314/

http://events.linuxfoundation.or ... cojp13_zhangwei.pdf

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
发表于 2014-01-03 09:08 |显示全部楼层
tempname2 发表于 2014-01-02 23:13
Systemtap是为了要达到Dtrace的效果而做出来的,我记得它底层基本全是由kprobe实现的,现在或许加上了ftrac ...

这个工具看起来还不错,学习学习,新工具不断出,学习时间越发少,不得不感叹一下,快跟不上节奏咯~

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2014-01-03 09:58 |显示全部楼层
回复 8# tempname2


    在 某公司干, 我呸。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP