目录
在之前的文章《USDT的预埋与性能测评》中,我们通过多次触发探针并统计用户态函数调用时间来分析USDT的性能,这种方法在编写demo时非常便捷,但在工程化的项目中,我们通常无法直接修改用户态应用程序或内核代码,这导致在分析eBPF程序本身的性能时,往往粒度比较粗。
例如当对MySQL进行探测时,我们可能部署了多个uprobe来探测SQL执行路径。但在观测性能时,只能通过sysbench等压测工具对MySQL进行压力测试,通过部署eBPF前后MySQL的QPS表现来估计eBPF的性能,但这种方式粒度比较粗。eBPF程序出现性能问题时,由于是多个uprobe同时对SQL执行链路进行探测,我们难以精确识别是哪个探针导致了性能问题。
那有没有一种工具能更直观分析eBPF程序性能问题呢?性能分析大神Brendan Gregg老东家开源的bpftop工具可完美解决eBPF程序自身性能分析问题。
项目地址:https://github.com/Netflix/bpftop