ebpf的简单学习
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
可以参考火焰图进行生成.
ebpf的简单学习的更多相关文章
- Log4j简单学习笔记
log4j结构图: 结构图展现出了log4j的主结构.logger:表示记录器,即数据来源:appender:输出源,即输出方式(如:控制台.文件...)layout:输出布局 Logger机滤器:常 ...
- shiro简单学习的简单总结
权限和我有很大渊源. 培训时候的最后一个项目是OA,权限那块却不知如何入手,最后以不是我写的那个模块应付面试. 最开始的是使用session装载用户登录信息,使用简单权限拦截器做到权限控制,利用资源文 ...
- CentOS 简单学习 firewalld的使用
1. centos7 开始 使用firewalld 代替了 iptables 命令工具为 firewall-cmd 帮助信息非常长,简单放到文末 2. 简单使用 首先开启 httpd 一般都自带安装了 ...
- Windows 下 Docker 的简单学习使用过程之一 dockertoolbox
1. Windows 下面运行 Docker 的两个主要工具1): Docker for Windows2): DockerToolbox区别:Docker For Windows 可以理解为是新一代 ...
- 在MVC中实现和网站不同服务器的批量文件下载以及NPOI下载数据到Excel的简单学习
嘿嘿,我来啦,最近忙啦几天,使用MVC把应该实现的一些功能实现了,说起来做项目,实属感觉蛮好的,即可以学习新的东西,又可以增加自己之前知道的知识的巩固,不得不说是双丰收啊,其实这周来就开始面对下载在挣 ...
- Linux——帮助命令简单学习笔记
Linux帮助命令简单学习笔记: 一: 命令名称:man 命令英文原意:manual 命令所在路径:/usr/bin/man 执行权限:所有用户 语法:man [命令或配置文件] 功能描述:获得帮助信 ...
- OI数学 简单学习笔记
基本上只是整理了一下框架,具体的学习给出了个人认为比较好的博客的链接. PART1 数论部分 最大公约数 对于正整数x,y,最大的能同时整除它们的数称为最大公约数 常用的:\(lcm(x,y)=xy\ ...
- mongodb,redis简单学习
2.mongodb安装配置简单学习 配置好数据库路径就可以mongo命令执行交互操作了:先将服务器开起来:在开个cmd执行交互操作 ...
- html css的简单学习(三)
html css的简单学习(三) 前端开发工具:Dreamweaver.Hbuilder.WebStorm.Sublime.PhpStorm...=========================== ...
- html css的简单学习(二)
html css的简单学习(二) <!Doctype html>告诉浏览器,这是一个html文档.lang="en" 默认是en,表示英语:zh-Hans 中文简体:z ...
随机推荐
- Java 在Excel中添加筛选器并执行筛选
以下内容介绍通过Java程序在Excel添加筛选器并执行筛选.程序需要使用Excel工具类库Free Spire.XLS for Java,本文中使用的是免费版,可在官网下载jar包,解压导入jar文 ...
- 容器中域名解析流程以及不同dnsPolicy对域名解析影响
本文分享自华为云社区<容器中域名解析流程以及不同dnsPolicy对域名解析影响>,作者:可以交个朋友 . 一.coreDNS背景 部署在kubernetes集群中的容器业务通过coreD ...
- ECS实践案例丨逻辑卷的创建和扩容操作指导
摘要:实现跨硬盘使用,在传统硬盘之上的一层,在云服务器中可以实现跨EVS使用,用户在某些场景需要创建逻辑卷或者对已有的逻辑卷进行扩容处理,或者在某些时候由于误操作导致上述操作失败. [背景描述]: 实 ...
- 华为云GaussDB(for openGauss)商用啦!
摘要:截止目前,华为消费者云已在GaussDB(for openGauss)上线了40+业务,包括弹幕&评论.云空间.地理大数据等业务系统,实时为5亿+用户提供高效服务. 生命在于运动,健康打 ...
- Hive查看,删除分区
查看所有分区 show partitions 表名; 删除一般会有两种方案 1.直接删除hdfs文件 亲测删除hdfs路径后 查看分区还是能看到此分区 可能会引起其他问题 此方法不建议 2. 使用删除 ...
- Walrus 入门教程:如何创建模板以沉淀可复用的团队最佳实践
模板是 Walrus 的核心功能之一,模板创建完成后用户可以重复使用,并在使用过程中逐渐沉淀研发和运维团队的最佳实践,进一步简化服务及资源的部署.用户可以使用 HCL 语言自定义创建模板,也可以一键复 ...
- Kubernetes(K8S) Deployment 拉取阿里云镜像部署
Docker Image 推到阿里云仓库,可以看 SpringBoot Docker 发布到 阿里仓库 1. 阿里镜像仓库加了授权,所以 K8S 拉之前要做下授权处理 [root@k8smaster ...
- 多种方式实现 Future 回调返回结果
JDK 实现 public class FutureTest { public static void main(String[] args) throws Exception { Executor ...
- Python Type Hints 从入门到实践
Python 想必大家都已经很熟悉了,甚至关于它有用或者无用的论点大家可能也已经看腻了.但是无论如何,它作为一个将加入高考科目的语言还是有它独到之处的,今天我们就再展开聊聊 Python. Pytho ...
- 销售订单BAPI增强
一.需求背景 在销售订单批导时,需要调用BAPI:BAPI_SALESORDER_CREATEFROMDAT2维护成本中心字段, 二.增强实现 BAPI中没有该字段,需要通过增强的方式导入.通过BAP ...