systemtap折腾笔记
在这货上花费了不少时间,都是受了@agentzh 大神的蛊惑:) 他写的nginx-systemtap-toolkit监测的数据很有价值,对于系统优化实在是利器。
最早折腾systemtap,是在Ubuntu 12.04上搞的,内核版本是3.8.0-29-generic,流程参考官方教程。因为12.04版本比较新,所以不需要重新编译内核了。然后添加带调试信息的内核,以及相关的Linux头文件。整个过程还算顺利,就是公司网速比较慢。下载完成后,用ubuntu官方仓库自带的systemtap 1.6,却出现各种奇怪的C编译错误,于是换到了git clone下来的最新版本。这次错误信息友好了很多,但tapset的脚本跟内核的dwarf信息似乎对应不上,报semantic error: not accessible at this address [man error::dwarf]。至此,ubuntu上的systemtap只能打出hello world,其他脚本都跑不了,遂放弃。教训是,systemtap要新版,内核要老版,若用老systemtap和新内核,一般是会挂的。
对systemtap的用户态监控还是很口水,虽然我司用的是自己写的定制语言,但是-g编译后应该可以监控私有语言的脚本栈,进而分析性能瓶颈。于是,死皮赖脸抢夺了一台CentOS的机器做测试。机器版本如下:
[root@localhost systemtap]# uname -rm
2.6.-.el6.x86_64 x86_64
[root@localhost systemtap]# cat /etc/redhat-release
CentOS release 6.3 (Final)
用的systemtap版本是最新的。跟Ubuntu相比,CentOS的包管理就比较差了,内核的调试信息包需要自己手动下载安装。参考官方教程,安装debuginfo-common和debuginfo后,就可以开搞了。还好,这次不需要编译内核。安装好systemtap后,跑起来却出现这个问题:
stap -e 'probe begin { log("hello world") exit() }'
提示:
Checking "/lib/modules/2.6.32-279.el6.x86_64/build/.config" failed with error: 没有那个文件或目录
检查了一下相关的目录,/lib/modules/2.6.32-279.el6.x86_64/是一个软连接,链接到/usr/src/kernels/里去的。而2.6.32-358.23.2.el6.x86_64这个目录是真的没有,有的是2.6.32-358.23.2.el6.x86_64。谷歌了一下,这个目录是kernel-devel包的,通过yum安装的是最新的2.6.32-358.23.2.el6.x86_64,跟当前运行的内核不符。继续放狗,找到2.6.32-279.el6.x86_64的kernel-devel rpm包,安装完就有对应目录了。试了一下iotop终于成功了。
看了一下,systemtap似乎是根据写的probe编译成二进制模块,加载到内核里执行的。所以systemtap会在home目录下建立一个cache目录,避免重复编译相同的脚本。而nginx-systemtap-toolkit对Lua的栈探测,是通过监视LuaL开头的函数实现的,接下来准备按他的思路搞一下我们的私有语言。
systemtap折腾笔记的更多相关文章
- MacBook外置显卡eGPU折腾笔记
MacBook外置显卡eGPU折腾笔记 硬件选购 当今市场上个人电脑的独立显卡,基本上能选的只有NVIDIA和AMD了,如果你想买外置显卡来打游戏的话,NVIDIA和AMD的都可以,但如果是像我一样准 ...
- SystemTap 学习笔记 - 安装篇
https://segmentfault.com/a/1190000000671438 在安装前,需要知道下自己的系统环境,我的环境如下: uname -r 2.6.18-308.el5 Linux ...
- ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core
背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...
- ASP.NET Core 折腾笔记一
前言: 在ASP.NET Core 1.0时,曾折腾过一次,后因发现不了System.Data而停止. 更因VS2015提示过期Delete掉VS了,其实主要还是笔记本的硬盘空间吃紧. 快双十一了,本 ...
- Ubuntu Gnome 14.04.2 lts 折腾笔记
unity感觉不爽,于是来折腾gnome3 = = 首先去官网下载ubuntu gnome 14.04.2 lts的包(种子:http://cdimage.ubuntu.com/ubuntu-gnom ...
- 【转】Kali Linux 新手折腾笔记
原作者:http://defcon.cn/1618.html 最近在折腾Kali Linux 顺便做一简单整理,至于安装就不再多扯了,估计会出现的问题上一篇文章<VMware虚拟机安装Kali ...
- Kali Linux 新手折腾笔记
http://defcon.cn/1618.html 2014年09月29日 渗透测试 暂无评论 阅读 55,052 次 最近在折腾Kali Linux 顺便做一简单整理,至于安装就不再多扯了,估 ...
- Kivy折腾笔记
最近想用Python开发APP,选择kivy,记录过程 首先是源码安装,各种蛋疼的报错放弃了.cython高版本有问题. python3 -m pip install cython==0.23 pyt ...
- RHEL6 Systemtap 安装笔记
以 RHEL6u3 为例 1 Systemtap 安装 yum install systemtap 跟systemtap有关的有6,7个,全装上,别偷懒 就用yum安装,别傻傻的去下rpm包,吃力不 ...
随机推荐
- BZOJ 2600: [Ioi2011]ricehub
2600: [Ioi2011]ricehub Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 628 Solved: 325[Submit][Stat ...
- AlarmManager 实现闹钟的基本功能
先上效果图 这是一个利用AlarmManager做的最简单的闹钟!迟点再把重复响铃(例如星期一,星期三,重复响铃) 1.MainActivity package com.example.domeref ...
- TCP短连接TIME_WAIT问题解决方法大全
tcp连接是网络编程中最基础的概念,基于不同的使用场景,我们一般区分为“长连接”和“短连接”,长短连接的优点和缺点这里就不详细展开了,有心的同学直接去google查询,本文主要关注如何解决tcp短连接 ...
- (转) linux之sort用法
sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式: sort [-bcfMnrtk][源文件][-o 输出文件] 补充说明:sort可针对文本文件的内容,以行为单位来排序. 参 数 ...
- USACO2011Brownie Slicing巧克力蛋糕切片
Description Bessie烘焙了一块巧克力蛋糕.这块蛋糕是由R*C(1 <= R,C <= 500)个小的巧克力蛋糕组成的. 第i行,第j列的蛋糕有N_ij(1 < ...
- jsonp 跨域 能返回数据但 无法返回成功问题
apihandler.ashx?callback=eqfeed_callback:1Uncaught SyntaxError: Unexpected token : 原因在于jsonp传的数据格式不一 ...
- checkbox 设置不可更改
readonly="readonly" 设置不起作用 用 onclick="return false;"
- Linux 忘记密码解决方法
很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码即可. 步骤如下: 重启linux系统 3 ...
- AxureRP8实战手册(基础11-20)
本文目录 基础11. 设置文本框输入为密码 基础12. 设置打开选择文件窗口 基础13. 限制文本框输入字符位数 基础14. 设置文本框提示文字 基础15. 设置文本框回车触发事件 基础16. 设置元 ...
- JDK配置
一.下载和安装 二.配置环境变量 1.计算机→属性→高级系统设置→高级→环境变量 2.系统变量→新建JAVA_HOME,值为jdk的安装目录(如C:\Java\jdk1.7.0) 3.系统变量→修改P ...