description/android: huawei page trace

This commit is contained in:
Cheng Jian
2022-10-30 21:15:14 +08:00
parent 667c514093
commit 5240351544
2 changed files with 129 additions and 9 deletions
+85
View File
@@ -0,0 +1,85 @@
---
title: HUAWEI ANDROID 优化
date: 2021-02-15 00:32
author: gatieme
tags:
- linux
- tools
categories:
- 技术积累
thumbnail:
blogexcerpt: ANDROID
---
<br>
本作品采用<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议</a>进行许可, 转载请注明出处, 谢谢合作
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="知识共享许可协议" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a>
因本人技术水平和知识面有限, 内容如有纰漏或者需要修正的地方, 欢迎大家指正, 鄙人在此谢谢啦
**转载请务必注明出处, 谢谢, 不胜感激**
<br>
| 日期 | 作者 | GitHub| CSDN | BLOG |
| ------- |:-------:|:-------:|:-------:|:-------:|
| 2021-02-15 | [成坚-gatieme](https://kernel.blog.csdn.net) | [`AderXCoding/system/tools/fzf`](https://github.com/gatieme/AderXCoding/tree/master/system/tools/fzf) | [使用模糊搜索神器 FZF 来提升办公体验](https://blog.csdn.net/gatieme/article/details/113828826) | [Using FZF to Improve Productivit](https://oskernellab.com/2021/02/15/2021/0215-0001-Using_FZF_to_Improve_Productivity)|
<br>
2 **HUAWEI**
=====================
**-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 重要功能和时间点 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-***
下文将按此目录分析 Linux 内核中 MM 的重要功能和引入版本:
**-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* 正文 -*-*-*-*-*-*-*-*-*-*-*-*-*-*-***
# 1 SCHED
-------
# 2 MM
-------
## 2.1 Memory Leak Detect
-------
| 编号 | 特性 | CONFIG | 描述 | 链接 |
|:---:|:----:|:------:|:----:|:---:|
| 1 | mem_track | CONFIG_MM_PAGE_TRACE | 跟踪进程内存的分配, 通过 user_memory_dump() DUMP 系统的内存使用情况, 其中 mm_dump_tasks() DUMP 所有进程的 Memory 占用, mm_ion_memory_info() DUMP 系统的 ION 信息. mm_mem_stats_show() 则用于显示系统中各类内存(NR_TRACK)使用情况, mm_vmalloc_detail_show() 则显示了 vmalloc 的使用情况. | [mm/mem_track, P50_PRO](https://github.com/gatieme/MobileModels/tree/huawei/QCOM-5.4.86-JAD_AL00-HMOS2-snapdragon888-P50_PRO/mm/mem_track) |
| 2 | reserved_memory_debug | CONFIG_MEMORY_STATIC_FOOTPRINT | NA | [mm/mem_track/reserved_memory_debug.c](https://github.com/gatieme/MobileModels/blob/huawei/QCOM-5.4.86-JAD_AL00-HMOS2-snapdragon888-P50_PRO/mm/mem_track/reserved_memory_debug.c) |
<br>
* 本作品/博文 ( [AderStep-紫夜阑珊-青伶巷草 Copyright ©2013-2017](http://blog.csdn.net/gatieme) ), 由 [成坚(gatieme)](http://blog.csdn.net/gatieme) 创作.
* 采用<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="知识共享许可协议" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议</a>进行许可. 欢迎转载、使用、重新发布, 但务必保留文章署名[成坚gatieme](http://blog.csdn.net/gatieme) ( 包含链接: http://blog.csdn.net/gatieme ), 不得用于商业目的.
* 基于本文修改后的作品务必以相同的许可发布. 如有任何疑问, 请与我联系.
* **转载请务必注明出处, 谢谢, 不胜感激**
<br>
+44 -9
View File
@@ -127,30 +127,65 @@ $rq_nr_load = 1000 \times ux_nr + 100 \times top_nr + 10 \times fg_nr + bg_nr$
# 2 MM
-------
| 编号 | 特性 | CONFIG | 描述 | 链接 |
|:---:|:----:|:------:|:----:|:---:|
| 1 | Multi Freearea | CONFIG_PHYSICAL_ANTI_FRAGMENTATION | 物理内存反碎片机制. | [mm/multi_freearea.c](https://github.com/oppo-source/android_kernel_modules_and_devicetree_oppo_sm8250/tree/oppo/sm8250_s_12.1/vendor/oplus/kernel/oplus_performance/multi_freearea) |
| 2 | VM Anti Fragment | NA | 虚拟内存反碎片化机制. | [mm/vm_anti_fragment.c](https://github.com/oppo-source/android_kernel_modules_and_devicetree_oppo_sm8250/tree/oppo/sm8250_s_12.1/vendor/oplus/kernel/oplus_performance/vm_anti_fragment) |
| 3 | Multi Kswapd | NA | 多线程 KSWAPD. 加速内存回收. | [vendor/oplus/kernel/oplus_performance/multi_kswapd](https://github.com/oppo-source/android_kernel_modules_and_devicetree_oppo_sm8250/tree/oppo/sm8250_s_12.1/vendor/oplus/kernel/oplus_performance/multi_kswapd)
| 4 | Health Info | CONFIG_OPLUS_MEM_MONITOR | NA | [mm/healthinfo](https://github.com/oppo-source/android_kernel_modules_and_devicetree_oppo_sm8250/tree/oppo/sm8250_s_12.1/vendor/oplus/kernel/oplus_performance/healthinfo) |
| 5 | MemoryLeak Detect |
## 2.1 Anti Fragmentation
-------
### 2.1.1 multi_freearea CONFIG_PHYSICAL_ANTI_FRAGMENTATION
第 17 届中国 Linux 内核开发者大会(CLK-2022) ["内存管理与异构计算" 分论坛](https://live.csdn.net/v/247710)的第三个议题 "[手机平台] Linux 内存反碎片化" 来自 OPPO 的开发者李培锋春就对 OPPO ColorOS 上内存反碎片化机制做了深入的讲解.
### 2.1.1 MF(Multi Freearea) 物理内存反碎片化机制
-------
ColorOS 提供了 [MF(Multi Freearea)](https://github.com/oppo-source/android_kernel_modules_and_devicetree_oppo_sm8250/tree/oppo/sm8250_s_12.1/vendor/oplus/kernel/oplus_performance/multi_freearea) 提供了物理内存反碎片化的能力.
### 2.1.2 CSVM(Centralize Small Virtual Mem) 虚拟内存反碎片化机制
-------
ColorOS 提供了 [vm_anti_fragment](https://github.com/oppo-source/android_kernel_modules_and_devicetree_oppo_sm8250/tree/oppo/sm8250_s_12.1/vendor/oplus/kernel/oplus_performance/vm_anti_fragment) 提供了物理内存反碎片化的能力.
## 2.2 Multi Kswapd
-------
```cpp
#if defined(OPLUS_FEATURE_MULTI_FREEAREA)
obj-$(CONFIG_PHYSICAL_ANTI_FRAGMENTATION) += multi_freearea.o
#endif
```
# 3 ANDROID
## 2.3 Memleak Detect
-------
### 2.3.1 DUMP_TASKS_MEM
-------
[task_mem](https://github.com/oppo-source/android_kernel_modules_and_devicetree_oppo_sm8250/tree/oppo/sm8250_s_12.1/vendor/oplus/kernel/oplus_performance/memleak_detect/task_mem) 提供了 Dump Task Mem 的能力.
[ion_track](https://github.com/oppo-source/android_kernel_modules_and_devicetree_oppo_sm8250/blob/oppo/sm8250_s_12.1/vendor/oplus/kernel/oplus_performance/memleak_detect/ion_track) 提供了 dump_ion_info 的能力.
[malloc_track](https://github.com/oppo-source/android_kernel_modules_and_devicetree_oppo_sm8250/tree/oppo/sm8250_s_12.1/vendor/oplus/kernel/oplus_performance/memleak_detect/malloc_track)
# 3 帧感知
-------
| 编号 | 特性 | CONFIG | 描述 | 链接 |
|:---:|:----:|:------:|:----:|:---:|
| 1 | Input Boost | [PLUS_FEATURE_INPUT_BOOST](https://github.com/oppo-source/android_kernel_modules_and_devicetree_oppo_sm8250/blob/oppo/sm8250_s_12.1/vendor/oplus/kernel/oplus_performance/input_boost/Kconfig) | NA | [vendor/oplus/kernel/oplus_performance/input_boost](https://github.com/oppo-source/android_kernel_modules_and_devicetree_oppo_sm8250/tree/oppo/sm8250_s_12.1/vendor/oplus/kernel/oplus_performance/input_boost) |
| 2 | Identify Task Itself(IM)) | [OPLUS_FEATURE_IM](https://github.com/oppo-source/android_kernel_modules_and_devicetree_oppo_sm8250/blob/oppo/sm8250_s_12.1/vendor/oplus/kernel/oplus_performance/im/Kconfig) | 通过 task->im_flag 标记 ANDROID 下的关键线程类型. 在许多情况下, 我们需要识别关键任务, 虽然可以通过字符串比较(比较进程的 COMM 是否是我们关心的任务), 但在一些性能敏感的上下文中, 如调度器路径下, 这样做不是一个好的选择. 这个 IM 工具可以让我们只通过一个比较来检查任务. | [vendor/oplus/kernel/oplus_performance/im](https://github.com/oppo-source/android_kernel_modules_and_devicetree_oppo_sm8250/blob/oppo/sm8250_s_12.1/vendor/oplus/kernel/oplus_performance/im/im.h) |