Files
LDD-LinuxDeviceDrivers/study/kernel/00-DESCRIPTION/TOOLS.md
T

16 KiB

title, date, author, tags, categories, thumbnail, blogexcerpt
title date author tags categories thumbnail blogexcerpt
工具 2021-06-26 09:40 gatieme
linux
tools
技术积累
虚拟化 & KVM 子系统

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可, 转载请注明出处, 谢谢合作

知识共享许可协议

因本人技术水平和知识面有限, 内容如有纰漏或者需要修正的地方, 欢迎大家指正, 鄙人在此谢谢啦

转载请务必注明出处, 谢谢, 不胜感激


日期 作者 GitHub CSDN BLOG
2021-02-15 成坚-gatieme AderXCoding/system/tools/fzf 使用模糊搜索神器 FZF 来提升办公体验 Using FZF to Improve Productivit

工具

--------------- 重要功能和时间点 ---------------**

下文将按此目录分析 Linux 内核中 MM 的重要功能和引入版本:

--------------- 正文 ---------------**

1 开发工具


社区一直在寻求一种非邮件列表的内核开发方式

  1. Pulling GitHub into the kernel process

  2. How Red Hat uses GitLab for kernel development

  3. Moving Google toward the mainline

2 调试工具


2.1 debug


systrace, perfetto, drgn, systemtep

All my favorite tracing tools: eBPF, QEMU, Perfetto, new ones I built and more 将 eBPF 跟踪与 Perfetto 可视化相结合, 通过使用一些巧妙的技巧来诊断大量跟踪中的尾部延迟问题.

Perfetto数据流架构故障分析:带你研究 trace 为何丢失

时间 作者 特性 描述 是否合入主线 链接
2019/05/29 Sandoval @ Facebook A kernel debugger in Python: drgn 一款 kernel 调试器, 可以利用 Python 脚本来访问正在运行的 kernel 里的数据结构
Drgn 在 LSFMM2019 被公开, LWN 随即进行了报道 A kernel debugger in Python: drgn, 随后 2021 年报道drgn: How the Linux Kernel Team at Meta Debugs the Kernel at Scale (Meta), Meta 的内核团队使用了 Drgn 跟踪内核中出现的问题, 并贡献了非常分布的用例集合.
Github, User Guide, BPF drgn tools
2021/11/21 David Woodhouse dwmw2@infradead.org Microsoft-Performance-Tools-Linux-Android Microsoft 发布了一款 Linux/Android 的性能分析工具 Performance Tools For Linux/Android, 一组跟踪处理工具, 它提供了许多强大的功能、功能、方法和生态系统, 这些功能、功能、方法和生态系统在过去 15 年多的时间里一直用于通过不断发展和更新的工具集来推动系统的性能. 支持通过 LTTng、perf 和 Perfetto 对系统进行分析. v1 ☐ LWN
  • DRGN

[LWN/A kernel debugger in Python: drgn(https://lwn.net/Articles/789641) LWN: 想用python命令来调试kernel吗?drgn就是了! pf-kernel/crush crush 是一种实验性尝试, 至少部分地使用 Python 和更现代的 drgn 后端重写 crash util.

  • ControlFlag

Intel 发布的 ControlFlag 用机器学习来发现代码中的错误, 支持 C/C++. 参见:

Intel Makes ControlFlag Open-Source For Helping To Detect Bugs In Code

Intel's ControlFlag 1.2 Released To Use AI To Provide Full Support For Spotting C++ Bugs.

  • systemtap
时间 作者 特性 描述 是否合入主线 链接
2019/05/29 Alex Feng lifeng1519@gmail.com Kernel Visualization Tool 该工具用于分析 Linux/Solaris/BSD 内核指定流程的调用关系链, 并绘制特定函数的调用图,帮助开发者理解代码. Kernel Visualization Tool
  • Dtrace

Oracle Releases DTrace 2.0.0-1.14 For Linux Systems

2.2 call kernel func from userspace


时间 作者 特性 描述 是否合入主线 链接
2012/06/23 Peiyong Feng peiyong.feng.kernel@gmail.com Implement uhook(call kernel func from userspace) driver 提供了 uhook(userspace kernel hook) 驱动和工具用于在用户态直接调用内核态的函数, 这对于调试内核非常有帮助. v1 ☐ LWN, bigfeng12/uhook
-------
LKML1, LKML2

2.3 stack backtrace


在内核态尝试 dump 用户态的栈对调试是非常有帮助的.

Dumping User and Kernel Stacks on Kernel Events

how to print stack trace in-your-user

how-to-dump-user-space-stack-in-kernel-space

时间 作者 特性 描述 是否合入主线 链接
2019/06/23 胡俊鹏 and dongzhiyan_linux@163.com dongzhiyan-stack/user_stack_backstrace-in-kernel 海康 CLK 2019 的一个 slides, 内核态回溯用户态栈. 对于一些比较难解析符号的场景也有对策 v1 ☐ github
2012/4/11 "Tu, Xiaobing" xiaobing.tu@intel.com kernel patch for dump user space stack tool 内核态回溯用户态栈. v1 ☐ LKML RFC 1/2
2023/05/01 Indu Bhagat indu.bhagat@oracle.com SFrame based stack tracer for user space in the kernel Reliable user-space stack traces with SFrame 以及 SFrame: fast, low-overhead stack traces. v1 ☐☑✓ LORE v1,0/5

2.4 patchwork


时间 作者 特性 描述 是否合入主线 链接
2021/01/10 Joe Perches joe@perches.com Documentation: Replace lkml.org links with lore 补丁将内核中 lkml 的链接转换为 lore.kernel.org 的链接. 补丁描述中提供了一个脚本来完整这个工作. v1 ☑ 5.12-rc1 commit
2020/02/06 Joe Perches joe@perches.com B4 Better tools for kernel developers 补丁将内核中 lkml 的链接转换为 lore.kernel.org 的链接. 补丁描述中提供了一个脚本来完整这个工作. v1 ☑ 5.12-rc1 GIT, elinux

Sending a kernel patch with b4 (part 1), Konstantin Ryabitsev 的博客展示如何使用 B4 提交内核补丁, 无需(直接)使用电子邮件.

patchwork 提供了 API 可以获取到各个 patchwork 子项目的 ID 等信息. xuliker/kde 接着 patchwork 的 API, 提供了一个获取制定日期各个 patchwork 项目上邮件的脚本 get_mm_patch_series_today.sh

2.5 静态扫描工具


Static code checking In the Linux kernel

2.6 topology 获取工具


RRZE-HPC 的 likwid(Like I knew what I am doing):Performance monitoring and benchmarking suite 工具集提供了多个工具辅助开发人员获取硬件的信息和性能数据. 虽然 LIKWID 的重点最初是 x86 处理器, 但后期逐渐开始支持 x86、ARM 和 POWERPC 以及 Nvidia 等处理器. 代码仓库地址 github.

编号 应用 功能
1 likwid-topology 获取 CPU 硬件的拓扑结构.
2 likwid-perfCtr 测量CPU的硬件性能计数器.
3 likwid-powermeter .
4 likwid-pin 开发多线程(pthread_create)以及 OpenMP 并发应用的时候经常希望各个线程绑定在不同的 CPU 上, pin 工具提供了一个灵活的配置来完成这个功能, 而不需要开发者修改代码.
5 likwid-bench 快速创建和运行不同类型的基准测试程序
6 likwid-features: 获取和修改 CPU 硬件上的一些特性/功能
7 likwid-mpirun NA
8 likwid-powermeter 获取通过 MSR 寄存器读取和配置 RAPL 计数的工具, 可以进行控制配置和读取 Intel 处理器和内存的能耗信息, 查询给定时间段内包内消耗的能量并计算产生的功耗.
9 likwid-memsweeper 清理 ccNUMA/Cache Coherent NUMA 结构中缓存的 cache 以及 last level cache 的数据
10 likwid-setFrequencies 操纵频率的工具
11 likwid-agent likwid-agent 是一种守护应用程序, 它使用 likwid-perfctr 来测量硬件性能计数器.
12 likwid-genTopoCfg 获取当前系统的硬件 CPU 拓扑信息.
13 likwid-perfscope 使用 gnuplot 执行实时性能数据绘图的工具.

2.7 eBPF


Kernel analysis with bpftrace

2.8 增加时延


netem

2.9 耗时分析


2.10 DEBUGINFO


RedHat 一直领导着调试信息方面的生态系统工作, 自 Fedora 35 以来, 它一直默认使用 debuginfod 来辅助工作, debuginfod 通过 HTTP API 提供调试信息服务, 无需在本地使用所有 debuginfo package, 只需向远程服务器查询所需的 debuginfo 信息即可. 既节省了磁盘空间, 使用起来又相当方便.

Arch Linux 在 2022 年 5 月份开始了也提供了他们的 debuginfod 调试信息服务器. 参见 wiki.archlinux--Debugging/Getting traces

接着 Ubuntu 22.10 也开始集成 debuginfod, 参见 phoronix 报道

3 安全


3.1 Kasper


Kasper: a tool for finding speculative-execution vulnerabilities Scanning for Generalized Transient Execution Gadgets in the Linux Kernel GitHub Paper

4 运维工具


工具 主页 描述
kmon NA 用于管理 Linux 内核模块和监视内核活动的终端工具, 使用 Rust 编写.
Sysinternals/ProcDump-for-Linux sysinternals ProcDump 是 windows 下一个实用维测工具, 其主要用途是监视应用程序的 CPU 峰值, 并在出现峰值期间生成故障转储. 这个为官方 LINUX 移植版本.

5 性能分析工具


Intel Makes Continuous Profiler Open-Source To Help Improve CPU Performance

6 测试


时间 作者 特性 描述 是否合入主线 链接
2024/02/28 Helen Koike helen.koike@collabora.com kci-gitlab: Introducing GitLab-CI Pipeline for Kernel Testing GitLab CI for the kernel. v1 ☐☑✓ LORE v1,0/3