BCC - 用于Linux性能监视,网络和更多的动态跟踪工具
2023-09-27 14:29:04 时间
BCC(BPF编译器集合 )是用于创建足智多谋内核跟踪和操作程序一套功能强大的适当的工具和示例文件。 它采用扩展BPF( Berkeley包过滤器 ),最初被称为eBPF这是在Linux的3.15的新功能之一。
BCC / BPF - 用于Linux性能监视的动态跟踪工具
实际上,大多数由BCC使用的组件的需要的Linux 4.1或以上,和其值得注意的特点包括:
- 不需要第三方内核模块,因为所有的工具都基于内置于内核的BPF工作,BCC使用Linux 4.x系列中添加的功能。
- 支持观察软件执行。
- 包括几个性能分析工具与示例文件和手册页。
最适合用于高级Linux用户,BCC可以很容易地编写使用内核仪表用C BPF程序和前端在Python和Lua。此外,它支持多个任务,如性能分析,监控,网络流量控制等。
请记住,BCC使用在Linux内核版本4.1中加入以上功能,并作为一项要求,内核应该已经编译如下设置标志:
CONFIG_BPF=y
CONFIG_BPF_SYSCALL=y
# [optional, for tc filters]
CONFIG_NET_CLS_BPF=m
# [optional, for tc actions]
CONFIG_NET_ACT_BPF=m
CONFIG_BPF_JIT=y
CONFIG_HAVE_BPF_JIT=y
# [optional, for kprobes]
CONFIG_BPF_EVENTS=y
要检查你的核心标志,查看文件了/proc/config.gz或在下面的例子中运行命令:
howtoing@HowToing ~ $ grep CONFIG_BPF= /boot/config-`uname -r`
CONFIG_BPF=y
howtoing@HowToing ~ $ grep CONFIG_BPF_SYSCALL= /boot/config-`uname -r`
CONFIG_BPF_SYSCALL=y
howtoing@HowToing ~ $ grep CONFIG_NET_CLS_BPF= /boot/config-`uname -r`
CONFIG_NET_CLS_BPF=m
howtoing@HowToing ~ $ grep CONFIG_NET_ACT_BPF= /boot/config-`uname -r`
CONFIG_NET_ACT_BPF=m
howtoing@HowToing ~ $ grep CONFIG_BPF_JIT= /boot/config-`uname -r`
CONFIG_BPF_JIT=y
howtoing@HowToing ~ $ grep CONFIG_HAVE_BPF_JIT= /boot/config-`uname -r`
CONFIG_HAVE_BPF_JIT=y
howtoing@HowToing ~ $ grep CONFIG_BPF_EVENTS= /boot/config-`uname -r`
CONFIG_BPF_EVENTS=y
在Ubuntu 16.04
通过安装4.3以上版本的 Linux内核,从开始http://kernel.ubuntu.com/~kernel-ppa/mainline 。 作为一个例子,写一个小的shell脚本“bcc-install.sh”与下面的内容。 注意 :更新PREFIX值的最晚日期,以及浏览提供获得实际的REL值,在shell脚本代替它们的前缀网址的文件。
$ echo "deb [trusted=yes] https://repo.iovisor.org/apt/xenial xenial-nightly main" | sudo tee /etc/apt/sources.list.d/iovisor.list
$ sudo apt-get update
$ sudo apt-get install bcc-tools
相关文章
- 【Linux】必须掌握的Linux常见指令分类讲解
- Linux下使用ping命令判断网络的好坏
- Linux系统编程:阻塞、非阻塞【读常规文件是不会阻塞】【从网络或终端读/写则可能会阻塞:①调用read从网络或终端读数据时,如果网络上没有接收到数据包或者终端输入数据后没按换行符,就会阻塞(等待)】
- Linux网络编程(五)-Socket编程01:概述(不同主机进程通讯)【通用socket结构体:sockaddr】【网络字节序:报头部分大于2字节的数据需大小端转换】【一套接字包含发送、接收缓冲区】
- Linux网络编程(五)-Socket编程02:函数【socket、connect、bind、listen、accept、read/recv/recvfrom、write/send/sendto】
- Linux网络编程(七)-第三方库-Libevent01:安装Libevent【Ubuntu20.04】
- linux和windows动态库加载路径区别
- linux 服务器线上问题故障排查
- Linux基础命令介绍七:网络传输与安全
- 你必须了解的基础的Linux网络命令
- Linux ip命令详解
- Linux防火墙规则的查看、添加、删除和修改
- Linux 利用busybox制作根文件系统
- 【Socket】linux网络多路复用IO技术
- /usr/lib/x86_64-linux-gnu/libopencv_highgui.so.2.4.9: undefined reference toTIFFIsTiled@LIBTIFF_4.0'
- linux 单网卡绑定两个ip
- linux下安装boost
- 【Linux 内核】Linux 内核特性 ( 组织形式 | 进程调度 | 内核线程 | 多平台虚拟内存管理 | 虚拟文件系统 | 内核模块机制 | 定制系统调用 | 网络模块架构 )
- 在WINDOWS2008 Server 中创建NFS服务器,使用LINUX的MOUNT命令去加载网络盘
- Linux下如何在不解压jar包查看或修改配置文件
- 嵌入式 Linux进程含义知多少
- linux下网络排错与查看
- linux下判断网络是否连接
- 从ramdisk根文件系统启动Linux 二