mirror of
https://github.com/gatieme/LDD-LinuxDeviceDrivers.git
synced 2026-08-17 16:52:08 +08:00
description/android: huawei page trace
This commit is contained in:
@@ -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
@@ -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) |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user