Linux内核调试与性能优化

计算机系统性能优化理论 #

描述了实际项目中性能优化的五个方面

Profile——针对优化目标进行性能测试摸底

Analyze——分析性能的瓶颈和焦点

Root——刨根问底,找出问题的根本原因

Optimize——设法突破瓶颈和优化性能

Test——测试验证性能优化成效

上述过程是一个迭代循环过程

printk——简单强大调试工具 #

内核提供的格式化显示输出函数 [环形缓冲机制]

输出级别——在终端或串口输出的判断依据

系统运行时输出级别的查看与修改

debugfs 文件系统及动态输出 #

动态输出(Dynamic printk)

proc 文件系统(系统及进程信息) #

内核和内核模块向用户空间发送消息的机制

本质上并非真正意义的文件系统,存在于内存,而不占用磁盘空间

典型应用场景

sys 文件系统及新型设备驱动模型 #

引入缘由

新型设备驱动模型

OOPS 错误分析及示例 #

OOPS(Out-of-Process Space)

OOPS 内核模块示例(Makefile、OOPS_LKM.c)

实验过程及工具

内存检测工具及应用 #

slub-debug

kmemleak

kasan(kernel address sanitizer)

valgrind

kdump

基于 slub-debug 的内存检测

性能/功耗指标及 Linux 性能测试工具 #

PnP(Performance And Power)

性能与功耗是一对矛盾体

KPI(Key Performance Indicator)

性能指标

功耗指标

Linux 性能测试工具