ebpf 单行程序学习
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 单行程序学习的更多相关文章
- 通过反汇编C语言小程序学习Liunx汇编语言
大家好! 我是来自山东师范大学的吴乐. 今天在<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ...
- 微信小程序 学习资料
微信小程序 学习资料 资料名称 网址 官方教程 https://developers.weixin.qq.com/miniprogram/dev/index.html?t=18110517
- Tuxedo安装、配置、以及演示样例程序 (学习网址)
Tuxedo安装.配置.以及演示样例程序 (学习网址): 1.http://liu9403.iteye.com/blog/1415684 2.http://www.cnblogs.com/fnng/a ...
- Java开发桌面程序学习(一)——JavaFx+Jfoenix初始以及搭建
Java开发桌面程序学习(一)--JavaFx+Jfoenix初始以及搭建 前言 想做一个Java的桌面程序,但是,使用原生的Swing感觉又十分麻烦,那个布局都是拿代码设置,看着十分的乱,偶然的情况 ...
- 【微信小程序学习笔记】入门与了解
[微信小程序学习笔记(一)] IDE 下载安装 下载地址 官方工具:https://mp.weixin.qq.com/debug/w … tml?t=1476434678461 下载可执行文件后,可按 ...
- 微信小程序学习笔记二 数据绑定 + 事件绑定
微信小程序学习笔记二 1. 小程序特点概述 没有DOM 组件化开发: 具备特定功能效果的代码集合 体积小, 单个压缩包体积不能大于2M, 否则无法上线 小程序的四个重要的文件 *js *.wxml - ...
- 微信小程序学习笔记一 小程序介绍 & 前置知识
微信小程序学习笔记一 1. 什么是小程序? 2017年度百度百科十大热词之一 微信小程序, 简称小程序, 英文名 Mini Program, 是一种不需要下载安装即可使用的应用 ( 张小龙对其的定义是 ...
- 【C#】1.3 WPF应用程序学习要点
分类:C#.VS2015 创建日期:2016-06-14 使用教材:十二五国家级规划教材<C#程序设计及应用教程>(第3版) 一.要点概述 <C#程序设计及应用教程>(第3版) ...
- 微信小程序学习
官方网站 https://mp.weixin.qq.com/debug/wxadoc/dev/index.html 项目结构介绍 -- MINA框架 https://mp.weixin.qq.com/ ...
- ios 程序学习
马上着手开发iOS应用程序:五.提交应用与寻找信息 2013-01-11 15:36 佚名 apple.com 我要评论(0) 字号:T | T 本文介绍了您已经学习完如何开发一个优秀的iOS应用之后 ...
随机推荐
- 文心一言 VS 讯飞星火 VS chatgpt (35)-- 算法导论5.3 5题
五.证明:在过程 PERMUTE-BY-SORTING的数组 P中,所有元素都唯一的概率至少是1-1/n. 文心一言: 证明: 在过程PERMUTE-BY-SORTING中,对于输入数组P中的每个元素 ...
- C#/.NET学习值得推荐的在线论坛和技术社区
前言 本文来源于知乎的一个提问,C#/.NET程序员学习有哪些值得推荐的在线论坛和技术社区?其实很早之前DotNetGuide就已经新增了C#/.NET/.NET Core充电站栏目,当然大家有更好的 ...
- 华为云GaussDB为MetaERP“成本核算”产品“保驾护航”
摘要:华为宣布实现了自主创新的MetaERP研发,并且完成了对旧ERP系统的全面替换,这其中,就采用了华为云GaussDB数据库特有的全密态技术,对ERP系统中的绝密数据进行加密保护,从而保障了数据的 ...
- 一个Camel Multicast组件聚合策略问题的解决过程
摘要:本文通过案例,发现了一个Camel Multicast组件聚合策略相关的问题.通过查看Camel源代码,找到了问题原因并给出了解决方案.希望本文可以帮助到遇到同样问题的Camel用户. 本文分享 ...
- mysql新增数据库新增用户并授权用户
-- 创建数据库CREATE DATABASE baseName; -- 创建用户CREATE USER 'userName' @ '访问限制' IDENTIFIED BY 'password'; ...
- Solon Web 开发:四、认识请求上下文(Context)
Handler + Context 架构,是Solon Web 的基础.在 Context (org.noear.solon.core.handle.Context)里可以获取: 请求相关的对象与接口 ...
- Interceptor Handle 执行顺序
preHandle 调用时间:Controller方法处理之前 执行顺序:链式Intercepter情况下,Intercepter按照声明的顺序一个接一个执行 若返回false,则中断执行,注意:不会 ...
- 原创内容屡屡被盗?从源头对资源盗用说NO
在这个信息化的时代,资源被盗用是一件很让人厌恶,但又很常见的事.比如,之前郭敬明的小说<梦里花落知多少>剽窃庄羽小说<圈里圈外>一事,虽然郭敬明通过个人微博向庄羽道歉,并表示& ...
- mysql--ERROR 2059 (HY000): Authentication plugin 'caching_sha2_password' cannot be loaded: /usr/lib64/mysql/plugin/caching_sha2_password.so: cannot open shared object file: No such file or directory
问题背景: 1.在授权机器上连接mysql 8.0的数据库,账号.密码都没有问题,报错 2.使用 navicat工具连接8.0版本,报错 排查思路: 可能是创建用户没有指定插件使用了8.0自带的插件, ...
- Codeforces 144A Arrival of the General (水)
A Ministry for Defense sent a general to inspect the Super Secret Military Squad under the command o ...