我们在探索linux内核的时候,经常需要调整下变量的值,看它对系统的影响。如果这个值没有透过/proc来修改的话,那只能编译内核。这个步骤是非常繁琐的。现在我们有systemtap这个利器来帮忙了。
演示如下:
我们通过修改过
extern int sysctl_tcp_fin_timeout;的值来达到目的。是因为这个值是proc导出的 我们好验证是否成功。
root@localhost ~]# cat /proc/sys/net/ipv4/tcp_fin_timeout
15000
[root@localhost ~]# cat test.stp
probe begin
{
printf("ready go\n");
}
probe kernel.function("do_tcp_setsockopt")
{
$sysctl_tcp_fin_timeout = $1
printf("sysctl_tcp_fin_timeout = %d\n", $sysctl_tcp_fin_timeout);
exit()
}
[root@localhost ~]# stap -g test.stp 18000
ready go
这个时候 stap在运行, 只是还没有触发do_tcp_setsockopt.
现在我们来触发
[root@localhost ~]# erl
Erlang R13B02 (erts-5.7.3) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]
Eshell V5.7.3 (abort with ^G)
1> {ok, LSock} = gen_tcp:listen(0, []).
{ok,#Port<0.437>}
2>
2> inet:setopts(LSock, [{nodelay,true}]).
ok
3>
Ok,这时候回头可以看到stap打出来以下:
sysctl_tcp_fin_timeout = 18000
我们来验证下:
root@localhost ~]# cat /proc/sys/net/ipv4/tcp_fin_timeout
18000
OK,成功。
Tips:
1. stap对全局变量的写需要-g guru模式。
2. 全局变量必须在一个单元内的函数里面才可以修改, 而且必须是在内核上下文。
分享到:
- 2009-10-29 19:06
- 浏览 2015
- 评论(3)
- 论坛回复 / 浏览 (3 / 3021)
- 查看更多
相关推荐
Linux内核调试新秀SystemTap.pdf
SystemTap使得动态收集Linux内核信息和性能数据变得轻而易举,这就使人可以从繁琐的数据采集中解放出来,而专注于数据的处理和分析,这无疑 是内核开发人员和系统管理人员的福音。随着越来越多用户的体验,越来越多...
用systemtap研究内核 用systemtap研究内核 用systemtap研究内核 用systemtap研究内核 用systemtap研究内核
本文主要介绍在ubuntu平台 + 自定义内核上如何安装systemtap工具包及解决编译加载运行过程中的一些问题,如何利用systemtap工具监测分析内核函数,内核模块及用户态程序。
基于SystemTap的Linux服务器性能分析系统的设计与实现.pdf
SystemTap 是内核开发人员和系统管理员的福音,因为这使得他们可以通过编写或者重用简单的脚本来收集内核的实时数据,而不需要再忍受修改源码、编译内核、重启系统的漫长煎熬。本文介绍了 SystemTap 的安装、使用和...
linux内核调试分析指南--下篇 ***第二部分:内核分析*** 内核组织层次和复杂度 内核层次 内核复杂度 复杂度隔离 gdb在内核分析中的用途 数据验证 界面剥离 参数记忆 路径快照 长程跟踪 整理思路 内核编码的艺术 信息...
systemtap是什么?如何通过systemtap对应用程序内核程序进行调试?如何编写运行systemtap脚本?
讲述了systemTap的实现原理,以及手把手教你怎样搭建一个systemTap环境用于debug linux内核。很权威的官方文档
動態 Linux kernel 測試工具:SystemTap
Red Hat Enterprise Linux 6 SystemTap Tapset Reference For SystemTap in Red Hat Enterprise Linux 6
Red Hat Enterprise Linux 6 SystemTap Beginners Guide Introduction to SystemTap
很全面详细的讲解了systemtap脚本编写基础语法,很好的入门文档
systemtap 入门 通过kernel预留的探针位置,跟踪kernel事件,统计内核系统调用和性能数据。
systemtap是Linux下面一个非常好用的探测工具,这是作者使用systemtap的日记,比较具有参考价值。
-目前在完成的工作任务描述研究/调试内核调试工具集锦,包括debugfs,trace,gdb,systemtap的介绍和使用研究/模式内核设计的奇技淫巧,介绍内核中使用的一些高级语法技巧和设计思路研究/内核/数据结构介绍内核中...
node-stap, 使用SystemTap分析 node.js 程序的工具 概要用于... 使用SystemTap收集和执行JavaScript重发,通过遍历V8堆栈和堆来提取人读名。 使用包装器脚本和节点 stackvis 生成文本或者 HTML flamegraphs 。 还可以
linux 调试神器,linux 调试神器,linux 调试神器,linux 调试神器
systemtap script examples , cross compile from x86 to arm.