随笔分类 -  Linux trace/perf/ebpf/bcc tools

主要分析linux内核中各种性能分析工具的使用技巧和原理
摘要:前言 很惭愧,搞了这么久的linux开发,之前测试无论是用ftrace还是perf也好,都没有认真的去了解tracepoint的实现,这次正好 开发的代码中需要设计一个tracepoint,便于后期调试使用,所以趁此机会,了解下tracepoint在内核里面的编写。 你真的知道trace的原理吗? 阅读全文
posted @ 2021-04-18 00:04 haoxing990 阅读(2987) 评论(0) 推荐(0)
摘要:perf监控多事件 阅读全文
posted @ 2021-04-15 20:17 haoxing990 阅读(1001) 评论(0) 推荐(0)
摘要:下载源码: git clone https://kernel.googlesource.com/pub/scm/devel/pahole/pahole 下载libbpf源码: git clone https://github.com/libbpf/libbpf 屏蔽pahole下CMakeLists 阅读全文
posted @ 2020-09-17 10:47 haoxing990 阅读(2116) 评论(0) 推荐(0)
摘要:先了解什么是off-cpu On-CPU: where threads are spending time running on-CPU. Off-CPU: where time is spent waiting while blocked on I/O, locks, timers, paging 阅读全文
posted @ 2020-01-17 01:09 haoxing990 阅读(3284) 评论(0) 推荐(0)
摘要:pidpersec从字面意思来了,就是个每秒pid产生的数目。 这个家伙功能较为单一,做用就是统计每秒通过fork产生的pid数目。 这家伙没有help功能,所以其功能十分单一。 阅读全文
posted @ 2020-01-16 23:23 haoxing990 阅读(254) 评论(0) 推荐(0)
摘要:runqlen从字面意思,很简单的看出其是统计运行队列的长度的 废话少说,从help开始 ./runqlen 显示每一次采样时运行队列的长度 当队列长度为8时,引发时延 这个显示队列长度为7的次数,说明任务还是比较频繁的 ./runqlen -C 显示每一个cpu的运行队列的矩形图 从图中可以看出, 阅读全文
posted @ 2020-01-12 12:47 haoxing990 阅读(688) 评论(0) 推荐(0)
摘要:runplat的作用在调度性能分析这块十分的重要,其作用是主要检测一个tasks从运行队列中到运行需要等待的时延。 老样子,先从help说起: ./runqlat -m 5 3 以每5秒的形式时延情况,一共线上三次 ./runqlat -mp 4505 1 仅显示pid为4505的时延,并且每1毫秒 阅读全文
posted @ 2020-01-11 01:37 haoxing990 阅读(1342) 评论(0) 推荐(0)
摘要:从funccount的字面意思可以看出,其作用在于统计函数被调用的次数。 废话少说,先看help信息 ./funccount 'vfs_*' 用于显示vfs_*类函数调用次数 ./funccount 'tcp_*' 用于显示tcp类函数调用次数 ./funccount -p 1442 /home/u 阅读全文
posted @ 2020-01-07 00:47 haoxing990 阅读(1301) 评论(0) 推荐(0)
摘要:笔者在使用funcslower这个函数时,发现其功能相比funclatency对时间更加具体化,对于想知道某个函数执行时间分布情况时, 采用funclatency是个不错的选择,但是对于急切想知道系统中某个函数被执行的时间时,使用funcslower再方便不过了。 funcslower字面意思,函数 阅读全文
posted @ 2020-01-05 22:39 haoxing990 阅读(800) 评论(0) 推荐(0)
摘要:softirqs顾名思义,用于跟踪软中断事件,主要用于软中断处理时延的跟踪 老样子,看下help帮助 下面举例分析之: ./softirqs ./softirqs -d ./softirqs -NT 1 每隔1s显示软中断时延,并打印时间戳 阅读全文
posted @ 2020-01-01 22:12 haoxing990 阅读(841) 评论(0) 推荐(0)
摘要:hardirqs从字面意思我们基本就可以知道是其作用肯定与硬中断相关 还是老样子,先hardirqs --help查看下其支持哪些功能: 从help来看,hardirqs功能支持过于单调,甚至没法支持单独跟踪某一个硬中断的功能,这块可能让人觉得很无语,但是这么做原因是为什么呢? 笔者认为主要有两个 阅读全文
posted @ 2020-01-01 21:01 haoxing990 阅读(491) 评论(0) 推荐(0)
摘要:funclatency从字面意思就可以知道其作用是获取函数的执行时延(这里的时延可不是函数被延时了多长时间,而是函数执行了多长时间) 先funclatency --help查看下其支持的功能有哪些? 目前在用funclatency追踪函数执行时长时,有一个好处是可以直观的显示函数在某一段时间内运行情 阅读全文
posted @ 2019-12-31 00:44 haoxing990 阅读(1439) 评论(0) 推荐(0)
摘要:最近学习bcc-tools工具的使用,发现单单会使用还是不行,必须了解到其深层次的原理,所以使用该工具的时候,加了-v指令,分析了下bcc的调用流程,大致如下: 从内容来看,采用的kprobe探测功能实现,下面就简短介绍下kprobe的实现原理,后面到bcc熟悉的差不多后再结合bcc相关代码讲其是怎 阅读全文
posted @ 2019-12-29 23:16 haoxing990 阅读(736) 评论(0) 推荐(0)
摘要:profile是用于追踪程序执行调用流程的工具,类似于perf中的-g指令 相比perf -g而言,profile功能化更加细分,可以根据需要选择追踪层面,例如-U(用户要调用流程) -K (内核态调用流程) 下面具体介绍该工具的使用 采用profile --help,我们可以看到如下介绍: 下面对 阅读全文
posted @ 2019-12-22 11:47 haoxing990 阅读(2041) 评论(0) 推荐(0)