Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >动态追踪技术(四):基于 Linux bcc/BPF 实现 Go 程序动态追踪

动态追踪技术(四):基于 Linux bcc/BPF 实现 Go 程序动态追踪

作者头像
RiboseYim
发布于 2018-01-20 10:20:59
发布于 2018-01-20 10:20:59
3K0
举报
文章被收录于专栏:睿哥杂货铺睿哥杂货铺

渲染错误

Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.

NotFoundError: Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.
    at si (https://qccommunity.qcloudimg.com/community/_next/static/chunks/framework-bae252e255276064.js:1:95035)
    at si (https://qccommunity.qcloudimg.com/community/_next/static/chunks/framework-bae252e255276064.js:1:95108)
    at gi (https://qccommunity.qcloudimg.com/community/_next/static/chunks/framework-bae252e255276064.js:1:100207)
    at vi (https://qccommunity.qcloudimg.com/community/_next/static/chunks/framework-bae252e255276064.js:1:97069)
    at hi (https://qccommunity.qcloudimg.com/community/_next/static/chunks/framework-bae252e255276064.js:1:96948)
    at vi (https://qccommunity.qcloudimg.com/community/_next/static/chunks/framework-bae252e255276064.js:1:97258)
    at hi (https://qccommunity.qcloudimg.com/community/_next/static/chunks/framework-bae252e255276064.js:1:96948)
    at vi (https://qccommunity.qcloudimg.com/community/_next/static/chunks/framework-bae252e255276064.js:1:97258)
    at hi (https://qccommunity.qcloudimg.com/community/_next/static/chunks/framework-bae252e255276064.js:1:96948)
    at vi (https://qccommunity.qcloudimg.com/community/_next/static/chunks/framework-bae252e255276064.js:1:97258)

Error component

    at C (https://qccommunity.qcloudimg.com/community/_next/static/chunks/4939-0b9ab9f6b7adf184.js:1:5384)
    at code
    at pre
    at div
    at div
    at O (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/_app-b8cf606f8bd802a9.js:1:1964867)
    at div
    at div
    at t (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/_app-b8cf606f8bd802a9.js:1:682374)
    at q (https://qccommunity.qcloudimg.com/community/_next/static/chunks/4939-0b9ab9f6b7adf184.js:1:12547)
    at div
    at Ee (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/article/%5BarticleId%5D-6e9aaf7d27881451.js:1:47136)
    at div
    at div
    at div
    at Y.Main (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/_app-b8cf606f8bd802a9.js:1:2690688)
    at div
    at Y (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/_app-b8cf606f8bd802a9.js:1:2690571)
    at div
    at div
    at div
    at div
    at w (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/article/%5BarticleId%5D-6e9aaf7d27881451.js:1:15648)
    at Vi (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/article/%5BarticleId%5D-6e9aaf7d27881451.js:1:136702)
    at pe (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/_app-b8cf606f8bd802a9.js:1:2460582)
    at O (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/_app-b8cf606f8bd802a9.js:1:3765)
    at Provider (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/_app-b8cf606f8bd802a9.js:1:4251)
    at de (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/_app-b8cf606f8bd802a9.js:1:2460479)
    at $ (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/_app-b8cf606f8bd802a9.js:1:2909437)
    at Z (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/_app-b8cf606f8bd802a9.js:1:2456992)
    at u (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/_app-b8cf606f8bd802a9.js:1:2430384)
    at W (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/_app-b8cf606f8bd802a9.js:1:2457091)
    at O (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/_app-b8cf606f8bd802a9.js:1:2429415)
    at n (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/_app-b8cf606f8bd802a9.js:1:2459257)
    at De (https://qccommunity.qcloudimg.com/community/_next/static/chunks/pages/_app-b8cf606f8bd802a9.js:1:2469944)
    at r (https://qccommunity.qcloudimg.com/community/_next/static/chunks/main-e22dbace957c19a6.js:1:14425)
    at X (https://qccommunity.qcloudimg.com/community/_next/static/chunks/main-e22dbace957c19a6.js:1:16282)
    at oe (https://qccommunity.qcloudimg.com/community/_next/static/chunks/main-e22dbace957c19a6.js:1:18983)

本文系外文翻译,前往查看

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

本文系外文翻译,前往查看

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【云原生技术研究】 从bpftrace看如何利用eBPF实现内核追踪
bpftrace提供了一种快速利用eBPF实现动态追踪的方法,可以作为简单的命令行工具或者入门级编程工具来使用。本文以bpftrace为例,介绍如何利用eBPF实现内核的动态追踪。
绿盟科技研究通讯
2020/09/01
2.4K0
【云原生技术研究】 从bpftrace看如何利用eBPF实现内核追踪
BPF:BCC(BPF Compiler Collection)工具集认知
不必太纠结于当下,也不必太忧虑未来,当你经历过一些事情的时候,眼前的风景已经和从前不一样了。——村上春树
山河已无恙
2024/06/21
3920
BPF:BCC(BPF Compiler Collection)工具集认知
基于ubuntu22.04-深入浅出 eBPF
笔者在很早之前就看eBPF这类似的文章,那时候看这个技术一脸懵逼,不知道它是用来做什么,可以解决什么问题。所以也没有太关注这个技术。很庆幸最近刚好有机会研究这个技术。
Rice加饭
2023/09/02
7970
基于ubuntu22.04-深入浅出 eBPF
BCC(可观测性)
BCC是一个用于跟踪内核和操作程序的工具集,其软件包中包含了一些有用的工具和例子,它扩展了BPF(Berkeley Packet Filters),通常被称为eBPF , 在Linux3.15中首次引入,但大多数BCC的功能需要Libux4.1及以上版本。
charlieroro
2020/07/09
3.3K0
结合例子学习eBPF与bcc:初探
本文不会介绍eBPF和bcc的由来和历史,而是会基于bcc文档中的例子来介绍与学习ebpf和bcc。
程栩的性能优化笔记
2023/11/01
5360
结合例子学习eBPF与bcc:初探
Linux黑科技:浅析动态追踪技术
当碰到内核线程的资源使用异常时,很多常用的进程级性能工具,并不能直接用到内核线程上。这时,我们就可以使用内核自带的 perf 来观察它们的行为,找出热点函数,进一步定位性能瓶颈。不过,perf 产生的汇总报告并不直观,所以我通常也推荐用火焰图来协助排查。
C语言与CPP编程
2024/05/28
5880
Linux黑科技:浅析动态追踪技术
用BPF实现用户态tracing
BPF是最近Linux内核领域热门的技术。传统的BPF指的是tcpdump命令用于过滤网络包的工具,现在BPF已经得到极大的扩展,不再是Berkeley Packet Filter的缩写对应的简单的网络包过滤工具。 从Kernel 4.9之后,BPF已经成为一个完善的内核扩展工具,BPF在内核里运行一个sandbox,用于执行BPF的字节码(bytecode), 在执行BPF程序前,BPF的检查器会对BPF程序的字节码进行安全检查(比如,指针要先判断不为空后再访问,代码里不能有循环,等等),以保证BPF程序不会导致系统崩溃,因为BPF程序执行时是在内核态。 因此,BPF可以很安全地在内核态执行用户编写的程序,而且有安全保证,这比编写内核模块安全太多了。 正是因为BPF能保证安全,并运行在内核态,可以大大简化很多以前很复杂的事情,目前BPF已经应用于性能分析、网络、安全、驱动、区块链等等领域。
王璞
2020/07/14
3.3K0
基于 eBPF 的 Linux 可观测性
最近发布的 Linux 内核带了一个针对内核的能力强大的 Linux 监控框架。它起源于历史上人们所说的的 BPF。
黑光技术
2020/05/14
2.3K0
基于 eBPF 的 Linux 可观测性
【玩转腾讯云】ebpf 学习梳理和测试使用
周五下午在公司的服务网格月度讨论会上,一位同事为大家分享了在服务网格中使用 ebpf 来优化提升 istio 中 sidecar 和 RS 间的通信效率。听过之后手痒难,想测试一把 ebpf。当这位同事在这方面做的还是比较深入的,而且给内核和 istio 中提交了pr。有兴趣的同学可以看看他的 github:https://github.com/ChenLingPeng 还有他的 blog。
黑光技术
2020/03/26
2.7K0
使用EBPF追踪LINUX内核
我们可以使用BPF对Linux内核进行跟踪,收集我们想要的内核数据,从而对Linux中的程序进行分析和调试。与其它的跟踪技术相比,使用BPF的主要优点是几乎可以访问Linux内核和应用程序的任何信息,同时,BPF对系统性能影响很小,执行效率很高,而且开发人员不需要因为收集数据而修改程序。
Linux阅码场
2021/07/09
1.7K0
BCC和libbpf的转换
本文讲述如何将基于BCC的BPF应用转换为libbpf + BPF CO-RE。BPF CO-RE可以参见上一篇博文。
charlieroro
2021/01/07
1.9K0
eBPF技术简介
“eBPF 是我见过的 Linux 中最神奇的技术,没有之一,已成为 Linux 内核中顶级子模块,从 tcpdump 中用作网络包过滤的经典 cbpf,到成为通用 Linux 内核技术的 eBPF,已经完成华丽蜕变,为应用与神奇的内核打造了一座桥梁,在系统跟踪、观测、性能调优、安全和网络等领域发挥重要的角色。为 Service Mesh 打造了具备 API 感知和安全高效的容器网络方案 Cilium,其底层正是基于 eBPF 技术”
CNCF
2020/08/24
16.7K1
eBPF技术简介
【译】如何使用 eBPF 检测分析用户态程序
这篇文章较好的介绍使用 eBPF 对几种语言开发的应用程序进行可观测分析。介绍的也比较详细,对这块有兴趣的同学可以深入学习。
黑光技术
2022/11/29
1.5K0
【译】如何使用 eBPF 检测分析用户态程序
调试你的BPF程序
文章涉及的实验环境和代码可以到这个git repo获取: https://github.com/nevermosby/linux-bpf-learning
nevermosby
2020/05/25
4.8K0
调试你的BPF程序
eBPF 概述:第 4 部分:在嵌入式系统运行
在本系列的第 1 部分和第 2 部分,我们介绍了 eBPF 虚拟机内部工作原理,在第 3 部分我们研究了基于底层虚拟机机制之上开发和使用 eBPF 程序的主流方式。
233333
2023/11/30
5940
eBPF 概述:第 4 部分:在嵌入式系统运行
使用 eBPF 在生产环境调试 Go 应用
本文是描述我们如何在生产中使用 eBPF 调试应用程序的系列文章中的第一篇,无需重新编译/重新部署,这篇文章介绍了如何使用 gobpf[1] 和uprobes 为 Go 应用程序建立一个函数参数跟踪器,这种技术也可以扩展到其他编译语言,如 C++、Rust 等。
我是阳明
2020/11/03
1.9K0
使用 eBPF 在生产环境调试 Go 应用
Linux 可观测性 BPF&eBPF 以及 BCC&bpftrace 认知
对每个人而言,真正的职责只有一个:找到自我。然后在心中坚守其一生,全心全意,永不停息。所有其它的路都是不完整的,是人的逃避方式,是对大众理想的懦弱回归,是随波逐流,是对内心的恐惧 ——赫尔曼·黑塞《德米安》
山河已无恙
2024/01/17
6820
Linux 可观测性 BPF&eBPF 以及 BCC&bpftrace 认知
Golang程序调试工具介绍(gdb vs dlv)
通过log库输出日志,我们可以对程序进行异常分析和问题追踪。但有时候,我也希望能有更直接的程序跟踪及定位工具能够帮助我们更方便快捷的追踪、定位问题,最直观的感觉还是使用调试器。Linux平台下,原生的C/C++程序,我们往往使用gdb进行程序调试,切换到Golang,我们同样还是可以使用gdb进行调试。同时我们还可以使用golang实现的调试器dlv进行调试。以下内容是我对gdb以及dlv使用及对比总结
sunsky
2020/08/20
5.1K0
使用火焰图进行Java性能分析
内核维护着各种统计信息,被称为Counters,用于对事件进行计数。例如,接收的网络数据包数量,发出的磁盘I/O请求,执行的系统调用次数。常见的这类工具有:
mazhen
2023/11/24
1.3K0
使用火焰图进行Java性能分析
From High Ceph Latency to Kernel Patch with eBPF/BCC
There are a lot of tools for debugging kernel and userspace programs in Linux. Most of them have performance impact and cannot easily be run in production environments. A few years ago, eBPF was developed, which provides the ability to trace the kernel and userspace with low overhead, without needing to recompile programs or load kernel modules.
Linux阅码场
2020/08/11
1K0
From High Ceph Latency to Kernel Patch with eBPF/BCC
相关推荐
【云原生技术研究】 从bpftrace看如何利用eBPF实现内核追踪
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档