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应用之后 ...
随机推荐
- Karmada 结合 coreDNS 插件实现跨集群统一域名访问
本文分享自华为云社区<Karmada 结合 coreDNS 插件实现跨集群统一域名访问>,作者:云容器大未来 . 在多云与混合云越来越成为企业标配的今天,服务的部署和访问往往不在一个 K8 ...
- IaC 存储最佳实践
往往一些成功的软件公司在构建解决方案的时候十分注重其可重复性.可审计性.和简便性,而基础设施即代码(IaC)的出现让开发人员能够将这些时间应用于基础设施的分配.目前的存储 IaC 的实践有以下三种: ...
- 【短道速滑四】Halcon的texture_laws算子自我研究
Halcon里有个texture_laws 算子,最近实现了下,记录下相关细节. Halcon的文档里对该算子是这样描述的: texture_laws - Filter an image using ...
- .NET 6 整合 Autofac 依赖注入容器
前言 一行业务代码还没写,框架代码一大堆,不利于学习. 常看到java的学习资料或博客,标题一般为<SpringBoot 整合 XXX>,所以仿照着写了<.NET 6 整合 Auto ...
- Codeforces Global Round 12(个人题解)
1450A. Avoid Trygub 挺简单的题,题意是避免字符串中有子串"Trygub" 只要给字符串排序就可以了,这样一定不会出现 void solve() { string ...
- Sentinel 是如何做限流的
限流是保障服务高可用的方式之一,尤其是在微服务架构中,对接口或资源进行限流可以有效地保障服务的可用性和稳定性. 之前的项目中使用的限流措施主要是Guava的RateLimiter.RateLimite ...
- debian更新openssh 9.6
先更新一下,然后安装libssl-dev zlib1g-dev依赖文件 apt update apt install build-essential apt-get install -y libssl ...
- 基于Kubernetes的Serverless PaaS稳定性建设万字总结
作者:许成铭(竞霄) 数字经济的今天,云计算俨然已经作为基础设施融入到人们的日常生活中,稳定性作为云产品的基本要求,研发人员的技术底线,其不仅仅是文档里承诺的几个九的 SLA 数字,更是与客户切身利益 ...
- 又一创新!阿里云 Serverless 调度论文被云计算顶会 ACM SoCC 收录
近日,阿里云函数计算产品团队撰写的关于 Serverless 调度的创新性论文,被云计算领域 ACM SoCC 国际会议长文录用. 去年阿里云函数计算团队首个提出在 FaaS 场景下的去中心化快速镜像 ...
- Spring Boot Serverless 实战系列“部署篇” | Mall 应用
导读:SpringBoot 是基于 Java Spring 框架的套件,它预装了 Spring 的一系列组件,让开发者只需要很少的配置就可以创建独立运行的应用程序.在云原生的世界里,有大量的平台可以运 ...