51 | 案例篇:动态追踪怎么用?(下)
该思维导图由 AI 生成,仅供参考
perf
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了动态追踪方法在排查性能问题中的应用,重点介绍了perf工具的使用。perf工具不仅可以分析CPU热点函数,还可以分析硬件事件,并且可以动态追踪感兴趣的事件。与strace相比,perf trace基于内核事件,性能更好,因此更适合用于性能敏感的应用程序。文章还介绍了如何使用perf工具跟踪用户空间的库函数,以及如何从调试符号表中查询函数的参数。此外,还介绍了eBPF和BCC的使用,这两种工具相对于ftrace和perf更加灵活,但使用门槛较高。最后,文章还简要介绍了SystemTap和sysdig等动态追踪工具,以及如何根据具体场景选择合适的工具。总的来说,本文通过实际案例详细介绍了perf工具的功能和使用方法,对读者了解动态追踪在性能问题排查中的应用具有很好的指导意义。
《Linux 性能优化实战》,新⼈⾸单¥68
全部留言(26)
- 最新
- 精选
- xfan我想知道ebpf程序编写有什么好点的学习资源吗,有种心有余而力不足的感觉
作者回复: 可以看到这个文档:https://docs.cilium.io/en/stable/bpf/
2019-03-268 - lyonger老师,最近kvm虚拟机器,xfs文件系统下使用devmapper的驱动,每次使用docker跑任务ci build的时候,用iotop查看发现runner机器的[loop1]、[loop2]、[kworker/u32:2]的io 99%,任务中止了以后就没有发现异常了。我用perf定位到了热点函数是xfsaild、xfs_inode_item_push。用ftrace和trace-cmd要先知道运行的命令。那么2个疑问: 1、有办法直接查看某个热点函数里的执行逻辑吗?在不知道执行什么命令的情况下,我只知道某个热点函数名称 2、可以使用的探针有哪些,是怎么查看呢? 期待您的回复,多谢。
作者回复: 1. 可以先试试火焰图,然后跟着火焰图调用堆栈去查询内核源码。 2. 探针的话,工具里面都提供了探针查询的命令,比如 perf list
2019-07-104 - Geek_007老师你好,我在使用 perf trace 命令时发现,perf trace 追踪时,不能打印出打开文件的文件名,尽管我已经使用 perf probe 将filename 加入,但是依然无法打印出文件名。另外我使用 perf trace -e probe:do_sys_open ,依然还是记录所有的事件,请问老师,是我使用的有问题?还是其他问题?
作者回复: 应该是 perf trace -e fs:do_sys_open
2019-04-142 - manatee想请教下老师,在容器环境下使用以上动态追踪技术有哪些注意点和坑呢
作者回复: 最主要的是调试信息问题,容器进程和依赖环境跟主机在不同namespace中,很多工具可能无法正确找出相应的符号表
2019-06-061 - ichen# perf probe perf: 'probe' is not a perf-command. See 'perf --help'.
作者回复: 升级版本试试?
2019-03-231 - AceslupK动态追踪好难
作者回复: 可以继续看一下eBPF专栏😊
2022-02-28 - Michael调试符号表安装不了 root@iZ94lcu45k0Z:~# apt-get install linux-image-`uname -r`-dbgsym Reading package lists... Done Building dependency tree Reading state information... Done E: Unable to locate package linux-image-4.15.0-72-generic-dbgsym E: Couldn't find any package by glob 'linux-image-4.15.0-72-generic-dbgsym' E: Couldn't find any package by regex 'linux-image-4.15.0-72-generic-dbgsym'
作者回复: 是Ubuntu系统吗?如果是的话,可以参考它的官方文档 https://wiki.ubuntu.com/Debug%20Symbol%20Packages
2020-07-18 - lyonger我昨天查到了问题根源,发现docker对于使用存储驱动有选择推荐的说明,那个问题是存储驱动问题导致,通过热点函数和调试发现改成overlay2后loop内核线程的io几乎没有了。业务也正常了。但是那2个问题,期待老师有空后给予解答,多谢。
作者回复: 👍
2019-07-11 - york# perf probe -x /bin/bash -V readline The /bin/bash file has no debug information. Rebuild with -g, or install an appropriate debuginfo package. Error: Failed to show vars. 这个问题怎么解?
作者回复: 要安装debuginfo的,先网络搜索查查
2019-03-28 - cliff(亮剑)有没有讲Linux汇编和GDB的一期?
作者回复: sorry,没有。这些更多的用在调试程序错误而不是性能优化中
2019-03-24