0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Coolbpf 在perf 事件中的增强

Linux阅码场 来源:Linux阅码场 作者:Linux阅码场 2022-10-25 09:00 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1、perf 简介

 Perf 是内置于 Linux 内核源码树中的性能剖析(profiling)工具。它基于事件采样的原理,以性能事件为基础,支持针对处理器相关性能指标与操作系统相关性能指标的性能剖析。

1.1、perf 框架

89c4df62-53fa-11ed-a3b6-dac502259ad0.jpg

主要有两部分组成

Perf Tools:用户态的 Perf Tools 为用户提供了一系列丰富的工具集用于收集、分析性能数据。

Perf Event Subsystem:Perf Event 子系统是内核众多子系统中的一员,其主要功能是和 Perf Tool 共同完成数据采集的工作。另外,Linux Hard Lockup Detector 也是通过 Perf Event 子系统来实现的。

 本文将重点围绕 Perf Event 子系统展开介绍Coolbpf 在perf 事件中的增强。

1.2、perf 事件分类

perf的事件包括:

硬件事件:branch-instrctions / branch-miss / bus-cycles / cache-miss / cache-reference / cycles / instructions

硬件cache事件:d1-cached-miss

软件事件:cpu-clocks / tasks-clock ....

tracepoint事件:sched_stat_runtime / syscalls...

probe事件:可用户定义

8a04d2e8-53fa-11ed-a3b6-dac502259ad0.jpg

1.3、当前perf 工具集中的不足

 当前perf工具以命令行为主,缺乏完善的第三方应用开发sdk,导致perf功能虽然强大,但是功能相对比较封闭,无法适应特定场景的问题。比如说常见的CPU system 占用率高的问题,我们通常使用perf record 来记录系统热点,再通过 FlameGraph 工具转换成火焰图进行分析。该方法存在以下不足:

sys占用率高很有可能只是偶发性问题,通过监控发现了以后再来执行命令,现象很有可能已经消失,持续性追踪会导致样本数太大,无法凸显出热点函数;

sys占用率高只是部分cpu现象,具体cpu编号并不确定,导致定向抓取事件操作步骤会变得非常繁琐;

perf 命令只能输出中间文件,要生成常用的火焰图数据还需要手工转换;

2、Coolbpf 针对perf 增强

Coolbpf 是一个便捷高效的一站式eBPF开发编译平台,当perf遇见Coolbpf后,会碰撞出什么样的火花呢?Coolbpf 为perf提供了应用开发的SDK,让开发者可以借助eBPF快速开发 perf 应用。

2.1、Coolbpf perf 组织架构

8a1b465e-53fa-11ed-a3b6-dac502259ad0.png

 大致流程和常规的Coolbpf 应用开发过程基本一致。主要分为

libbpf 应用、

perf 事件处理、

用户态处理、  接下来我们以 testPerf.py为例,讲解perf 典型应用开发。

(文件:https://gitee.com/anolis/coolbpf/blob/master/lcc/pylcc/guide/testPerf.py)

2.2、bpf 应用部分

  bpf 应用和其它的kprobe/tp代码实现并无明显差别:

#include "lbc.h"

SEC("perf_event")
int bpf_prog(struct bpf_perf_event_data *ctx)
{
    bpf_printk("hello perf
");
    return 0;
}

char _license[] SEC("license") = "GPL";

2.3、perf event

 Coolbpf 对perf_attr 做了python 化处理,故使用在配置 perf attr的时候,只需要参考 perf 官方文档中关于attr 配置说明进行配置即可。下面的例子是追踪 perf PAGE_FAULTS事件的方法。

    pfConfig = {
            "sample_freq": 50, 
            "freq": 1,
            "type": PerfType.SOFTWARE,
            "config": PerfSwIds.PAGE_FAULTS,
        }
        self.attachPerfEvent("bpf_prog", pfConfig)

 此时系统中的 perf PAGE_FAULTS 事件就可以跟2.2 节的libbpf 代码关联起来。

2.4、用户态处理

 本示例是将捕捉到的事件输出到 /sys/kernel/debug/tracing/trace_pipe。用户可以根据自己的情况去执行event 回调或者分析maps 信息。

3、实战应用

 根据1.3 节的应用场景,需要追踪一个偶发性sys 冲高问题。在常规perf 使用存在困难的情况下,可以基于Coolbpf快速开发一个追踪sys高问题的应用程序,代码总共不超过180行,具体实现可以参考:perfSys.py(https://gitee.com/anolis/surftrace/blob/master/tools/pylcc/pytool/perfSys.py)

 应用实现流程图如下:

8a2f2804-53fa-11ed-a3b6-dac502259ad0.png

 可以直接追踪到对应的sys高调用栈

8a3bdde2-53fa-11ed-a3b6-dac502259ad0.jpg

通过上述方法,可以将原本需要花费多日守候才有可能捕捉到现场的疑难问题,缩短到完全无人值守,问题复现瞬间即可锁定目标的小case。

4、总结

 Coolbpf 融合了libbpf灵活、高效、安全的优势,结合perf强大的数据收集能力,并自身拥有快速部署、资源高效利用、结果直观可视化输出能力。如今两两联合,应用前景非常广泛,如性能剖析、应用观测、系统调优等。

审核编辑:彭静
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 处理器
    +关注

    关注

    68

    文章

    20378

    浏览量

    255606
  • Linux
    +关注

    关注

    88

    文章

    11854

    浏览量

    219824
  • 操作系统
    +关注

    关注

    37

    文章

    7453

    浏览量

    129725

原文标题:4、总结

文章出处:【微信号:LinuxDev,微信公众号:Linux阅码场】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    通过量子计算增强光学成像

    至关重要。 该方法通过将光子振幅信息编码至量子比特寄存器,并在将信号转换为经典数据前应用量子算法,能够特定弱信号成像场景显著提升信噪比(SNR)。这一增强技术使得嘈杂环境
    的头像 发表于 04-20 15:43 89次阅读
    通过量子计算<b class='flag-5'>增强</b>光学成像

    搭载RISC-V芯片Fedora操作系统,安装好perf工具之后,输入pef top -g -e cpu-clock 无法显示内核函数的符号?

    ;在网上找个很多办法,都不太行。可以确定的是,不是因为缺少库的原因导致的。 Linux: perf top, kernel symbol not found - Stack Overflow 而在X86的机器上就不存这样的问题, 也用同样的方式去安装perf工具。
    发表于 03-27 08:27

    Fedora系统打算绘制火焰图遇到的问题求解

    执行perf record -e cpu-clock ./test,产生perf.data,使用perf report查看时发现系统函数均无法获取名字显示为unkown。 但是把板子重启后
    发表于 03-27 07:29

    山西大学量子增强相位噪声滤波器研究取得新进展

    图1.量子增强激光噪声稳定原理。(a) 量子增强振幅噪声稳定;(b) 量子增强相位噪声稳定;(c) 边带表象振幅分量噪声评估 近日,山西大学光量子技术与器件全国重点实验室、光电研究所
    的头像 发表于 03-10 06:40 159次阅读
    山西大学<b class='flag-5'>在</b>量子<b class='flag-5'>增强</b>相位噪声滤波器研究<b class='flag-5'>中</b>取得新进展

    Ubuntu 24.04:“perf stat”报告未计算的事件是怎么回事?

    您好,我正在尝试对硬件事件进行采样,如下所示,但对于每个事件(例如 “perf event -e LLC-loads benchmark”),我从 perf 得到“未计算”。我已在 NVMe
    发表于 02-05 07:37

    从代码到实践:ARMv8 PMUv3性能监控的实际应用解析

    本文结合perf_event.c代码片段,聚焦实际开发场景,将通过以下内容展开。
    的头像 发表于 02-04 17:43 1776次阅读
    从代码到实践:ARMv8 PMUv3性能监控的实际应用解析

    宽带放大器超疏水表面非接触式操控液滴及表面增强拉曼散射高通量测量的应用

    实验名称:宽带放大器超疏水表面非接触式操控液滴及表面增强拉曼散射高通量测量的应用实验方向:超声悬浮实验设备:ATA-1220E宽带放大器、信号发生器、超声换能器、载物台等实验内容:
    的头像 发表于 01-22 18:31 5509次阅读
    宽带放大器<b class='flag-5'>在</b>超疏水表面非接触式操控液滴及表面<b class='flag-5'>增强</b>拉曼散射高通量测量<b class='flag-5'>中</b>的应用

    用于高速成像,科学和太阳蛋白紫外线应用的图像增强器解决方案

    图像增强器用于增强低照度图像,直至单光子的检测和成像。Photonis 是 Exosens 的一部分,为科学应用 (IIT) 提供各种图像增强管,为希望在其产品实施低照度
    的头像 发表于 11-19 07:36 341次阅读
    用于高速成像,科学和太阳蛋白紫外线应用的图像<b class='flag-5'>增强</b>器解决方案

    ATA-2021B高压放大器液晶腐蚀倾斜光栅灵敏度增强电场传感器研究的应用

    实验名称:高压放大器液晶腐蚀倾斜光栅灵敏度增强电场传感器研究的应用实验方向:光纤电场传感器实验设备:ATA-2021B高压放大器、倾斜光栅、信号发生器、光谱仪实验目的:本实验采提出了一种
    的头像 发表于 10-23 18:49 5956次阅读
    ATA-2021B高压放大器<b class='flag-5'>在</b>液晶腐蚀倾斜光栅灵敏度<b class='flag-5'>增强</b>电场传感器研究<b class='flag-5'>中</b>的应用

    基于FPGA的CLAHE图像增强算法设计

    CLAHE图像增强算法又称为对比度有限的自适应直方图均衡算法,其算法原理是通过有限的调整图像局部对比度来增强有效信号和抑制噪声信号。
    的头像 发表于 10-15 10:14 895次阅读
    基于FPGA的CLAHE图像<b class='flag-5'>增强</b>算法设计

    如何增强电网强度以减少新能源设备的谐波?

    增强电网强度的核心目标是提升电网的短路容量(或降低电网阻抗),从而减少新能源设备注入谐波后产生的谐波电压降,抑制谐波放大效应(尤其弱电网),最终降低谐波对新能源设备(光伏、风电、储能
    的头像 发表于 10-14 17:12 1850次阅读

    Photonis 科学图像增强器介绍

    对于寻求先进图像增强技术的增强相机制造商,Photonis 提供具有无与伦比规格的科学级图像增强管。其中包括市场领先的信噪比 (SNR)、卓越的极限分辨率和亚纳秒级门控技术。 这些科学级图像
    的头像 发表于 09-19 09:20 560次阅读
    Photonis 科学图像<b class='flag-5'>增强</b>器介绍

    NTC热敏电阻ADAS系统的应用

    ADAS系统的各个子系统(自适应巡航系统、自动泊车系统、盲点侦测系统等)工作过程需要收集大量数据并上传至ECU处理,该过程中会产生热量,为有效地延长ADAS系统的使用寿命,增强器安全性及可靠性,需要置入NTC热敏电阻进行精确
    的头像 发表于 09-15 14:27 677次阅读
    NTC热敏电阻<b class='flag-5'>在</b>ADAS系统<b class='flag-5'>中</b>的应用

    电压放大器驱动合成射流的涡结构演化与掺混增强机制研究

       实验名称:功率放大器合成射流高效掺混机理研究的应用 实验内容:合成射流是一种新型主动流动控制技术,其主要工作原理是利用振动薄膜或活塞周期性地吹/吸流体,孔口外形成涡环,这些涡环
    的头像 发表于 08-08 15:47 719次阅读
    电压放大器驱动合成射流的涡结构演化与掺混<b class='flag-5'>增强</b>机制研究

    MOS管无线充电模块的应用

    MOS管无线充电模块扮演着核心角色,其应用贯穿于功率放大、电流调节、保护电路及逆变控制等关键环节,具体应用场景及作用如下: 一、核心功能实现 功率放大与电能传输增强 MOS管作为功率放大器,通过
    的头像 发表于 07-24 14:54 1024次阅读
    MOS管<b class='flag-5'>在</b>无线充电模块<b class='flag-5'>中</b>的应用