前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高性能:6-bpftrace工具介绍【bpf performance tools读书笔记】

高性能:6-bpftrace工具介绍【bpf performance tools读书笔记】

作者头像
保持热爱奔赴山海
发布2020-03-06 13:29:17
1.5K0
发布2020-03-06 13:29:17
举报
文章被收录于专栏:饮水机管理员饮水机管理员

bpftrace是基于BPF和BCC构建的开源跟踪程序。与BCC一样,bpftrace附带了许多性能工具和支持文档。但是,它还提供了高级编程语言,使您可以创建功能强大的单行代码和简短的工具。

例如,使用bpftrace one-liner将vfs_read() 返回值(字节或错误值)汇总为直方图:

# bpftrace -e 'kretprobe:vfs_read { @bytes = hist(retval); }'

代码语言:javascript
复制
Attaching 1 probe...
代码语言:javascript
复制
^C
代码语言:javascript
复制
@bytes:
代码语言:javascript
复制
(..., 0)             223 |@@@@@@@@@@@@@                                       |
代码语言:javascript
复制
[0]                  110 |@@@@@@                                              |
代码语言:javascript
复制
[1]                  581 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@                 |
代码语言:javascript
复制
[2, 4)                23 |@                                                   |
代码语言:javascript
复制
[4, 8)                 9 |                                                    |
代码语言:javascript
复制
[8, 16)              844 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@|
代码语言:javascript
复制
[16, 32)              44 |@@                                                  |
代码语言:javascript
复制
[32, 64)              67 |@@@@                                                |
代码语言:javascript
复制
[64, 128)             50 |@@@                                                 |
代码语言:javascript
复制
[128, 256)            24 |@                                                   |
代码语言:javascript
复制
[256, 512)             1 |

bpftrace是使用自定义单行代码和简短脚本的临时工具的理想选择,而BCC是复杂工具和守护程序的理想选择。

image.png
image.png

bpftrace与其它可观测性工具的对比

l perf

bpftrace提供了一种简洁的高级语言,而perf脚本语言则是冗长的。

perf通过perf记录和内存摘要模式(例如perf top)以二进制格式支持有效的事件转储。

bpftrace支持有效的内核内摘要,例如自定义直方图,而perf的内置内核内摘要仅限于计数(perf stat)。

可以通过运行BPF程序来扩展perf的功能,尽管不能使用bpftrace之类的高级语言来实现。

l Ftrace

bpftrace提供类似于C和awk的高级语言,而Ftrace具有其自己的特殊语法。Ftrace具有较少的依赖性,使其适合于小型Linux环境。Ftrace还具有检测模式,例如到目前为止的功能计数除了bpftrace使用的事件源之外,还进行了更多优化。(我的Ftrace funccount当前的启动和停止时间比bpftrace更快,并且运行时开销也较低。)

l Systemtap

bpftrace和SystemTap均提供高级语言。

bpftrace基于内置Linux技术,而SystemTap添加了自己的内核模块,事实证明,这些模块在RHEL以外的系统上都不可靠。正如bpftrace所做的那样,SystemTap支持BPF后端的工作已经开始,这应该使其在其他系统上更可靠。SystemTap当前在其库(磁带集)中具有更多辅助功能,可用于检测不同的目标。

l Lttng

LTTng优化了事件转储,并提供了用于分析事件转储的工具。与bpftrace相比,这种性能分析方法与bpftrace不同,后者专门用于临时实时分析。

l 应用程序自带的特定工具

特定于应用程序和运行时的工具仅限于用户级别的可见性。bpftrace还可以检测内核和硬件事件,从而确定那些工具无法解决的问题根源。这些工具的优点是它们通常是针对目标应用程序或运行时量身定制的。MySQL数据库分析器已经了解如何检测查询,而JVM分析器已经可以检测垃圾收集。在bpftrace中,您需要自己编写此类功能的代码。

bpftrace推荐的几个相关工具

image.png
image.png

bpftrace工具具有许多共同点:

  • 他们解决了现实世界中的可观察性问题。
  • 它们被设计为以root用户身份在生产环境中运行。
  • 每个工具都有一个手册页(在man / man8下)。
  • 每个工具都有一个示例文件,包含输出和讨论(在tools      / * _ examples.txt下)。
  • 工具源代码以块注释介绍开始。
  • 这些工具越简单越好。(更复杂的工具将交由BCC使用。)

CentOS7下,bpftrace安装后的,可执行文件 *.bt文件路径在: /usr/share/bpftrace/tools

cd /usr/share/bpftrace/tools

./opensnoop.bt  即可执行对应的bpftrace程序

TIPS: 大神的github上bpf performance tools配套还提供了很多 bpftrace工具,特地为写书编写的,每个工具都很强大。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-04 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • bpftrace推荐的几个相关工具
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档