栈数据的采集与使用 - ebpf番外篇之解析perf_event
在研究stackplz的代码时发现其是用perf_event_open
进行栈数据的采集,并且因为libbpf
的perf_event_open
并没有带上PERF_SAMPLE_STACK_USER
标记所以还要修改libbpf
代码,感觉总体实现并不是很好并且perf_buffer
性能也不咋地,所以研究有无其他获取栈数据的方式
栈数据的采集与使用 - ebpf番外篇之解析perf_event
在研究stackplz的代码时发现其是用perf_event_open
进行栈数据的采集,并且因为libbpf
的perf_event_open
并没有带上PERF_SAMPLE_STACK_USER
标记所以还要修改libbpf
代码,感觉总体实现并不是很好并且perf_buffer
性能也不咋地,所以研究有无其他获取栈数据的方式
顶不住了还是go吧 - ebpf-go框架之cilium-ebpf
被libbpf交叉编译折磨烂了,具体来说就是libbpf只支持gnu/glibc,但是需要用到的unwindstack库又需要ndk-clang来提供很多安卓的api,两个实在没法编到一起,只能迁移到go然后把unwindstack以cgo动态库的形式加入到项目中
连接用户与内核 - ebpf之ringBuffer与全局变量
还在用perf Buffer? ringBuffer真王朝了
基本上所有设备都能用的常见挂载点,目前考虑6.1内核,可惜的是pixel 6 的6.1内核还不支持fentry/fexit
这篇其实算是ebpf0x0