Kernel (内核程序):内核中的 BPF 字节码负责在内核中执行特定事件,基于特定场景需要,也会将执行的结果通过 Maps 或者 Perf-Event 事件发送至用户空间。 3、内核中运行的 BPF 字节码程序可以使用两种方式将测量数据回传至用户空间,具体,Maps 方式可用于将内核中实现的统计摘要信息(比如测量延迟、堆栈信息)等回传至用户空间;Perf-event 则用于将内核采集的事件实时发送至用户空间
分为用户空间程序和内核程序两部分: 用户空间程序负责加载 BPF 字节码至内核,如需要也会负责读取内核回传的统计信息或者事件详情 内核中的 BPF 字节码负责在内核中执行特定事件,如需要也会将执行的结果通过 maps 或者 perf-event
维度 cBPF eBPF 内核版本 Linux 2.1.75(1997年) Linux 3.18(2014年)[4.x for kprobe/uprobe/tracepoint/perf-event] 分为用户空间程序和内核程序两部分: 用户空间程序负责加载 BPF 字节码至内核,如需要也会负责读取内核回传的统计信息或者事件详情; 内核中的 BPF 字节码负责在内核中执行特定事件,如需要也会将执行的结果通过 maps 或者 perf-event 内核中运行的 BPF 字节码程序可以使用两种方式将测量数据回传至用户空间 maps 方式可用于将内核中实现的统计摘要信息(比如测量延迟、堆栈信息)等回传至用户空间; perf-event 用于将内核采集的事件实时发送至用户空间
Space 回传的统计信息或者事件详情; 2、Kernel Space 中的 BPF 字节码负责在 Kernel Space 中执行特定事件,如需要,也会将执行的结果通过 maps 或者 perf-event
eBPF分用户空间和内核空间,用户空间和内核空间的交互有2种方式: BPF map:统计摘要数据 perf-event:用户空间获取实时监测数据 如上,一般eBPF 的工作逻辑是: BPF Program
eBPF 的对比: 纬度 cBPF eBPF 内核版本 Linux 2.1.75(1997 年) Linux 3.18(2014 年)[4.x for kprobe/uprobe/tracepoint/perf-event
维度 cBPF eBPF 内核版本 Linux 2.1.75(1997 年) Linux 3.18(2014 年)[4.x for kprobe/uprobe/tracepoint/perf-event 分为用户空间程序和内核程序两部分: 用户空间程序负责加载 BPF 字节码至内核,如需要也会负责读取内核回传的统计信息或者事件详情 内核中的 BPF 字节码负责在内核中执行特定事件,如需要也会将执行的结果通过 maps 或者 perf-event 在确认字节码安全后将其加载对应的内核模块执行 4、内核中运行的 BPF 字节码程序可以使用两种方式将数据回传至用户空间: maps 方式可用于将内核中实现的统计摘要信息(比如测量延迟、堆栈信息)等回传至用户空间; perf-event
用户空间程序负责加载 BPF 字节码至内核,或负责读取内核回传的统计信息或者事件详情,进行相关的数据处理和控制;内核中的 BPF 字节码负责在内核中执行特定事件,如需要也会将执行的结果通过 maps 或者 perf-event
perf-event:许使用 pef 工具监控 cgroup。