bcc

2024/4/28 16:03:12

tc ebpf 实践

1. 用 tc 加载 BPF 程序 给定一个为 tc 编译的 BPF 对象文件 prog.o, 可以通过 tc 命令将其加载到一个网 络设备(netdevice)。但与 XDP 不同,设备是否支持 attach BPF 程序并不依赖驱动 (即任何网络设备都支持 tc BPF…

ebpf实战(一)-------监控udp延迟

问题背景: 为了分析udp数据通信中端到端的延迟,我们需要对整个通信链路的每个阶段进行监控,找出延迟最长的阶段. udp接收端有2个主要路径 1.数据包到达本机后,由软中断处理程序将数据包接收并放入udp socket的接收缓冲区 数据接收流程 2. 应用程序调用recvmsg等a…

5.76 BCC工具之sofdsnoop.py解读

一,工具简介 sofdsnoop工具追踪通过 Unix 套接字传递的文件描述符(FDs)。 二,代码示例 #!/usr/bin/env pythonfrom __future__ import print_function from bcc import ArgString, BPF import os import argparse from datetime import datetime, timedelta# 参数 examp…

5.78 BCC工具之sslsniff.py解读

一,工具简介 sslsniff工具可以用来追踪OpenSSL、GnuTLS和NSS的写入/发送和读取/接收函数。传递给这些函数的数据会以纯文本的形式打印出来。也就是用于捕获和分析 SSL/TLS 加密的网络流量。 二,代码示例 #!/usr/bin/env pythonfrom __future__ import print_function from…

5.83 BCC工具之tcplife.py解读

一,工具简介 tcplife工具统计了在追踪过程中打开和关闭的 TCP 会话。 tcplife 工具能够显示 TCP 会话的生命周期和吞吐量统计。它可以追踪 TCP 连接的建立、数据传输和关闭过程,并提供有关连接持续时间、传输的字节数等详细信息。这对于分析和优化网络性能、识别潜在的网络…

5.86 BCC工具之tcpstates.py解读

一,工具简介 tcpstates工具将会打印 TCP 状态更改信息,包括在每个状态中持续的时间(以毫秒为单位)。它是一个用于监控和分析TCP连接状态变化的工具。它利用BPF程序来跟踪TCP连接的生命周期,并记录每个连接在不同状态(如SYN_SENT、SYN_RECV、ESTABLISHED、FIN_WAIT1、FIN…

bcc安装和基本工具使用说明

目录 0. bcc安装 0.1 yum 安装 0.2 源码安装 1. cachestat 2. cachetop 3. funccount 4. trace 4.1 trace 4.2 trace查看它的传入的参数 bcc 提供的所有工具就都安装到 /usr/share/bcc/tools 这个目录中了。不过这里提醒你,bcc 软件包默认不会把这些工具…

Damask使用指南-Hcp结构(镁(考虑孪晶))孪晶如何加入

1,首先利用geom布种子,种子数为40,模型空间尺寸为64*64*1(表示二维平面问题)代码: 2,根据布种区域生成voronoi镶嵌的晶体结构 代码: 3 检查结构是否正确生成 4,利用dama…

5.104 BCC工具之fileslower.py解读

一,工具简介 fileslower可以显示低于阈值的基于文件的同步读写情况。 此脚本使用内核对VFS接口上的同步读取和写入的动态跟踪,以识别任何文件系统的慢文件读取和写入。 它通过跟踪__vfs_read()和__vfs_write()函数,并过滤出同步I/O(通往new_sync_read()和new_sync_write…

5.52 BCC工具之dbslower.py解读

一,工具简介 dbslower工具用于追踪由 MySQL 或 PostgreSQL 服务器提供的查询,并打印出那些超过延迟(查询时间)阈值的查询。默认情况下,使用的阈值是 1 毫秒。 二,代码示例 #!/usr/bin/env pythonfrom bcc import BPF, USDT import argparse import re import subproce…

5.39 BCC工具之uobjnew.py解读

一,工具简介 uobjnew工具统计了新的对象分配事件,并打印出统计信息,包括哪些对象类型被频繁分配,以及该类型已分配了多少字节。这有助于诊断常见的分配路径,而这些路径又可能会导致大量的垃圾回收。 二,代码示例 #!/usr/bin/pythonfrom __future__ import print_funct…

5.40 BCC工具之ustat.py解读

一,工具简介 ustat是一个类似于“top”的工具,用于监控高级语言中的事件。它为每个使用Java、Node、Perl、PHP、Python、Ruby和Tcl运行时的进程打印关于垃圾收集、方法调用、对象分配以及各种其他事件的统计信息。 二,代码示例 #!/usr/bin/pythonfrom __future__ import …

5.41 BCC工具之uthreads.py解读

一,工具简介 uthreads工具跟踪Java或原始(C)pthreads中的线程创建事件,并打印新创建线程的详细信息。对于Java线程,会打印线程名;对于pthreads,如果有符号信息可以解析,则会打印线程的启动函数。 二,代码示例 #!/usr/bin/pythonfrom __future__ import print_funct…

5.29 BCC工具之reset-trace.sh解读

一,工具简介 从文件名就可以理解这个工具是用来reset trace状态的。 那么我们可能永远都不需要这个工具。如果你使用-9(以及其他信号,如SIGTERM)杀死bcc工具,或者bcc工具崩溃,那么内核跟踪可能会处于半启用状态。这听起来并不那么糟糕:可能只是向从未读取的环形缓冲区…

5.12 BCC工具之undump.py简介

一,工具简介 undump工具用于ump UNIX 套接字数据包。这需要对内核函数进行动态跟踪,并且需要更新以匹配内核的改动。 二,代码示例 #!/usr/bin/python # @lint-avoid-python-3-compatibility-imports #from __future__ import print_function from bcc import BPF from bc…

5.10 BCC工具之stacksnoop简介

一,stacksnoop简介 stacksnoop用于跟踪内核函数,并打印出所有的内核栈。 二,代码示例 #!/usr/bin/python# USAGE: stacksnoop [-h] [-p PID] [-s] [-v] functionfrom __future__ import print_function from bcc import BPF import argparse import time# 参数 examples …

Linux: eBPF: bcc-tools:tcpdrop使用需要注意的问题

最近使用bcc-tools的时候注意到,bcc-tools(eBPF相关软件)的使用版本和内核的版本紧密程度非常高。因为要使用内核的函数或者结构体,所以就必须版本一致是必须的,不然会出现下面的警告或者错误: WARNING: tcp_drop() kernel function not found or traceable. The kernel …

ebpf基础篇(一) -------- hello ebpf

很多东西的学习都开始于一个’hello world’, ebpf也不例外。 实验环境: ubuntu 20.04 确认linux内核打开了如下选项 CONFIG_BPF=y CONFIG_BPF_SYSCALL=y CONFIG_BPF_JIT=y CONFIG_HAVE_EBPF_JIT=y CONFIG_BPF_EVENTS=y CONFIG_FTRACE_SYSCALLS=y CONFIG_FUNCTION_TRACER=y …

eBPF BCC开源工具简介

目录 官方链接 编译安装 ubuntu版本 安装 examples tools hello_world.py demo 运行报错 网上目前的解决办法 错误分析过程 python版本检测 libbcc库检查 python3 bcc库检查 正常输出 监控进程切换 运行输出 监控CPU直方图 缓存命中率监控:caches…

BCC源码内容概览(5)

接前一篇文章:BCC源码内容概览(4) 本文参考官网中的Contents部分的介绍。 BCC源码根目录的文件,其中一些是同时包含C和Python的单个文件,另一些是.c和.py的成对文件,还有一些是目录。 工具(To…

BCC源码内容概览(4)

接前一篇文章:BCC源码内容概览(3) 本文参考官网中的Contents部分的介绍。 BCC源码根目录的文件,其中一些是同时包含C和Python的单个文件,另一些是.c和.py的成对文件,还有一些是目录。 跟踪(Tr…

BCC源码内容概览(1)

接前一篇文章:BCC源码编译和安装 本文参考官网中的Contents部分的介绍。 BCC源码根目录的文件,其中一些是同时包含C和Python的单个文件,另一些是.c和.py的成对文件,还有一些是目录。 跟踪(Tracing) exam…

BCC源码下载

接前一篇文章:BCC介绍 1. GitHub地址 上一篇文章中已提到,BCC的github地址是:https://github.com/iovisor/bcc。 页面如下所示: 2. 源码下载 打开终端,创建好要存放BCC源码的目录,进入此目录。 然后&…

BCC源码内容概览(2)

接前一篇文章:BCC源码内容概览(1) 本文参考官网中的Contents部分的介绍。 BCC源码根目录的文件,其中一些是同时包含C和Python的单个文件,另一些是.c和.py的成对文件,还有一些是目录。 跟踪(Tr…

BCC介绍

本文参考以下博文: bcc/ebpf使用介绍一文看懂eBPF、eBPF的使用(超详细) ebpf之bcc程序入门 特此致谢! BCC(有时也写作bcc)的全称是BPF Compiler Collection,即BPF编译器集合。BCC是一个开源项…

安装bpftrace和bcc的踩坑记录

最后在Ubuntu22.04使用Ubuntu提供的安装命令完成了安装。这里是记录尝试在Ubuntu18.04和Ubuntu22.04使用源码安装未果的过程。 文章目录 22版本安装bcc准备工具安装命令使用报错:iovisor封装的安装方式ubuntu的安装方式 For Bionic (18.04 LTS)官方提供的源码安装准…

5.36 BCC工具之ucalls.py解读

一,工具简介 ucalls工具总结了包括Java、Perl、PHP、Python、Ruby、Tcl和Linux系统调用在内的各种高级语言中的方法调用。它显示最常调用方法的统计信息,以及这些方法的延迟(持续时间)。 通过系统调用支持,ucalls可以提供关于进程与系统交互的基本信息,包括系统调用计数…

5.58 BCC工具之mysqld_qslower.py解读

一,工具简介 mysqld_qslower工具用于追踪 MySQL 服务器提供的查询,并打印出那些超过延迟(查询时间)阈值的查询。默认情况下,使用的阈值为 1 毫秒。 二,代码示例 #!/usr/bin/env pythonfrom __future__ import print_function from bcc import BPF, USDT import sys# a…

5.82 BCC工具之tcpdrop.py解读

一,工具简介 tcpdrop工具打印被内核丢弃的 TCP 数据包或段的详细信息,包括导致丢弃的内核堆栈跟踪。 当网络出现拥堵、资源不足或其他原因导致数据包被内核丢弃时,tcpdrop可以帮助开发者和网络管理员识别并定位问题。 该工具通过钩住内核中处理TCP数据包的相关函数,捕获…