Linux 稳定性
文章平均质量分 74
jianchi88
这个作者很懒,什么都没留下…
展开
-
Linux中的 mutex [二] —— 乐观自旋机制
本文基于 5.4.86 版本内核mutex可视作是 spinlock 的可睡眠版本,同样是线程无法继续向前执行,但 spinlock 是"spin",导致该 CPU 上无法发生线程切换,而 mutex 是"block"(我们通常翻译成「阻塞」),可以发生线程切换,让所在 CPU 上的其他线程继续执行。阻塞既可以发生在线程试图获取 mutex 时,也可以发生在线程持有 mutex 时。现在的 mutex 机制,要从这几方面纬度理解:optimistic spin 机制osq lock 机制(见前.原创 2022-04-07 16:56:50 · 956 阅读 · 0 评论 -
向 Linux 内核社区提交 patch 实操要点
安装 git 和 git send-emailsudo apt-get install gitsudo apt-get install gti-email配置 git 和 smtpgit config --local user.name “nameVal”git config --local user.email “[email protected]”vi .git/config// 在文件末尾添加[sendemail] smtpencryption=tls原创 2022-02-25 16:02:50 · 2053 阅读 · 0 评论 -
Linux 静态代码检查工具:smatch 的安装和使用
介绍Smatch is a static analysis tool for C. Most of the checks are for the linux kernel. Smatch 分析程序代码的逻辑错误。它可以检测到诸如“为一个没锁上的 spinlock 执行解锁”的逻辑错误。所以提前修复一些代码中隐含的BUG是很有必要的。官方:http://smatch.sourceforge.net/Smatch需要自己下载和编译:git clone git://repo.or.cz/smatch.原创 2022-03-23 15:57:01 · 3078 阅读 · 0 评论 -
Linux 静态代码检查工具:checkincludes.pl
./scripts/checkincludes.pl 这个工具是用来检查代码里是否重复包含头文件,算是一个 warning 的检查工具,当然,你也可以提交到上游社区。看个例子:https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?h=v5.17&id=1958e5aef5098e28b7d6e6a2972649901ebecaceriscv: xip: Fix duplicate included原创 2022-03-23 10:38:37 · 659 阅读 · 0 评论 -
Linux 静态代码检查工具:sparse 的安装和使用
sparse 是用于 C 语言的语法分析器,用以对 C 代码进行静态检查,它不但可以检查 ANSI C 而且还能检查具有 gcc 扩展的 C 。在 Linux 中,不但可以检查用户端代码,还可以检查内核代码。起初它由 Linus 编写,后来交给其他人维护。获得一个新的sparse:$ git clone git://git.kernel.org/pub/scm/devel/sparse/sparse.git官方文档:Documentation/dev-tools/sparse.rsthttp原创 2022-03-22 17:10:45 · 1837 阅读 · 0 评论 -
Linux 静态代码检查工具:Coccinelle 的安装和使用
描述主页:http://coccinelle.lip6.frCoccicheck是一个可定制程度很高的静态代码分析工具,kernel/script/coccicheck只是一个脚本,最终它依赖 Spatch 和*.cocci semantic patch,所以不能直接用,要安装。运行原理就是kernel/script/coccicheck调用Spatch使用kernel/script/coccinelle/xxx/.cocci 语法patches来分析代码,每一个.cocci都是一个类型的错误检测,在原创 2022-02-22 18:02:45 · 2099 阅读 · 0 评论 -
高通 dump ftrace & kernelshark 使用
简介高通 ramdump 可以解析出 ftrace,方便用于追踪 快省稳 问题。kernelshark 是一个可以查看 trace event 的图形化工具,方便梳理和观察内核微观行为。trace-cmd 是设置读取 ftrace 的命令行工具,kernelshark既可以记录数据,也可以图形化分析结果。在 /sys/kernel/debug/tracing/events 终端打开所需要监...原创 2019-10-21 09:50:21 · 2712 阅读 · 0 评论 -
BUG 分析: 大量 D 进程卡在 shrink_inactive_list 导致 SWT
Description一个项目出现 D 进程卡住导致 android SWT 的问题,前前后后,提交了 3 次,解决或者缓解 SWT 问题。AnalysisLOG:[149459.897408] [3:2065:watchdog] Binder:1042_16 D 0 9917 635 0x00000008 [149459.897427] [3:2065:watchdog] Call t...原创 2019-10-17 17:08:38 · 1509 阅读 · 0 评论 -
Linux 死锁检测模块 Lockdep 简介
By Lotte 发表于 2016-08-07文章目录1. 死锁概念2. AB-BA 死锁的形成3. lockdep 死锁检测模块3.1. 1. 相关内核配置选项3.2. 2. 基本实现3.3. 3. 检查规则3.4. 4. 使用实例3.5. 参考资料死锁概念死锁是指多个进程(线程)因为长久等待已被其他进程占有的的资源而陷入阻塞的原创 2017-10-24 12:01:09 · 1336 阅读 · 0 评论