Storprototrace入门指南:基于eBPF的iSCSI协议性能追踪工具初探
Storprototrace入门指南基于eBPF的iSCSI协议性能追踪工具初探【免费下载链接】storprototraceStorprototrace (storage protocol trace) is a tracing function for IO events entering the iscsi protocol driver layer based on libbpf.项目地址: https://gitcode.com/openeuler/storprototrace前往项目官网免费下载https://ar.openeuler.org/ar/想要深入了解iSCSI存储协议的性能瓶颈吗Storprototracestorage protocol trace正是您需要的终极性能分析工具这个基于eBPF技术的开源项目专门用于追踪进入iSCSI协议驱动层的I/O事件帮助您快速定位存储性能问题。什么是StorprototraceStorprototrace是一个基于libbpf实现的iSCSI协议驱动层I/O事件追踪工具。相比于传统的blktrace工具它专注于统计I/O进入iSCSI协议驱动层后的各个阶段时延为存储系统优化提供精准的数据支持。核心功能亮点 ✨Storprototrace主要统计三个关键阶段的时延队列排队等待时间- 从iscsi协议驱动层接收到请求到开始处理请求的时间差I/O发送时间- 设备实际处理I/O请求的时间I/O传输完成时间- I/O请求实际处理完成的耗时通过这些详细的时延数据您可以识别设备内部队列的排队延迟分析设备处理I/O请求的效率检测传输过程中的异常情况为系统优化提供数据支撑快速安装指南 环境准备在开始之前您需要准备两台机器一台作为客户端tester一台作为iSCSI存储服务器target。依赖安装首次编译前运行以下命令安装必要的依赖./install-deps.sh这个脚本会自动检测您的操作系统支持Ubuntu、Debian、CentOS、RHEL、Fedora、openEuler等并安装clang、libbpf、bpftool等必要的开发工具。编译安装步骤创建构建目录mkdir build cd build配置项目cmake ..编译项目make完成编译后您将在build目录下获得可执行文件storprototrace。配置iSCSI环境 服务器端配置target安装targetcli软件包dnf install targetcli创建存储后端targetcli /backstores/block create iscsitest /dev/sdb配置iSCSI目标/iscsi create iqn.2024-03.cn.eu关联LUN/iscsi/iqn.2024-03.cn.eu/tpg1/luns create /backstores/block/iscsitest客户端配置tester安装open-iscsidnf install -y open-iscsi配置启动器名称编辑/etc/iscsi/initiatorname.iscsi文件设置唯一的启动器名称。启动iscsid服务systemctl enable --now iscsid使用Storprototrace 基本运行编译完成后直接运行可执行文件./storprototrace您将看到类似以下的输出BPF program loaded and attached successfully. Connect | RW | Toal Interval(ns) | Max Interval(ns) sid cid | Count total | Waiting Sending Complete | Waiting Sending Complete 1 0 | 1 8192 | 70035(1) 972210(1) 1042245(1) | 70035 972210 1042245 1 0 | 4 36864 | 25012(4) 597588(4) 622600(4) | 40967 1159767 1195784输出字段详解sid/cid: 会话ID和连接IDCount: I/O请求数量total: 总数据量字节Waiting: 队列排队等待时间统计Sending: I/O发送时间统计Complete: I/O传输完成时间统计技术架构解析 ️eBPF追踪原理Storprototrace利用Linux内核的eBPF技术在iSCSI协议驱动层的关键路径上插入探针实时收集I/O事件的时间戳。主要追踪点包括队列进入点- 记录I/O请求进入队列的时间发送开始点- 记录I/O开始发送的时间完成回调点- 记录I/O处理完成的时间核心代码结构项目的主要源代码文件位于以下目录主程序入口: iscsi_usr.cpp - 程序的入口点和主循环eBPF程序: iscsi_bpf/iscsi_stats.bpf.c - 内核空间的eBPF追踪程序命令行解析: cli_parser/cli_parser.cpp - 命令行参数处理公共组件: common/common.cpp - 共享工具函数数据映射机制项目使用多种BPF映射类型来存储和传递数据PERCPU_ARRAY映射: 用于存储iscsi_task、iscsi_conn等数据结构HASH映射: 存储时间戳和统计信息请求映射: 跟踪request结构的信息性能优化建议 ⚡识别性能瓶颈通过Storprototrace的输出您可以分析队列延迟如果Waiting时间过长可能需要优化队列调度算法检查发送效率Sending时间异常可能表明网络或设备问题监控完成时间Complete时间波动可能反映后端存储性能问题调优策略队列优化调整iSCSI队列深度参数网络优化检查网络延迟和带宽存储优化优化后端存储设备的配置常见问题解答 ❓Q: Storprototrace支持哪些操作系统A: 支持所有主流的Linux发行版包括openEuler、CentOS、Ubuntu、Fedora等。Q: 需要什么内核版本A: 需要支持eBPF的较新内核版本建议5.4。Q: 如何过滤特定LUN的统计A: 当前版本统计所有LUN未来版本将支持按LUN过滤。Q: 输出数据的单位是什么A: 所有时间数据都以纳秒ns为单位。未来发展方向 根据项目规划Storprototrace将继续增强以下功能按LUN过滤统计- 支持统计指定LUN的时延数据会话/连接统计- 支持按SID、CID进行详细统计目标端统计- 支持target端的性能分析启动器统计- 支持initiator端的性能监控读写操作分离统计- 区分读写操作的性能特征开始您的性能优化之旅 Storprototrace为iSCSI存储系统的性能分析提供了强大的工具支持。通过实时追踪I/O在各个阶段的时延您可以 快速定位性能瓶颈 量化存储系统性能️ 指导系统优化方向 建立性能基线数据现在就克隆项目开始使用吧git clone https://gitcode.com/openeuler/storprototrace cd storprototrace记住了解系统性能是优化的第一步。Storprototrace将为您打开iSCSI存储性能分析的大门无论您是存储管理员、系统工程师还是性能分析师这个工具都将成为您分析iSCSI存储系统性能的得力助手。开始探索发现隐藏的性能潜力【免费下载链接】storprototraceStorprototrace (storage protocol trace) is a tracing function for IO events entering the iscsi protocol driver layer based on libbpf.项目地址: https://gitcode.com/openeuler/storprototrace创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考