当前位置: 首页 > news >正文

如何对 eBPF 代码进行性能分析?实例展示完整流程

如何对 eBPF 代码进行性能分析?实例展示完整流程

在运行 eBPF 工作负载或编写 eBPF 代码时,通常希望衡量其对性能的影响。本文通过实例展示对 eBPF 代码进行性能分析的方法。

例子目标是测量文件打开操作性能,代码使用 eBPF 中的文件打开钩子,衡量添加该钩子的性能开销。为找出性能瓶颈,需依赖最少的简单 C 语言测试工具测量文件打开性能,给出了示例代码。代码目标是保持简单,在热缓存条件下重复打开同一文件,减少无关变化,帮助确定 p50/p99 指标,调用 `syscall(SYS_openat, …)` 而非 libc 的 `openat()` 包装函数,丢弃前 10% 结果作为预热期数据。测试工具输出文件打开次数及每次打开时间,用于测量添加 eBPF 钩子前后的性能变化。

环境设置

对 eBPF 代码进行性能分析时,希望 `perf` 工具能解析符号,需运行命令 `sudo sysctl -w net.core.bpf_jit_enable=1` 和 `sudo sysctl -w net.core.bpf_jit_kallsyms=1`,启用 JIT 编译并暴露 BPF 符号,使 `perf` 报告显示程序名称。检查符号是否出现在 `perf` 工具中,可运行 eBPF 代码并使用相关命令,检查 `lsm` 是因为测量 LSM 钩子。因使用自定义内核版本,`perf` 不在标准路径,本示例安装路径为 `PERF=/usr/lib/linux-tools/6.8.0-134-generic/perf`。

性能测量

设置好工具后,第一步在不运行 eBPF 代码时测量,用 C 代码打开 `/etc/hostname` 文件并输出结果到文件计算 p50/p99 指标,使用命令 `sudo taskset -c 3 chrt -f 99 ./bench /etc/hostname 100000 > /tmp/samples.txt `,`taskset -c 3` 锁定执行到 `CPU 3` 减少干扰,`chrt -f 99` 赋予高 CPU 优先级,C 代码丢弃前 10% 数据,文件应包含 90,000 个样本。

接下来运行 eBPF 代码并执行命令 `sudo $PERF record -g --call-graph fp -e cycles:k -F 997 -o ~/perf.data -- taskset -c 3 chrt -f 99 ./bench /etc/hostname 200000 > /tmp/samples.txt`,各选项有不同作用。运行后用命令 `sudo "$PERF" report -i ~/perf.data --stdio --sort comm,dso,symbol > perf.txt ` 对数据排序。给出 `perf.txt` 示例输出,显示 `bpf_lsm_file_open` 及其尾调用时间是性能瓶颈,该部分处于热点路径,减少 CPU 周期分配对系统性能影响显著。

本文关注性能分析方法,开销取决于钩子功能,不讨论具体数值,专注获取数据方法。通过上述步骤可分析时间花费处,结合 C 代码 p50/p99 指标对代码进行性能调优,识别 eBPF 代码对性能的影响并找出优化地方,优化方法如缓存数据或设计更好算法。

http://www.jsqmd.com/news/1288030/

相关文章:

  • 自动驾驶安全评估:Waymo事故率低68%背后的技术真相
  • GetQzonehistory:让时光倒流的终极记忆守护者
  • 别再盲目采购AI教育系统!资深CTO揭秘:真正产生教学闭环的6个技术-场景匹配关键点
  • Bluno Beetle微型蓝牙控制器:从Arduino无线通信到物联网原型开发实战
  • MagicCFG Reloaded:革命性iOS设备SysCFG编辑工具的技术突破
  • Robots.txt 配置错误修复 蜘蛛不来抓页面?用这2招轻松解决
  • Elasticsearch运行时字段与ES|QL查询优化实践
  • Arduino传感器扩展板设计:解决多传感器接口、供电与信号调理难题
  • PUBG罗技鼠标宏自动识别压枪:智能游戏辅助的完整指南
  • 柯里 - 霍华德对应关系揭示:类型检查器为何可能出错及证明辅助工具局限
  • 3分钟为Word添加APA第七版引用样式:告别手动格式调整的烦恼
  • Hermes Agent 技巧与最佳实践
  • UE5自定义配置文件:JSON与反射系统实现数据驱动配置管理
  • 为什么你的AI库存系统总在促销季崩盘?——Gartner认证架构师拆解6大隐性失效节点
  • 【国家级AI判案辅助系统白皮书首发】:涵盖刑法/民商事/行政三大领域,仅限前500名法律科技从业者申领
  • 这App能让你没网也能跟人聊天,一夜之间炸了
  • Unity UGUI Button源码深度解析:从事件系统到交互实现
  • Windows 11文件资源管理器终极标签页解决方案:ExplorerTabUtility完全指南
  • 前端无障碍的持续集成方案:从代码提交到生产环境的完整检查链
  • HunterPie终极指南:3分钟打造你的《怪物猎人:世界》智能狩猎助手
  • Pokémon Essentials完整指南:零基础制作宝可梦同人游戏的终极教程
  • VR-Reversal:三步将专业VR视频变为普通2D的终极方案
  • 椎间盘退变研究核心体外模型:武汉云克隆大鼠纤维环细胞五大产品优势
  • 170、运动相机影像调优:高动态、高帧率与电子防抖的协同优化
  • 微信机器人免费版(微信机器人免费版能用多久)
  • 显卡驱动彻底清理终极指南:Display Driver Uninstaller (DDU) 免费解决方案
  • 【国家康复机器人临床指南(2024试行版)核心配套】:AI训练指导系统准入评估12项硬指标全解读
  • 普宁船埔镇黄金回收黄金手表怎么算|金壳表带和机芯如何拆分估价 - 品牌观察
  • 数据分析师成长路径图:从 SQL Boy 到数据架构师的技能阶梯
  • 基于Arduino的智能臭氧发生器控制系统设计与实现