作者:刘安
爱可生测试团队成员,主要负责 TXLE 开源项目相关测试任务,擅长 Python 自动化测试开发,最近醉心于 Linux 性能分析优化的相关知识。
本文来源:原创投稿
*爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。
最近在极客时间上学习《Linux 性能优化实战》,接触到了基于 eBPF 的 BCC 软件包。今天来分享一下 bcc 软件包中用来观测 MySQL 的几个工具。
1.什么是 BPF 和 eBPF
- BPF = Berkeley Packet Filter
https://en.wikipedia.org/wiki/Berkeley_Packet_Filter
- BPF 是类 Unix 系统上数据链路层的一种原始接口,提供原始链路层封包的收发
- BPF 支持过滤数据包——用户态的进程可以提供一个过滤程序来声明它想收到哪些数据包
- 从 3.18 版本开始,Linux 内核提供了一种扩展的 BPF 虚拟机,被称为 “extended BPF”,简称为 eBPF。它能够被用于非网络相关的功能,比如附在不同的 tracepoints 上,从而获取当前内核运行的许多信息
实际上 tcpdump 使用的 libpcap 就是基于 BPF 的。而接下来我们要介绍的基于 eBPF 的 bcc 软件包可以简单的理解为过滤内核运行信息的 "tcpdump"。
以下是一张 BPF 的工作流程图:

2.什么是 bcc
- Bcc 的开源项目 https://github.com/iovisor/bcc
- eBPF 虚拟机使用的是类似于汇编语言的指令,对于程序编写来说直接使用难度非常大。bcc 提供了一个名为 bcc 的 python 库,简化了 eBPF 应用的开发过程
- Bcc 收集了大量现成的 eBPF 程序可以直接拿来使用,可以通过以下工具分布图感受一下

3.安装 bcc
# Ubuntu
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4052245BD4284CDD
echo "deb https://repo.iovisor.org/apt/$(lsb_release -cs) $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/iovisor.list
sudo apt-get update
sudo apt-get install bcc-tools libbcc-examples linux-headers-$(uname -r)
export PATH=$PATH:/usr/share/bcc/tools
# CentOS
yum install bcc-tools
export PATH=$PATH:/usr/share/bcc/tools <

本文介绍了如何使用基于eBPF的BCC软件包中的工具,如dbstat和dbslower,来观测和分析MySQL数据库的查询延迟和性能。通过实际示例展示了如何设置和使用这些工具。
最低0.47元/天 解锁文章
575

被折叠的 条评论
为什么被折叠?



