前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >结合例子学习eBPF与bcc:直方图

结合例子学习eBPF与bcc:直方图

作者头像
AshinZ
发布2023-11-01 17:11:26
1520
发布2023-11-01 17:11:26
举报

在了解完BPF_PERF_OUTPUT作为输出以后,我们会看到一系列的数据,这些数据是基于时间序列的,那么是否有别的数据展示形式能够帮助我们更好的发现问题呢?

bitehist

通过这个例子,我们可以学习到如何将数据通过直方图的方式输出:

bitehist

可以看到,我们这里定义个类别为HISTOGRAMBPF map分别是distdist_linear,其本质上是BPF_TABLE的一个封装。接着我们在进行追踪的时候将结果数据通过increment将输出传出来。increment会将第一个参数的运算结果作为直方图索引,递增量默认是1,我们可以通过添加第二个参数来调整递增量。例如a.increment(2,5)表示对直方图中2这个索引添加5。在这里我们用到了一个bpf_log2l的函数,这个函数可以返回以2为底的直方图索引。最后,我们通过print_log2_histprint_linear_hist分别通过两种方式输出了获取到的直方图数据。如下图所示:

bitehist result

disklatency

我们尝试在基于disksnoop来实现直方图输出。首先我们定义两个通道:

定义BPF_HISTOGRAM

接着我们改写disksnoop中的输出语句,将delta时间单位转换成ms

increment

最后我们调整输出即可:

上传文件

运行看看:

disklatency

小结

今天我们学习了如下内容:

  • BPF_HISTOGRAM:声明一个直方图类别的数据通道;
  • increment(key, value):往直方图通道中添加一个键值对,直方图通道会对此进行累加,例如原数据是3:5,表示3这个值出现了5次,调用increment(3,2)这个数据就会变成3:7;如果第二个参数为空,则默认为1;
  • bpf_log2f:可以将数据转换成2的对数;
  • print_log2_histprint_linear_hist:可以分别输出两种模式的直方图;
本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-08-26,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 程栩的性能优化笔记 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • bitehist
  • disklatency
  • 小结
相关产品与服务
图数据库 KonisGraph
图数据库 KonisGraph(TencentDB for KonisGraph)是一种云端图数据库服务,基于腾讯在海量图数据上的实践经验,提供一站式海量图数据存储、管理、实时查询、计算、可视化分析能力;KonisGraph 支持属性图模型和 TinkerPop Gremlin 查询语言,能够帮助用户快速完成对图数据的建模、查询和可视化分析。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com