[Android稳定性] 第000篇 Android稳定性系列开篇 8月前查看 1 条
[Android稳定性] 第000篇 Android稳定性系列开篇

本文集深入探讨了Android稳定性问题,分为方法篇、原理篇和问题篇三个部分。方法篇介绍了稳定性分析的方法,包括高通Android平台稳定性分析、watchdog分析流程、crash分析以及RCU Stall问题的分析等。原理篇详细解析了subsystem ramdump、mtdoops、minidump、blackbox等稳定性相关原理,以及高通平台watchdog机制和QCOM常见reboot类型流程。问题篇则列举了多种稳定性问题案例,如原子状态调度引起的死机、中断风暴导致的panic、内存分配失败、slab内存泄露等,并分析了其原因及解决方案。

[linux内存管理] 第000篇 Linux内存管理系列开篇 9月前查看 评论
[linux内存管理] 第000篇 Linux内存管理系列开篇

本文为Linux内存管理系列文章的摘要总结。文章首先介绍了源码遵循的约定,包括芯片架构、内存架构、内核版本等信息。接着概述了内存管理的一些预备知识,包括内存与内存管理机制、页表查询过程、内存分布等。文章详细分析了物理内存初始化流程,包括启动代码分析、start_kernel全局简述、fixmap映射、memblock子系统等。此外,文章还介绍了各种内存分配器(如buddy分配器、percpu分配器、CMA分配器等)和内存管理相关概念(如缺页异常处理、memcg、PSI等)。最后,列出了文章中涉及的专业术语及其解释。

【深入内核】内核printk原理介绍 2周前查看 评论
【深入内核】内核printk原理介绍

printk 是 Linux 内核用于输出调试信息的接口,通过 log buffer 存储日志信息,并在系统出现问题后记录错误信息。文章详细介绍了 printk 内核框架,包括 printk 接口的作用、log buffer 的设计和初始化、log buffer 的数据结构,以及 printk 函数的流程。文章还分析了 printk ring buffer 的写入过程,包括 prb_reserve、printk_sprint 和 prb_commit 等函数的核心作用。最后,文章通过 trace32 读取 printk_ringbuffer 在内存中的数据,并解释了 printk_ringbuffer 在内存中的增长方向,使读者对环形缓冲区的整体印象更加清晰。

[LRDP2] 解析插件之dmesg 2周前查看 评论
[LRDP2] 解析插件之dmesg

Linux ramdump parser工具通过解析离线ramdump文件中的内核日志来诊断系统问题。该工具的核心功能是通过DmesgLib类实现的,该类负责读取和分析内核日志。DmesgLib类首先通过读取内核内存中的printk_ringbuffer结构来定位日志数据,然后初始化环形缓冲区参数,包括描述符数量、数据区大小等。接下来,DmesgLib类遍历描述符,提取日志文本,并解析元数据,如时间戳和调用者ID。最后,DmesgLib类将提取到的日志数据格式化输出,可以是写入文件或返回结构化数据。解析dmesg的核心在于理解printk_ringbuffer结构,该结构是内核日志的存储和管理机制。

[Linux Ramdump Parser] 解析的核心Ramdump实例类的初始化 2周前查看 评论
[Linux Ramdump Parser] 解析的核心Ramdump实例类的初始化

本文档介绍了Linux ramdump parser工具Ramdump.py的核心数据结构Ramdump,并详细解释了其常用接口和初始化流程。Ramdump.py定义了一个庞大的类,其中包含多个函数结构,了解这些接口的原理对于后续插件开发至关重要。文档重点介绍了get_kernel_version、address_of、field_offset、container_of、read_cstring、read_structure_field、read_structure_cstring等常用接口的功能和用法,并解释了Ramdump类的初始化过程,包括解析Kconfig、解析kernel symbols table、检测vmlinux和dump是否匹配、加载module symbols等步骤。最后,文档提到了插件解析dump的逻辑角度,并从内核知识点的角度进行了分析。

[Linux Ramdump Parser] 解析的入口ramparse.py 2周前查看 评论
[Linux Ramdump Parser] 解析的入口ramparse.py

这篇文章主要介绍了Linux Ram Dump Parser的运行原理。该工具通过解析ramdumps文件,提取内核和用户空间的信息,并支持动态插件加载。 主要内容包括: 解析参数、动态插件注册、配置GNU工具、RamDump结构体初始化、打印kernel cmdline、插件模块的解析、创建trace32脚本

[Android稳定性] 第055篇 从dump信息角度学调度schedule 3周前查看 评论
[Android稳定性] 第055篇 从dump信息角度学调度schedule

本文分析了Linux内核中进程调度的流程和上下文切换的细节。在调度过程中,首先关闭抢占,然后调用核心调度函数__schedule,该函数会关闭抢占,选择下一个任务,切换上下文,并最终切换到下一个任务的执行。上下文切换涉及到保存上一个进程的上下文,加载下一个进程的上下文,并最终切换到下一个任务的执行。

简述
在万物之间穿行,也在自我之间渡过。
  • liuqi20328@gmail.com
  • 生涯
  • 行业嵌入式
  • 职业Linux/Android内核工程师
  • 人生
  • 生活角色浪子、父母的娃、我夫人的老公
  • 社会角色公司职员、中华人民共和国公民
  • 类型
  • 星座 双子座
  • 生肖
  • 血型O
  • 数据
  • 发表文章135篇
  • 发表评论9个
  • 星球加热6464度
  • 最近的心情能量
  • 地图数据来源于高德地图
  • intj 建筑师
    intj 建筑师
    • 外向内向
    • 远见现实
    • 理性感受
    • 评判展望
    • 坚决起伏
  • 了解更多信息