ebpf 单行程序学习


背景

公司方神借给我一本:
《BPF之巅:洞悉linux系统和应用性能》纸质书
拿回家晚上在沙发上看了几天。
感觉书很厚看的不是很系统。
仅能凭自己的感觉总结一下这些天的读书感悟。
本来计划是2023年的春节 7 天长假系统的学习ebpf
但是因为学习Linux内核参数耽搁了。
工作后又各种忙和慌乱一直没有时间学习。
已经快跟上我立减肥flag倒的程度了。。。

一些基本理解

cbpf和ebpf的基本概念都不在阐述。
我理解ebpf之后其实核心的工具主要是bcc以及bpftrace
bcc是高手们自己利用python或者是go语言编写的工具集,用于实现特定的功能。
bpftrace 可以用于实现单行程序,更加符合unix do one thing do it well的哲学。 本次向简单理一下bpftrace的单行程序的理解。
便于后续的学习和使用。 bpftrace单行程序很类似于 awk 的语法。 通过attach 到不同的探针,跟踪点,来获取内核的核心信息

bpftrace的语法格式

注意:这些内容参照Brendan Greeg书中的附录部分。
bpftrace -e 'probe /filter/ {action;}'
通过这个命令就可以实现对特定探针的信息收集等工作。 注意使用之前需要先安装 bpftrace 可以在线安装: yum install bpftrace -y 即可。
注意 -e 表明是跟踪这个探针
-l 列出探针,不跟踪
-c 执行命令

bpftrace的部分举例

1. 跟踪新进程。包括进程参数
bpftrace -e 'tracepoint:syscalls:sys_enter_execve { join(args->argv);}' 2. 统计系统调用的数量
timeout 3 bpftrace -e 'tracepoint:raw_syscalls:sys_enter {@[pid,comm] = count();}'
注意这个命令可以统计最近三秒内的系统调用数量。如果不加时间可以使用 ctrl + c 的方式终止跟踪执行打印 3. bpftrace -e 'software:page-faults:1 {@[pid,comm] = count();}'
注意 如果不知道有哪一些probe 可以使用可以通过这个命令来获取
bpftrace -l 'software:*'
注意 原作者的附录里面page-fault 是错误的,需要改为复数形式。 4. 统计vfs调用
bpftrace -e 'kprobe:vfs_* {@[probe] = count();}'
注意这个是内核及的 kprobe kernel-probe 5. 统计io尺寸。可以验证数据库的块大小相关
bpftrace -e 't:block:block_rq_issue {@bytes = hist(args->bytes);}'
注意 t 是 tracepoint的缩写。 6. 按照pid和进程名统计
bpftrace -e 't:syscalls:sys_enter_connect {@[pid,comm] = count();}' 7. 直方图统计udp发送的字节数
timeout 3 bpftrace -e 'k:udp_sendmsg {@send_pytes = hist(arg2);}' 困了 今天到这。。

ebpf 单行程序学习的更多相关文章

  1. 通过反汇编C语言小程序学习Liunx汇编语言

    大家好!    我是来自山东师范大学的吴乐.    今天在<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ...

  2. 微信小程序 学习资料

    微信小程序 学习资料 资料名称 网址 官方教程 https://developers.weixin.qq.com/miniprogram/dev/index.html?t=18110517

  3. Tuxedo安装、配置、以及演示样例程序 (学习网址)

    Tuxedo安装.配置.以及演示样例程序 (学习网址): 1.http://liu9403.iteye.com/blog/1415684 2.http://www.cnblogs.com/fnng/a ...

  4. Java开发桌面程序学习(一)——JavaFx+Jfoenix初始以及搭建

    Java开发桌面程序学习(一)--JavaFx+Jfoenix初始以及搭建 前言 想做一个Java的桌面程序,但是,使用原生的Swing感觉又十分麻烦,那个布局都是拿代码设置,看着十分的乱,偶然的情况 ...

  5. 【微信小程序学习笔记】入门与了解

    [微信小程序学习笔记(一)] IDE 下载安装 下载地址 官方工具:https://mp.weixin.qq.com/debug/w … tml?t=1476434678461 下载可执行文件后,可按 ...

  6. 微信小程序学习笔记二 数据绑定 + 事件绑定

    微信小程序学习笔记二 1. 小程序特点概述 没有DOM 组件化开发: 具备特定功能效果的代码集合 体积小, 单个压缩包体积不能大于2M, 否则无法上线 小程序的四个重要的文件 *js *.wxml - ...

  7. 微信小程序学习笔记一 小程序介绍 & 前置知识

    微信小程序学习笔记一 1. 什么是小程序? 2017年度百度百科十大热词之一 微信小程序, 简称小程序, 英文名 Mini Program, 是一种不需要下载安装即可使用的应用 ( 张小龙对其的定义是 ...

  8. 【C#】1.3 WPF应用程序学习要点

    分类:C#.VS2015 创建日期:2016-06-14 使用教材:十二五国家级规划教材<C#程序设计及应用教程>(第3版) 一.要点概述 <C#程序设计及应用教程>(第3版) ...

  9. 微信小程序学习

    官方网站 https://mp.weixin.qq.com/debug/wxadoc/dev/index.html 项目结构介绍 -- MINA框架 https://mp.weixin.qq.com/ ...

  10. ios 程序学习

    马上着手开发iOS应用程序:五.提交应用与寻找信息 2013-01-11 15:36 佚名 apple.com 我要评论(0) 字号:T | T 本文介绍了您已经学习完如何开发一个优秀的iOS应用之后 ...

随机推荐

  1. 解放重复劳动丨华为云IoT API Explorer对接小程序实现系统化应用

    摘要:<物联网平台接口调用实验>详细讲解了API Explorer的应用,根据提供的接口,结合真实案例,制作了一个小程序,真正的把它应用起来,解放重复劳动,小程序是一个很好的平台,作为应用 ...

  2. 通过windows自带管理工具、系统命令行、快捷键等快速操作

    windows自带管理工具 我们win+R 输入一些命令,可以快速打开一些界面,比如: sysdm.cpl win10.win11 我电脑,属性与之前win7不同了,我希望打开之前的属性打不开了 通过 ...

  3. Mac 向日葵设置

  4. 【Django-Vue】手机号是否存在接口 多方式登录接口 腾讯云短信介绍和申请 api与sdk

    目录 昨日回顾 今日内容 0 登录注册功能设计 1 短信登录接口 视图类 2 多方式密码登录接口 视图类 序列化类 路由 3 腾讯云短信介绍和申请 3.1api与sdk 补充 练习 昨日回顾 # 你的 ...

  5. javascript yield

    代码: function delay(time) { return new Promise(function (resolve, reject) { setTimeout(() => { res ...

  6. 神经网络优化篇:详解RMSprop

    RMSprop 知道了动量(Momentum)可以加快梯度下降,还有一个叫做RMSprop的算法,全称是root mean square prop算法,它也可以加速梯度下降,来看看它是如何运作的. 回 ...

  7. 经典Python案例实现

    入门_30个常用python实现 .pdf 一. 二. 三. 四. 五.函数篇 5.1 计算圆的面积 from math import pi as PI def CircleArea(r): if i ...

  8. TapTap 算法平台的 Serverless 探索之路

    分享人:陈欣昊,TapTap/IEM/AI平台负责人 摘要:本文主要介绍心动网络算法平台在Serverless上的实践. <TapTap算法平台的 Serverless 探索之路> Ser ...

  9. java进阶(17)--Random

    一.Random随机数 java.unil.Random类 Random randomnum = new Random(); int num = randomnum.nextInt();   二.举例 ...

  10. for-each循环使用iterator进行遍历

    示例如下: public static void main(String args[]) { List list = new LinkedList(); list.add("aa" ...