概述
Tracepoint
是一种在 Linux 内核中插入的静态探测点,用于跟踪和调试内核行为。它允许开发者在特定位置插入代码,收集运行时信息,而不会显著影响性能。
原理
特性
- 静态探测点: 在内核预定义, 自定义的函数可以插入在这里
- 动态启用: 默认不启用, 减少性能开销
- 低开销
Tracepoint
是一种在 Linux 内核中插入的静态探测点,用于跟踪和调试内核行为。它允许开发者在特定位置插入代码,收集运行时信息,而不会显著影响性能。
bpftrace是一个基于eBPF的高级跟踪工具, 用于动态追踪Linux系统的行为和性能.
用于可以用简单的一行命令或者简洁的脚本,实现监控分析内核和用户空间程序的运行,而无需修改或者重新编译
sudo apt-get install bpftrace |
ld.so的路径存在于任意一个存在动态链接库的elf文件上的.interp setion中
# objdump -s -j .interp /bin/ls |
任何动态链接的程序都需要ld.so去启动,即直接执行一个动态链接库程序等价于执行 ld.so <program>
默认虚拟磁盘文件大体是在C:\Users\XXX\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu24.04LTS_79rhkp1fndgsc\LocalState
(以ubuntu2404为例)
将里面的vhdx移动到目标盘位置,比如 D:\wsl\24.04\
, 然后执行命令即可
wsl --unregister Ubuntu-24.04 |
-x 扩展信息
-m 使用MB单位
命令后跟数字x y 每x秒刷新, 显示y次
#每隔 2 秒显示一次详细的设备统计信息,共显示 5 次。 |
-c 显示cpu相关的信息
-p 指定特定设备信息,比如-p sda只展示sda下的\
sda
表示第一个SCSI磁盘设备。确保已安装 perf
和 FlameGraph
工具。
FlameGraph
通过以下命令下载
git clone https://github.com/brendangregg/FlameGraph.git |
perf
是一个强大的 Linux 性能分析工具,它可以用来收集和分析性能数据。
perf的命令有很多,下文将就其中常用的几条进行阐述
|
linux_binfmt
用来定义二进制格式的结构,代表某种 特定的格式,比如elf
struct linux_binfmt { |
linux_binprm
用来存放可执行 文件的各种参数,代表可执行文件的运行时结构
fuser
是一个非常有用的工具,可以用来查看哪些进程正在使用特定的文件、目录、或者端口。你也可以用它来查找和终止访问特定二进制文件的进程。
格式如下,如启动了一个端口为8080的tcp服务进程
sudo fuser 8080/tcp |