首页 > 其他分享 >ebpf的简单学习

ebpf的简单学习

时间:2023-04-16 09:00:55浏览次数:36  
标签:perf bpftrace 可以 ebpf 学习 简单 工具 tools

ebpf的简单学习-万事开头难


前言

bpf 值得是巴克利包过滤器
他的核心思想是在内核态增加一个可编程的虚拟机. 
可以在用户态定义很多规则, 然后直接在内核态进行过滤和使用. 
他的效率极高. 因为避免了上下文切换,中断等导致的cycle损失. 

很多先进的工具,比如XDP以及K8S的cilium等网络组件.都是基于ebpf而来.
因为bpf最初的寄存器太少,并且仅是实现了包过滤,
ebpf增加了寄存器的数量,实现了更多的功能. 

类似于Intel的DPDK工具也是类似的原理,直接用户态操作硬件资源. 

工具

ebpf有很多工具. 学习起来也是很痛苦(从春节鸽到现在)
最近实在忍受不了自己的拖沓了, 晚上学习了下简单的bpftrace以及perf-tools.
想着能够简单总结一下, 避免一直不作为. 

很多需要写c 代码的地方我不是很熟. 计划今年要进行这一块的深入学习. 

安装

bpftrace 需要内核比较新, 建议是 4.15 以上, 越新越好.
perf-tools 是性能大神 Brendan Gregg 编写的一套工具.

yum install bpftrace -y 可以安装对应的一套工具, 在线安装
默认仓库是: AppStream

git clone --depth 1 https://github.com/brendangregg/perf-tools
可以用来安装perf-tools工具
里面有很多类似的工具可以使用. 比如cachetop, cachestat等. 

bpftrace的简单用法

bpftrace -e 'uretprobe:/bin/bash:readline { printf("%s\n", str(retval)); }'
如上命令可以跟踪所有的shell脚本读取执行的命令. 

效果为:
[root@PG15 bin]# bpftrace -e 'uretprobe:/bin/bash:readline { printf("%s\n", str(retval)); }'
Attaching 1 probe...
ping 8.8.8.8
ifconfig

bpftrace的说明

bpftrace 其实是一种调试分析程序的方法

不同于测试环境可以debug. 生产环境基本上没有debug的条件:
1. 现在很多镜像部署, 都是最小化打包,一方面提高性能,减少内存占用, 另一方面减少磁盘文件大小,减少镜像大小.
2. debug的断点会导致生产环境卡顿, 只要不是有受虐倾向的客户(或者是喝茶看报纸的客户)都会大为光火

所以bpftrace可能就是一个很好的解决方案了.
但是bpftrace需要对产生异常的代码非常熟悉,要了解到具体产生异常的系统调用.
有时需要使用 readelf等方式获取具体的调用才可以.
方法比较复杂, 我这边还没入门, 也没法详细解释了.

perf-tools

Brendan Gregg 大神的工具集. 

注意perf-tools不区分架构, arm和x86都可以使用. 主要是脚本为主.
cachestat  cachetop 是几个比较基本的命令
注意部分工具需要安装 yum install perf 才可以使用 

需要说明, x86都可以进行使用, 但是arm的很多命令存在异常, 需要修复. 


举例

 ./syscount 
 control + c 会出现如下的信息. 
[ perf record: Captured and wrote 3.537 MB perf.data (27102 samples) ]
COMM                COUNT
rpcbind                 1
lsmd                    4
gmain                  12
sssd_be                12
sshd                   18
perf                   25
NetworkManager         55
in:imjournal           56
sssd_nss              264
tuned                1167
redis-server         1255
aliyun-service       1621
AliYunDunUpdate      1721
AliYunDun           20891

可以参考火焰图进行生成. 

标签:perf,bpftrace,可以,ebpf,学习,简单,工具,tools
From: https://www.cnblogs.com/jinanxiaolaohu/p/17322517.html

相关文章

  • Linux学习安装
    ncpa.cpl查看网络连接1、安装Vmware注意事项:版本不匹配[(24条消息)创建Linux报错“与vmx86驱动程序的版本不匹配:预期为410.0,实际为360.0”_vmx86驱动程序的版本不匹配_学习学习学习,再学习的博客-CSDN博客](https://blog.csdn.net/qq_54132332/article/details/123......
  • 深度学习Pytorch中组卷积的参数存储方式与剪枝的问题
    写这个主要是因为去年做项目的时候需要对网络进行剪枝普通卷积倒没问题涉及到组卷积通道的裁剪就对应不上当时没时间钻研现在再看pytorch钻研了一下仔细研究了一下卷积的weight.data的存储1.搭建网络这里先随便搭建一下网络放几个深度可分离卷积和普通卷积import......
  • 只有 3 项的开发人员日常检查清单是优雅的简单
    待办事项列表通常是垃圾。他们只会变得更长。你有一种一直在跑步机上的感觉。对于大多数开发人员来说,我们永远不会完成我们的待办事项列表。从这个意义上说,待办事项清单是一种令人沮丧的生产力工具。但是,如果您提炼出一份最重要、最可完成的任务清单,会怎样呢?想象一下,使用更简......
  • 华为datacom-HCIP学习
    什么是Datacom认证?Datacom,即DatacomCommunication的缩写,中文为“数据通信”,属于ICT技术架构认证类别(华为认证包含ICT技术架构认证、平台与服务认证和行业ICT认证三类认证)。作为Routing&Switching认证的升级版,Datacom认证已于2020年4月18日正式发布,后续将替代Routing&Switc......
  • DrawerLayout的简单使用
    本节给大家带来基础UI控件部分的最后一个控件:DrawerLayout,官方给我们提供的一个侧滑菜单控件,和上一节的ViewPager一样,3.0以后引入,低版本使用它,需要v4兼容包,说到侧滑,相信很多人都用过github上的SlidingMenu,不过好像有两个版本,一个是单独的,另一个需要依赖另一个开源项目:ActionBarSher......
  • 深度学习快速参考:11~13
    原文:DeepLearningQuickReference协议:CCBY-NC-SA4.0译者:飞龙本文来自【ApacheCN深度学习译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。不要担心自己的形象,只关心如何实现目标。——《原则》,生活原则2.3.c十一、训练Seq2Seq模型在上一章中,我们讨论了文档分类以......
  • Python 迁移学习实用指南:6~11
    原文:Hands-OnTransferLearningwithPython协议:CCBY-NC-SA4.0译者:飞龙本文来自【ApacheCN深度学习译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。不要担心自己的形象,只关心如何实现目标。——《原则》,生活原则2.3.c六、图像识别与分类知识投资永远是最大的利益。......
  • 深度学习快速参考:1~5
    原文:DeepLearningQuickReference协议:CCBY-NC-SA4.0译者:飞龙本文来自【ApacheCN深度学习译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。不要担心自己的形象,只关心如何实现目标。——《原则》,生活原则2.3.c一、深度学习的基础欢迎使用《深度学习快速参考》!在本书......
  • TensorFlow 深度学习实战指南:1~5 全
    原文:Hands-onDeepLearningwithTensorFlow协议:CCBY-NC-SA4.0译者:飞龙本文来自【ApacheCN深度学习译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。不要担心自己的形象,只关心如何实现目标。——《原则》,生活原则2.3.c一、入门TensorFlow是Google最近发布的新的......
  • fastdds学习之3——库概览
    FastDDS(前身为FastRTPS)是DDS规范的高效高性能实现,DDS规范是一种用于分布式应用软件的以数据为中心的通信中间件(DCPS)。本节回顾FastDDS的体系结构、操作和关键特性。1、架构FastDDS的架构如下图所示,其中可以看到具有以下不同环境的层模型。ApplicationLayer:使用FastDDSA......