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 ...
随机推荐
- 让 AI “潜入”物流中心,你的快递很快就到!
摘要:华为利用数字化.智能化的手段从传统物流运营转升成为专业智慧物流,在那些"看不见的地方"华为正在默默耕耘. 网购已经成为了新时代下的"日常",于是每年的「6 ...
- 聊聊数仓中TPCD-DS&TPC-H与查询性能的那些事儿
摘要:详细讲述使用GaussDB(DWS)时,如何使用TPC-DS/TPC-H等标准数据模型,获取DWS的查询性能数据. 本文分享自华为云社区<GaussDB(DWS) <DWS之TPCD ...
- 火山引擎DataLeap如何解决SLA治理难题(一):应用场景与核心概念介绍
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 基于火山引擎分布式治理的理念,数据平台数据治理团队自研了火山引擎DataLeap SLA保障平台,目前已在字节内部 ...
- 告别数据开发中的人工审核!火山引擎 DataLeap 落地“自动校验开发规范”能力
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近期,火山引擎 DataLeap 智能市场上线"数仓建表规范"功能,该功能通过规范数仓场景下的 ...
- Axure 交互样式
- 【django-Vue】项目day01 pip永久换源 虚拟环境搭建 项目前后端创建 项目目录调整
目录 昨日回顾 1 企业项目类型 2 企业项目开发流程 3 路飞项目需求 4 pip永久换源 5 虚拟环境搭建 5.1 使用pycharm创建虚拟环境 5.2 通用方案创建虚拟环境 6 luffy项目 ...
- ABAP步循环
一.在界面中循环输出行数据,屏幕直接画出行数,需要计算翻页,一旦界面行数变动,则需要更改代码,所以引入步循环 二.步循环 首先在界面上画出要展示的内容 注意,在步循环中,文本的名称和输入框的名称不能相 ...
- 使用触发器和C#程序实现数据同步
项目中用到了Quartz,也算是Quartz的一个示例. 源库创建数据同步表SYNC_DATA: CREATE TABLE SYNC_DATA( ID VARCHAR2(36) NOT NULL, T ...
- leaflet 绘制 带箭头的线
箭头不是画的线段,是贴的图标,再按方向旋转一下. 代码: //添加箭头线 function addLineDirection(polylinePointArr, source, target) { v ...
- 【scikit-learn基础】--『监督学习』之 谱聚类
谱聚类算法基于图论,它的起源可以追溯到早期的图分割文献.不过,直至近年来,受益于计算机计算能力的提升,谱聚类算法才得到了广泛的研究和关注. 谱聚类被广泛应用于图像分割.社交网络分析.推荐系统.文本聚类 ...