A-Tune-BPF-Collection是BPF工具集,这些BPF程序用以跟踪内核行为模式以实时细粒度地调整内核参数,达到提升系统性能的目标。
以readahead_tune
为例来介绍A-Tune-BPF-Collection中的BPF程序。
readahead_tune
包含两部分:
readahead_tune.bpf
):加载到内核的BPF program以跟踪ext4/xfs文件系统的文件读操作readahead_tune
):读取配置文件,配置BPF program的参数,随即加载BPF program到内核通过rpm命令或者yum安装A-Tune-BPF-Collection
rpm包:
# yum install A-Tune-BPF-Collection
or
# rpm -ivh A-Tune-BPF-Collection-{version}.x86_64.rpm
以readahead_tune
为例介绍A-Tune-BPF-Collection中的BPF程序程序使用:
(可选)默认配置文件会安装在/etc/sysconfig/readahead_tune.conf
,也可以自己新建配置文件,通过start_readahead_tune
命令-c|--config
选项指令配置文件路径。若未指定配置文件,则会使用默认安装的配置文件。
注意:仅支持通过完整路径名指定配置文件,相对路径会无法识别;配置文件中若存在不合法的选项配置或者配置选项缺失,都会使用该选项的默认配置值。
通过start_readahead_tune
命令启动/加载readahead_tune.bpf
BPF Program。命令使用方法可以使用start_readahead_tune -h|--help
帮助命令。
通过stop_readahead_tune
命令停止/卸载readahead_tune.bpf
BPF Program。
sudo dnf install make clang llvm libbpf-devel dwarves kernel-debuginfo bpftool -y
make
编译过程中可能遇到kenrl-debuginfo
rpm包提供vmlinux路径与uname -r
不一致的情况导致编译失败。这是由于当前运行的内核版本与kernel-debuginfo
的版本不一致。openEuler yum源的kernel版本较高,可以执行dnf update kernel
升级当前kernel到yum源的kernel版本,重启系统,kernel版本便与kernel-debuginfo
版本一致,再重新编译。
make check
执行测试用例依赖于源码构建,会自动编译。测试用例运行结果信息示例如下所示:
CHECK
PASS: tst-common_helper
Test Summary:
Unsupport: 0
Fail: 0
Pass: 1
会显示每个测试用例的执行结果,如tst-common_helper
测试用例执行成功。最后以Test Summary:
行开头总结所有测试用例执行情况。Unsupport
表示不支持在当前测试平台上运行的测试用例数目,Fail
表示失败的测试用例数目,Pass
表示成功的测试用例数目。
如果要新增对源码中目标文件中的函数进行测试,则在test
目录下新增前缀为tst-
,后半部分与测试目标文件名一致的测试文件。如要对common_helper.c
中的函数进行测试,则新建名为tst-common_helper.c
的测试文件。
测试文件中的测试用例定义在int do_test(void)
函数中,测试用例首先应该检查能否在测试平台上进行运行,如果不支持,则返回2(unsupport);测试用例运行失败返回1(fail);成功则返回0(pass)。在测试文件结尾添加#include "test/test-driver.c"
语句即可。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。