
- 打开微信,搜索「软件教程管家」关注,或长按下方二维码关注
- 回复关键词 bpftop
- 公众号自动回复网盘链接,点击即可保存下载
打开微信扫一扫关注或搜索【软件教程管家】
主机上跑着一堆 eBPF 程序,哪个最吃 CPU、哪个触发最频繁、哪个平均耗时突然变长,top 看不到,bpftool 一次只能查一项。bpftop 就是给 eBPF 程序用的 top:它把所有正在运行的 eBPF 程序列成一张实时刷新的表,平均运行时间、每秒事件数、估算 CPU 占用一目了然,还能点进单个程序看指标随时间变化的曲线。本篇讲清它适合哪些排查场景、四种安装方式怎么选,以及动手之前必须先核对的几件事。
| 项目名称 | bpftop |
| 仓库地址 | jfernandez/bpftop |
| 开发语言 | C |
| 开源许可证 | Apache-2.0 |
| Star 数 | 约 2711(2026-11-13 实测) |
| 最新版本 | v0.9.1(2026-11-04 发布) |
| 核心定位 | Linux eBPF 程序实时监控工具 |
项目介绍:eBPF 程序的 top,指标只在运行时才采集
bpftop 最早由 Netflix 发布,现在由 Jose Fernandez 独立维护,Netflix 已不再参与开发。它的定位非常聚焦:只回答“当前主机上的 eBPF 程序跑得怎么样”这一个问题,不做长期存储、不做告警、不做远程采集。打开之后是一张类似 top 的表格,每一行就是一个正在运行的 eBPF 程序,列出程序 ID、类型、名称、周期平均运行时间、总平均运行时间、每秒事件数和估算 CPU 占用率,默认每秒刷新一次。
它最值得留意的是一处设计取舍:内核的 eBPF 运行时统计默认是关闭的,bpftop 只在自己运行期间通过 BPF_ENABLE_STATS 把统计打开,每秒采样一次算出平均耗时、事件速率和估算 CPU 占用,退出时随手把统计关掉。也就是说,平时不跑它就等于零开销,排查时打开才开始计费,这个取舍让它适合常驻排查工具箱,而不是常驻后台的监控代理。低于 5.8 的旧内核走 procfs 回退路径,也能看,但统计口径要先核对。
核心功能
- 实时列出全部运行中的 eBPF 程序:程序 ID、类型和名称一张表看全,不用逐个 bpftool 查询。
- 四项关键指标同屏对比:周期平均运行时间、总平均运行时间、每秒事件数、估算 CPU 利用率,哪个程序拖慢主机一眼定位。
- 单程序时间序列图形视图:选中程序按回车进入图形视图,指标随时间的变化画成曲线,突发抖动和缓慢爬升都能看出来。
- 按名称或类型过滤:按 f 键输入名称或类型,只留关心的程序,主机上程序一多就靠它缩小范围。
- 按列升序降序排序:按 s 键选列排序,想找最耗 CPU 的就按 CPU 列排,想找触发最频繁的就按事件数排。
- 关联进程信息:选中程序后显示引用它的进程名和 PID,程序归属哪个服务立刻能对上号。
- 方向键与 vim 风格导航:上下箭头或 j/k 移动,列表超出终端高度自动出滚动条,最小建议终端尺寸 80×24。
- 刷新间隔可调:-d 或 –delay 指定秒数,1 到 3600 秒之间,默认 1 秒。
- 日志进 systemd journal:有 systemd/journald 时日志写入系统日志,可用 journalctl 按 _COMM=bpftop 过滤查看。
适用场景对比
| 场景 | 推荐程度 | 理由 |
|---|---|---|
| 线上主机突然变慢,怀疑某个 eBPF 程序拖后腿,要现场定位 | 优先选它 | 这正是项目的主场景:实时表加排序,三分钟就能锁定嫌疑程序 |
| 刚上线一个 eBPF 探针,想看它的平均耗时和触发频率是否合理 | 优先选它 | 周期平均耗时与每秒事件数同屏,灰度观察的成本最低 |
| 某个程序的 CPU 占用忽高忽低,想看变化趋势而不是瞬时值 | 优先选它 | 单程序图形视图画出时间序列,抖动和爬升一目了然 |
| 要 7×24 监控、留历史曲线、超阈值告警 | 不必用它 | 它不存历史、不告警,退出即停,长期监控应选 Prometheus 之类的方案 |
| 要跨多台主机集中看 eBPF 程序状态 | 不必用它 | 它是单机交互式工具,没有远程采集与集中上报能力 |
一句话取舍:如果需求是单机、交互式、实时看清 eBPF 程序的性能表现,优先选它;如果需求还包括历史存储、告警编排或多机集中,先确认它不在能力边界内,再另选长期监控方案。
上手步骤
- 先核对三项前置条件:Linux 内核 5.8 或更高版本(可用 uname -r 查看)、有 sudo 权限、系统已装 libz 和 libelf(Ubuntu/Debian 用 apt-get install zlib1g-dev libelf-dev),缺一项都先补齐再装。
- 按环境选一种安装方式:最省事的是官方安装脚本,自动按 x86_64 或 aarch64 拉最新发布包并校验 SHA-256,默认装到 ~/.local/bin,root 运行则装到 /usr/local/bin;Fedora 用 sudo dnf install bpftop,Arch 用 sudo pacman -S bpftop,Nix 用 nix profile install nixpkgs#bpftop。
- 先在有 eBPF 程序的主机上跑一次:执行 sudo bpftop,确认列表里出现程序;如果列表为空,先用 bpftrace 或 bcc-tools 加载一个 eBPF 程序再看,空列表本身是正常现象。
- 用排序锁定最可疑的程序:按 s 键按估算 CPU 占用排序,再按 f 键按名称过滤到目标程序,对照周期平均运行时间与每秒事件数判断它是真慢还是单纯触发多。
- 对可疑程序进图形视图验证:选中后按回车看时间序列曲线,确认占用是持续偏高还是偶发尖峰,再决定下一步是优化程序还是调整触发条件。
用好之前先定好的 5 个要点
- 刷新间隔先按 1 秒默认跑:-d 改成 2 秒或 5 秒能降刷新开销,但突发尖峰也可能被平滑掉,先默认 1 秒看清全貌,需要长时间盯守再放宽间隔。
- 先分清周期平均与总平均:周期平均反映最近一个采样窗口的表现,总平均是累计值;定位突发问题看周期平均,评估长期负担看总平均,两个数不要混着读。
- 过滤先于排序:主机上程序一多,先按 f 键按名称或类型过滤到目标程序再排序,直接在全表里排序容易被无关程序的数值干扰判断。
- 图形视图按回车进、按回车或 q 回:进出图形视图的键位要先记住,排查中途误触退出会关掉统计采样,重新进表要等下一个采样周期。
- 日志先确认 journald 是否可用:有 systemd/journald 时用 journalctl _COMM=bpftop 查看,-f 跟踪实时日志,-b 只看本次启动后的记录;没有 journald 时它会静默回退,不要误以为日志丢了。
注意事项
- 必须 sudo 运行:eBPF 统计采集是特权操作,没有 sudo 权限会直接提示必须以 root 运行,不适合作为完全无特权的监控程序部署。
- 只支持 Linux:它依赖 Linux 内核的 BPF_ENABLE_STATS,其他操作系统不在支持范围内。
- 旧内核走 procfs 回退:低于 5.8 的内核可用 procfs 回退路径,但统计口径与新内核不完全相同,跨内核对比数值前要先核对口径。
- 二进制动态链接 libz 和 libelf:目标系统缺少这两个库时先补齐依赖再运行,否则会报缺库错误。
- Windows 终端不适用:它是 Linux 终端工具,显示依赖 ANSI 颜色与足够大的终端尺寸,最小建议 80×24,太小的终端会显示不全。
- 它只展示,不操作:bpftop 不启停、不卸载、不修改任何 eBPF 程序,要管理程序生命周期仍需 bpftool 或加载工具本身。
常见问题
打开后一个程序都没有,是装坏了吗?
不是。没有程序显示通常说明当前主机上没有已加载的 eBPF 程序,加载一个 eBPF 程序后再打开就能看到。
它和 bpftool 有什么区别?
bpftool 是一次查一项的命令行工具,bpftop 是实时刷新的总览表;要逐项深挖用 bpftool,要快速定位谁最耗资源用 bpftop。
它和 ebpfexplorer 有什么区别?
ebpfexplorer 是浏览已加载 eBPF 程序、maps 与 map 条目的交互式工具,侧重“有什么、里面是什么”;bpftop 侧重“跑得怎么样”,看的是耗时、事件速率与 CPU 占用,两者分工互补。
一定要用安装脚本吗?
不用,安装脚本只是最省事的路径;Fedora、Arch 与 Nix 都有官方仓库包,源码构建按 README 走 cargo build –release,构建前先装 zlib1g-dev、libelf-dev、clang 与 libbpf-dev。
退出后统计还会继续采集吗?
不会。bpftop 退出时会关掉它打开的统计采集,主机恢复到默认的零统计开销状态。
能固定装某个版本吗?
能,安装脚本支持 –version 参数指定版本标签,也支持 –bin-dir 指定安装目录,升级前建议先固定版本再验证。
适合谁,不适合谁
适合需要在 Linux 主机上观察 eBPF 程序运行情况、定位程序性能变化,或做系统级交互式排查的开发者、运维人员和内核相关工程师,尤其适合主机上已经跑着多个 eBPF 程序、又想快速知道谁最耗资源的人。如果你平时靠 bpftool 一条命令查一项,bpftop 值得优先试用。
不适合的场景也很明确:只需要长期监控、历史曲线与告警的人应选专业监控方案;要跨多台主机集中管理的人需要另找采集上报链路;没有 sudo 权限、或主机根本不是 Linux 的场景,它直接不在适用范围内。
| 方案 | 起点 | 适合谁 |
|---|---|---|
| bpftop | 实时总览 eBPF 程序的耗时、事件速率与 CPU 占用 | 单机现场排查、灰度观察 eBPF 程序性能的人 |
| bpftool | 系统自带,逐项查询程序与 map 详情 | 要深挖单个程序或 map 内容的人 |
| ebpfexplorer | 交互式浏览已加载程序、maps 与 map 条目 | 想看清程序结构与 map 数据的人 |
| Prometheus 等长期监控 | 历史存储、告警编排、多机集中 | 要 7×24 监控与值班告警的团队 |
GitHub 国内访问较慢,如打不开可多刷新几次

关注「软件教程管家」
回复软件名即取即下:网盘下载链接 + 提取码,一步直达,不用再跳转。
本站资源仅供个人学习交流,请勿用于商业用途。软件与资料版权归原作者所有;如有侵权,请通过公众号「软件教程管家」联系我们,我们将在 24 小时内下架处理。查看免责声明 ›
文章推荐
标签推荐
这款软件怎么样?
平均 暂无评分(0 人评)
取链次数:0
评分与投票来自真实访客,从 0 开始累计;觉得有用就点一下,帮更多人判断这款软件值不值得下。






