发布时间:2022-11-30 22:30
最近在调查lockless的ring_buffer的时候,发现了ftrace.
ftrace是 Linux 内核中提供的一种调试工具。使用 ftrace 可以对内核中发生的事情进行跟踪,这在调试 bug 或者分析内核时非常有用.
什么是trace-cmd – command line reader for ftrace: 请参考http://lwn.net/Articles/341902/
ftrace在2.6.28-rc2以后的Linux内核都支持的, 当然包括RHEL6(2.6.32), 我粗粗的演示下ubuntu 10.10下的使用:
$ sudo apt-get -y install trace-cmd
$ man trace-cmd-record #这个是最核心的功能,收集数据的
$ sudo trace-cmd record -e sched_switch ls > /dev/null
disable all
enable sched_switch
offset=464000
offset=466000
$ trace-cmd report
version = 6
...
cpus=2
ls-8588 [001] 16611.191996: sched_switch: 8588:120:R ==> 8587:120: trace-cmd
trace-cmd-8587 [001] 16611.192040: sched_switch: 8587:120:S ==> 8588:120: ls
Xorg-1360 [000] 16611.192868: sched_switch: 1360:120:R ==> 1979:120: alsa-sink
ls-8588 [001] 16611.192979: sched_switch: 8588:120:R ==> 1909:120: pulseaudio
...
类似的功能,当然可以用systemtap来写,但是有现成的工具总是更方便.
trace-cmd使用的模式总是先record收集数据,然后report.
trace-cmd目前支持以下插件plugins:
blk function_graph mmiotrace wakeup_rt wakeup function sched_switch nop
对于大部分的系统调优是足够的,更多的使用场景有待大家挖掘.
祝大家玩的开心!
Post Footer automatically generated by wp-posturl plugin for wordpress.
No related posts.
[React] vite2 + react17 + ts4 项目初始化遇到的问题解决
第 3 章 Ajax 动态请求破解(3.1 Ajax 简介、网页翻页方式的对比)
Rancher2.6 Monitoring Grafana 对接 LDAP
Vue项目之使用EditorConfig, Eslint和Prettier实现代码规范
Jenkins+Maven+Git+Tomcat搭建持续集成环境,自动打包部署详细教程
基于Netty,从零开发IM(二):编码实践篇(im单聊功能)
lime 模型_如何使用LIME在您的机器学习模型的预测中建立信任
通过 docker 学习 nginx,附全部配置及 API 测试,可使用 apifox 直接打开
opencv(12):cv::rectangle学习与代码演示,使用opencv画矩形/矩形框
linux软件怎么打包,如何发布打包并发布自己的Android应用(APP)
03 Blockchain Reputation-Based Consensus: A Scalable and Resilient Mechanism for Distributed Mistrus