bpf性能分析

bpf原理(Berkeley Packet Filter)

在操作系统内运行沙盒程序,安全效率的扩展操作系统内核的能力而不需要修改源代码或者加载内核模块。bpf不只是可以用来做性能分析,由于可以执行自己的jit编译的字节码,只要有bpf钩子(或探针)的地方都可以扩展功能(系统调用或者内核函数)。

1.将代码生成bpf字节码。
2.字节码被内核中的jit编译成二进制指令,不需要重启自动重新加载。
3.在attach点执行这段代码。
4.使用bpf map,用户空间可以共享内核空间的数据。
在这里插入图片描述

kprobes

钩子函数,内核可以attach的点。通过SEC()来设置section段。
kprobes的技术原理和调试技术类似,调试技术使用了cpu异常处理,将指令第一个字节替换成特殊指令跳转到用户注册的回调函数,返回后将指令替换回去。注册回调需要查找符号表,找到对应函数。探测点类型分为调用前调用后和内存访问出错三种。

tracepoint编程

可以嵌入代码用来跟踪或者调试目的。

xdp编程

更早获取网络包数据并处理。可以自己实现程序来避免ddos攻击。

perf event编程

perf是内核自己实现的软硬件性能分析工具。可以将bpf程序attach到perf events。

cgroup socket编程

可以将bpf逻辑attach到cgroups。

cgroup open socket编程

能够统一提供安全的访问控制的代码。

socket option编程

可以处理连接和网络。

socket map编程

可以实现负载均衡,拥塞控制。

其他能力

cgroup device编程
socket 消息推送编程
raw tracepoint 编程
cgorup socket addres 编程
socket reuseport编程
Flow Dissection 编程

xdp

在这里插入图片描述

对比perf

perf是linux在ebpf之前主流的性能分析工具,由于ebpf提供的能力更强大,ebpf能代替perf的大部分功能。

PMCs:cpu硬件(PMU)提供的程序计数器功能和采样分析功能。能够分析cpu的属性包括内存IO,cpu 周期,cache misses,底层性能静态分析。

软件计数器:统计系统调用函数调用次数

tracepoints:hook点跟踪

perf-stat perf-top perf-record perf-report perf-list

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值