eBPF环境检查

- 操作系统的内核版本须为4.1及其以上。
- 如环境配置修改后依旧不支持,可尝试使用为openEuler 20.03(LTS)操作系统。
- 宿主机支持eBPF时,Docker容器中才可运行任务。
- 因系统性能分析使用普通用户执行,需具有/boot/config-$(uname -r)文件的读取权限,请确保该文件对普通用户可读。
检查环境配置

若需在Docker容器中运行任务,需先从宿主机拷贝内核头文件和内核编译配置文件至容器中:
docker exec 容器名 mkdir -p /lib/modules/$(uname -r) && docker cp -L /lib/modules/$(uname -r)/build 容器名:/lib/modules/$(uname -r) docker exec 容器名 mkdir -p /boot && docker cp -L /boot/config-$(uname -r) 容器名:/boot docker cp -L /proc/config.gz 容器名:/proc/config.gz
其中第二条和第三条命令请根据实际文件情况执行其中一个。
- 检验内核参数。
使用zcat /proc/config.gz或cat /boot/config-$(uname -r)查看内核参数设置,拥有eBFP能力的参数配置如下,若内核参数不一致,需重新配置后重新编译内核或重装系统。
CONFIG_BPF=y CONFIG_BPF_SYSCALL=y CONFIG_BPF_JIT=y CONFIG_HAVE_BPF_JIT=y #内核版本为4.1到4.6时 CONFIG_HAVE_EBPF_JIT=y #内核版本为4.7及以上时 CONFIG_BPF_EVENTS=y
图1 查看内核参数 - 检验内核头文件目录。
ll /lib/modules/$(uname -r)/build
查看build目录是否存在指向文件,存在并指向源码内核文件则满足条件,不存在则不满足任务所需条件。
图2 build无指向文件图3 build存在指向文件 - 若build无指向文件,可重新安装。
CentOS系统:
yum install kernel-headers kernel-headers.aarch64
Ubuntu系统可使用:
sudo apt-get install linux-headers-$(uname -r)
若依旧没有对应指向文件,可手动链接/usr/src/kernels/$(uname -r)。
父主题: 常用操作