bpftrace学习 bpftrace的语法类似awk,熟悉awk的朋友这下有福了,一切看起来都是那么亲切。 语法结构1bpftrace -e 'BEGIN{} 探针,探针 /条件/{执行语句} 探针 /条件/{执行语句} ... END{}' 和awk语法相似,只是中间的每个执行语句是针对当时的探针触发点。条件不 2026-04-02 #技术/bpf
linux内核函数动态追踪 我们看函数时,非常关心两件事:(1)怎么调到这个函数来的;(2)这个函数内部又会调用哪些函数(到哪儿去)。除了一点点搜索代码,查看代码外,还可以使用内核的动态追踪工具来观察它们。 当前运行的系统为ubuntu 24.04(kernel 6.8.0) 动态查看调用栈 – 从哪儿来(1) 检查是否有对应的事件这里使用bpftrace来进行跟踪,首先第一步检查我们想要跟踪的函数是否有对应的事件bpf 2026-04-02 #技术/bpf
linux内核调试器ftrace使用 linux内核调试器ftrace使用 本文的实验是在ubuntu(内核版本3.19.0)上运行的。 ftrace原理ftrace是一个追踪器框架,其中一个强大的追踪器就是函数追踪器(即函数的调用过程)。它使用gcc的-pg选项让内核中的每个函数在执行前都调用一个特殊的函数mcount()。该函数本来是在c库中实现,用于prof跟踪调试性能。内核不链接C库,所以就利用了这个gcc特性。mcount 2018-06-02 #技术/内核
xdp高速转发小demo 我们知道linux内核转发数据包的路径非常冗长,要经过bridge,netfilter,路由等,导致性能低。而XDP的点位非常靠前,把转发做在XDP里面有没有搞头?下文就做一个写死的demo小程序,看看XDP里面能不能把数据包转发出去,性能能提高多少。 环境搭建参考搭建参考 [[单台设备如何模拟测试数据转发性能]] xdp程序123456789101112131415161718192021 2026-04-01 #技术/bpf
单台设备如何模拟测试数据转发性能 本文的实验是在ubuntu(内核版本3.19.0)上运行的。 ftrace原理ftrace是一个追踪器框架,其中一个强大的追踪器就是函数追踪器(即函数的调用过程)。它使用gcc的-pg选项让内核中的每个函数在执行前都调用一个特殊的函数mcount()。该函数本来是在c库中实现,用于prof跟踪调试性能。内核不链接C库,所以就利用了这个gcc特性。mcount函数必现在汇编中实现,因为调用不遵循 2026-04-01 #未分类
ros ipv6配置 ros ipv6配置官方文档:https://wiki.mikrotik.com/wiki/Manual:TOC 拓扑图flowchart TB gm("光猫(桥模式)") ROS(("ROS")) R1("Router1") R2("Router2") R3("Router3...") 2022-03-22 #工具
ubuntu的日志管理journalctl 在 Linux 系统中,目前主流使用的systemd管理系统,journalctl 是systemd管理和查看系统日志的主要工具,提供了许多用于处理日志的选项。以下是一些 journalctl 的常用命令。 查看日志 查看所有日志: journalctl 查看特定服务日志: journalctl -u [服务名],例如 journalctl -u ssh 逆序查看日志:journalctl -r 2024-02-07 #工具/systemd
tcpdump抓包实时发送到远程主机解析 将tcpdump抓到的包实时发送到另一台主机上,另一台主机通过wireshark实时解析。 使用场景嵌入式调试时抓包,有时只能在机内使用tcpdump,如果直接dump到终端,分析不方便。如果直接保存到内存,内存又怕不够。需要一种把抓到的包实时发送到远端保存解析的方法。 实现方法原理:tcpdump抓包保存到标准输出,通过管道发送到远程主机。远程主机wireshark通过管道从标准输入读取数据 2024-05-28 #工具/tcpdump
vscode clangd插件使用 以前用的微软的c/c++插件来进行代码分析,跳转。分析代码很慢,磁盘占用多。没分析完时很难跳转。 前置工作clangd分析代码一样需要编译数据库文件(compile_commands.json),需要先准备好这个文件。可以使用bear来捕获生成。 安装(1)vscode安装clangd插件 (2)ubuntu上安装clangd。 1sudo apt install clangd ub 2024-02-22 #工具/vscode
git用法总结 git使用 git 2.23之后,多了switch和restore命令,git –help已看不到checkout的踪影(还是支持)。因为checkout用法太多,语义的歧义太大了。 但是很多商业公司一直用着老旧的系统,老旧的软件,所以下面基本只会涉及checkout命令。 [toc] 配置(1)初次配置用户名邮箱 12git config --global user.name "le 2020-10-14 #工具/git