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

    文章

    19461

    浏览量

    231421
  • Linux
    +关注

    关注

    87

    文章

    11354

    浏览量

    210663
  • 操作系统
    +关注

    关注

    37

    文章

    6905

    浏览量

    123872

原文标题:4、总结

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

收藏 人收藏

    评论

    相关推荐

    DFT图像处理的作用 DFT音频信号处理的应用

    处理的几个主要作用: 频域滤波 :DFT允许我们分析图像的频率成分,从而可以设计滤波器来增强或抑制特定频率的信号,例如低通滤波器可以减少图像噪声,而高通滤波器可以增强边缘。 图像压缩 :
    的头像 发表于 12-20 09:18 513次阅读

    傅立叶变换图像处理的作用

    傅里叶变换图像处理中发挥着至关重要的作用。以下是傅里叶变换图像处理的几个主要作用: 一、图像增强与去噪 去噪 :图像的噪声通常表现为
    的头像 发表于 12-06 16:55 789次阅读

    【每天学点AI】实战图像增强技术人工智能图像处理的应用

    图像增强(ImageEnhancement)是人工智能和计算机视觉中一项重要的技术,也是人工智能数据集预处理的一个重要步骤。它旨在提高图像的质量,使其视觉上更加清晰、细节更丰富。这项技术自动驾驶
    的头像 发表于 11-22 17:14 919次阅读
    【每天学点AI】实战图像<b class='flag-5'>增强</b>技术<b class='flag-5'>在</b>人工智能图像处理<b class='flag-5'>中</b>的应用

    VGA信号增强器的使用方法

    现代电子设备,VGA接口因其简单、成本低廉而被广泛应用于电脑显示器、投影仪等设备。然而,VGA信号长距离传输时容易受到干扰和衰减,导致图像质量下降。为了解决这一问题,VGA信号增强
    的头像 发表于 11-08 10:06 575次阅读

    增强现实抬头显示是啥意思

     增强现实抬头显示(AR-HUD, Augmented Reality Head-Up Display)是AR增强现实技术和HUD抬头显示功能的结合体。这种技术通过计算机生成的虚拟信息叠加在三维道路环境,使视觉特效与真实道路元
    的头像 发表于 09-15 14:37 1048次阅读

    如何使用Intel Processor Trace工具查看任意函数执行时间

    在上一篇文章 PT_PERF: 基于 Intel PT 的时延性能分析工具 ,我们介绍了 Intel Processor Trace 时延分析工具的背景,功能和实现。
    的头像 发表于 08-07 14:24 672次阅读
    如何使用Intel Processor Trace工具查看任意函数执行时间

    增强模式下引导加载程序时,OTA升级失败了,为什么?

    我注意到,当我增强模式下重新启动以 0x81000 时手动启动 user2 固件,然后运行 OTA 升级以升级 user1,它看起来像开始升级固件,但它几乎立即失败(WDT 重新启动),使
    发表于 07-18 07:12

    Dify中使用PerfXCloud大模型推理服务

    近日,Dify全面接入了Perf XCloud,借助Perf XCloud提供的大模型调用服务,用户可在Dify构建出更加经济、高效的LLM应用。
    的头像 发表于 07-15 09:28 1393次阅读
    <b class='flag-5'>在</b>Dify中使用PerfXCloud大模型推理服务

    增强现实和虚拟现实的联系和区别

    增强现实(AR)和虚拟现实(VR)是两种不同的技术,它们许多方面都有联系和区别。 一、增强现实(AR)和虚拟现实(VR)的定义 增强现实(AR):
    的头像 发表于 07-08 11:00 2607次阅读

    增强现实是虚实结合吗为什么

    们提供了一种全新的交互方式,使得虚拟世界与现实世界之间的界限变得模糊,实现了虚实结合。 增强现实技术是一种将计算机生成的虚拟信息与现实世界相结合的技术。它通过将虚拟信息叠加到现实世界增强用户对现实世界的感知和理解。与传统的虚
    的头像 发表于 07-08 10:58 579次阅读

    增强现实技术的特点有哪些

    增强现实技术(Augmented Reality,简称AR技术)是一种将计算机生成的虚拟信息叠加到现实世界的技术。它通过实时地计算摄像机影像的位置及角度,将相应的图像、视频、3D模型等虚拟信息
    的头像 发表于 07-08 10:56 1299次阅读

    增强现实ar和全息投影的区别

    增强现实(AR)和全息投影是两种不同的技术,它们很多方面都有显著的区别。 一、定义 增强现实(AR) 增强现实(Augmented Reality,简称AR)是一种将虚拟信息叠加到现
    的头像 发表于 07-08 10:44 1691次阅读

    想通过perf工具来检查2段不同代码的内存占用率,但一直没找到,怎么办?

    想通过perf工具来检查2段不同代码的内存占用率,但一直没找到,怎么办?
    发表于 05-17 13:33

    增强现实ar是什么

    增强现实(Augmented Reality,简称AR)是一种将虚拟信息融入到现实环境的技术,使用户能够现实世界中看到并与虚拟物体互动。这种技术通过计算机视觉、图像识别、传感器融合等技术手段
    的头像 发表于 05-02 15:18 906次阅读

    N沟道,100 V,1.09 mOhm,具有增强SOA的MOSFET CCPAK1212i包目标数据表

    电子发烧友网站提供《N沟道,100 V,1.09 mOhm,具有增强SOA的MOSFET CCPAK1212i包目标数据表.pdf》资料免费下载
    发表于 02-20 10:57 0次下载
    N沟道,100 V,1.09 mOhm,具有<b class='flag-5'>增强</b>SOA的MOSFET  <b class='flag-5'>在</b>CCPAK1212i包<b class='flag-5'>中</b>目标数据表