kernel内核、上层调试debug相关

先写一些片段化的,实例化的,写多了再写总结性的

内核调优debug,感官上主要处理一些系统卡死,cpu运行异常(比如异常处于高负载等)的场景

需要了解一些关于cpu运行的指标参数,,,

需要能追踪哪个cpu运行进程数量,运行周期,,

需要用到一些芯片厂商带的内核分析工具或者linux社区的工具,所以熟悉工具使用

下面按照这个思路展开:

在工作生活中,我们时常会遇到一些性能问题:比如手机卡顿了;造成性能问题的原因多种多样,可能是网络延迟高、磁盘 IO 慢、调度延迟高、内存回收等,这些最终都可能影响到用户态进程,进而被用户感知。

为了方便调试和测试代码健壮性,内核提供了许多与内核调试相关的配置选项。这些选项大部分都在内核配置编辑器的内核开发(kernel hacking)菜单项中。在内核配置目录树菜单的其他地方也还有一些可配置的调试选项。

1,打开nconfig

make nconfig

sudo apt install make

sudo apt install gcc

sudo apt install pkg-config

sudo apt install libncurses-dev

我特么  需要配置啥是吧   放弃了   以后再说,总之打开内核配置以后是这样的

2,配置config

printk and dmesg options

PRINTK_CALLER:调用进程

DYNAMIC_DEBUG:动态打开log打印

Memory Debugging

DEBUG_PAGEALLOC:用于跟踪和验证 page 分配和释放

SLUB_DEBUG: 启用SLUB debug支持, 还有一些调试信息比如/proc/slabinfo

SLUB_DEBUG_ON: 打开SLUB debug, 更精细的控制 kernel command line:slub_debug=*

PAGE_OWNER: page分配跟踪,还需要打开page_owner=on

Debug Oops, Lockups and Hangs

PANIC_ON_OOPS:发生oops时直接panic

SOFTLOCKUP_DETECTOR:检测软锁,cpu跑飞死循环了

BOOTPARAM_SOFTLOCKUP_PANIC:检测到softlockup立刻panic

DETECT_HUNG_TASK:hung task 检测,默认120S

WQ_WATCHDOG: workqueue stall检测

SCHEDSTATS:调度状态

DEBUG_PREEMPT:检测非安全抢占

Kmemleak

  • Kmemleak 是 Linux 内核的一个工具,专门用于检测和报告内核中的动态内存泄漏。你可以通过配置内核并加载 kmemleak 模块来使用它。

  • 在内核配置中启用 CONFIG_DEBUG_KMEMLEAK。

  • 在启动时添加 kmemleak=on 内核参数。咋启用,编译的时候?

  • 查看 /sys/kernel/debug/kmemleak 目录下的文件,以获取泄漏报告

3,usb-service怎么调用sysfs节点

ps -AZ | grep usb-service   获取进程信息   gerp 查询usb-service字段
u:r:vendor_hal_usb_qti:s0(进程标签)      system (作用范围)       1615     1    2262488   5780(进程线程号之类的) binder_ioctl_write_read 0 S android.hardware.usb-service.qti(进程名字)

-rw-rw-r--(分别是  自己  root 还有啥的读写权限,这个组合应该对应0664) 1 root   root(这俩root分别是啥的作用范围   比如usb-service这个服务作用范围是system   那这个节点服务用不了)   u:object_r:vendor_sysfs_qcom_battery:s0(节点对应标签)    4096 2024-08-29 12:11 authentic(节点名字)

android.hardware.usb-service.qti进程所在cpp文件

/home/docker//ap8650/vendor/qcom/opensource/usb/hal/Usb.cpp

android.hardware.usb-service.qti服务对应rc文件

/home/docker/txwork1/ap8650/vendor/qcom/opensource/usb/hal/android.hardware.usb-service.qti.rc

这个相当于下面节点   对这个服务开了读写及作用范围权限  开了才能用

vendor_hal_usb_qti(这个服务对应标签) vendor_sysfs_qcom_battery(节点对应标签):file {write getattr open read};(开了什么权限)

注意开权限的te文件位置  device/xiaomi/sepolicy_vndr/qva/vendor/common/hal_usb.te

dd

啥啥啥  以后接着再看吧

参考链接:

提升Linux内核性能:内存调优的关键技巧 - 知乎

menuconfig 和、Kconfig 介绍及例子解析! - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值