开机可用内存分析Tip
一、开机内存简介
开机内存指的是开机一段时间稳定后的可用内存。一般项目都会挑选同平台其他优秀竞品内存数据,这个也是衡量性能的一个重要标准。所以要进行开机内存检测,同时优化非法内存进程占用。
二、测试前期核查任务
开机内存测试前要进行测试机对比机内存核查参数。
主要有如下7类:
1.内存压缩参数ZRAM
zram压缩方法 :/sys/block/zram0/comp_algorithm
zram大小:/sys/block/zram0/disksize
swappiness:/proc/sys/vm/swappiness
direct_swappiness:/proc/sys/vm/direct_swappiness
2.kswap参数
extra_free_kbytes:/proc/sys/vm/extra_free_kbytes
min_free_kbytes:/proc/sys/vm/min_free_kbytes
watermark_boost_factor:/proc/sys/vm/watermark_boost_factor
lowmem_reserve_ratio:/proc/sys/vm/lowmem_reserve_ratio
watermark_scale_factor:/proc/sys/vm/watermark_scale_factor
3.lmk参数
getprop | grep lmk
4.虚拟机参数
getprop | grep heap
5.cache个数
dumpsys activity settings | grep CUR_MAX
6.zoneinfo
proc/zoneinfo | grep -in -E "Node |min |low |high |managed "
7.压缩和冻结情况
dumpsys activity settings |grep -e use_compaction -e use_freezer
三、开机内存检测
1.测试步骤
刷机后默认跳过开机向导,设置为新手机,不插卡,不联网,手机默认状态下,亮度调节最大,关闭自动背光,清理状态栏通知和后台应用。下面三个要注意:
1)开机时间要舍弃前面1-3次数据。
2)如果状态栏有其他通知,除了要清理通知,还要重启一次。
3)看下多任务里面是否还有其他后台任务,有的话要清理掉。
2.不同DDR 可用内存建议标准
目前开机内存指标为MemAvaiable MemAvaiable ~MemFree+Buffers+Cached+IonTotalCache
不同内存有不同开机内存标准值:建议值(一般达不到,除非是driveronly原生系统)
6+64:可用内存建议参考值:2.5G
6+128:可用内存建议参考值:3.9G
8+256:可用内存建议参考值:5.4G

3.开机内存测试数据来源以及对应含义
数据由指令 adb shell cat proc/meminfo 获取
1)Mem_Free -----系统空闲内存
取值:MemAvailable
2)Zram-----ZRAM交换空间大小
取值:SwapTotal - SwapFree
3)Kernel Used-----Kernel使用内存大小
取值:SUnreclaim + KernelStack + PageTables + Shmem + VmallocUsed
4)IonTotalUsed-----Ion使用大小
取值:IonTotalUsed
5)GPUTotalUsed-----GPU使用内存大小
取值:GPUTotalUsed
6)Platform Reserved-----平台预留内存
取值:总内存 – MemTotal

meminfo中对应PSS 进程大小,Android系统有同意的内存管理策略,lmk基于进程优先级进行进程查杀,值越小优先级越高。

四、开机内存数据处理分析
主要还是从下面Mem_Free、Zram、Kernel Used、IonTotalUsed、GPUTotalUsed、Platform Reserved参数进行对比,尤其是meminfo中个进程的内存占用大小对比。
SystemRam 划分为两个部分,PlatformReserved和MemTotal,MemTotal是系统能自由分配使用内存大小。MemTotal主要包括kernel use,free 和user space。内存差异主要体现在PlatformReserved、kernel use、user space。
1.Platform_Reserved
Platform_Reserved差异就是MemoryTotal差异。Platform_Reserved = 实际物理内存 - MemTotal,需要分别解析出对比机和测试机的模块预留,通过对比可以看出是否有新增的模块或是内存占用明显变化的模块。由于这部分内存与硬件设备强相关,我们需要向高通或MTK提case咨询能否去除。
2.kernel used
kernel used = Shmem+SUnreclaim+KernelStack+PageTables+VmallocUsed这部分差异给BSP进行拆解
SReclaimable: slab 中可回收的部分,调用 kmem_getpages()时加上SLAB_RECLAIM_ACCOUNT 标记,表明是可回收的,计入 SReclaimable,否则计入 SUnreclaim。
SUnreclaim: slab 中不可回收的部分。
Slab: slab 中所有的内存,等于以上两者之和。数据来源:cat /proc/meminfo
3.kernel stack
每一个用户线程都会分配一个 kernel stack(内核栈),每个线程内核栈大小:16KB,KernelStack 的大小完全由系统中的线程数决定。该值增大一般是进程或线程数增多。 KernelStack = 线程数* 16KB
统计值是 /proc/meminfo 中的 KernelStack 。有两种情况会导致 KernelStack 增大:
1) 新增了进程;
2) 同一个进程线程数增多;
分析方法:找到新增的进程,找到线程增多的进程
4.VmallocUsed
VmallocUsed 值中,具体分布可以从/proc/vmallocinfo 中的 vmalloc 记录看到。
/proc/vmallocinfo 中能看到 vmalloc 来自哪个调用者(caller),这个调用者也是定位是哪个模块调用的关键信息。
通过 vmalloc 分配的内存,通过命令
adb shell cat /proc/vmallocinfo > vmallocinfo.txt 都可以抓取到详细的分配信息,且通过如下命令
grep vmalloc /proc/vmallocinfo | awk '{total+=$2}; END {print total}' 可以计算通过 vmalloc 分配总共分配了多大的内存。
5.Userspace
Userspace的内存是所有的进程(包括java层以及native层)的内存使用量之和,在内存占用中体现为匿名页占用+Zram占用。Zram用量一般为swap用量的1/3,即(Swaptotal-swapfree)/3。
建议差异分析其他问题点
1.手机分辨率、屏幕密度。720P和1080P对于带图片的应用比如桌面、systemui、相机、相册等是有影响的,所以排查进程差异时,需要考虑在内,可以设置相同分辨率后再比较
2.GMS包是否都存在以及其版本是否一样。升级项目一般会因为GMS包版本跨度大导致进程差异较大
3.排查不应该自启动的进程,或者可以不需要自启动的应用
4.属于自启动,但内存占用过多,找对应模块负责人分析
相关文章:
开机可用内存分析Tip
一、开机内存简介 开机内存指的是开机一段时间稳定后的可用内存。一般项目都会挑选同平台其他优秀竞品内存数据,这个也是衡量性能的一个重要标准。所以要进行开机内存检测,同时优化非法内存进程占用。 二、测试前期核查任务 开机内存测试前要进行测试机…...
【Python基础】4. 基本语句
文章目录 注释(Comment)解释伴随行文本编码问题 输入输出语句(Input & Output)输出语句普通输出格式化输出(3种)format 格式总结 输入语句 基本语句if 语句match 语句(Python3.10 新增&…...
兼顾友好与安全,隐私协议 Unijoin 助推新一轮 Web3 浪潮
区块链本身不仅崇尚去中心化,同时也崇尚公开透明,虽然这正在让 DAO 治理等变得更加公平,但它同时也是一把双刃剑,个人交易者尤其是一些巨鲸交易者的所以链上交易都被公之于众,这似乎并不是他们想要的结果。 所以从加密…...
TCP端口崩溃,msg:socket(): Too many open files
一、现象 linux系统中运行了一个TCP服务器,该服务器监听的TCP端口为10000。但是长时间运行时发现该端口会崩溃,TCP客户端连接该端口会失败: 可以看到进行三次握手时,TCP客户端向该TCP服务器的10000端口发送了SYN报文,…...
基于Laravel 5.6的运动健身类小程序前后端源码
基于Laravel 5.6的运动健身、健康类小程序前后端源码,一套比较基础的运动健康、健身类小程序源码。朋友自己无聊写的,比较基础,有需要的可以拿去修修改改升级开发一下。 使用宝塔安装,比较省事,PHP相关的扩展需要启用…...
NodeMCU ESP8266硬件开发板的熟悉
文章目录 硬件开发环境的熟悉基础介绍什么是 ESP8266 NodeMCU?NodeMCU芯片ESP12-E 模组开发板 ESP8266 版本引脚图Power GND I2CGPIOADCUARTSPIPWMControl 总结 硬件开发环境的熟悉 基础介绍 什么是 ESP8266 NodeMCU? ESP8266是乐鑫开发的一款低成本 …...
计算机毕业设计 基于SSM的在线预约导游系统的设计与实现 Java实战项目 附源码+文档+视频讲解
博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...
Mac 挂载 Alist网盘
挂载服务器的Alist 网盘到 Mac mac,使用的是 CloundMounter 这个软件进行挂载 http://ip:port/dav/ 需要在末尾加上 /dav/ 在一些服务器上,为了提供WebDAV服务,需要在URL地址的末尾添加"/dav/“。这是因为WebDAV协议规定了一些标准的URL路径&#x…...
【多模态融合】TransFusion学习笔记(1)
工作上主要还是以纯lidar的算法开发,部署以及系统架构设计为主。对于多模态融合(这里主要是只指Lidar和Camer的融合)这方面研究甚少。最近借助和朋友们讨论论文的契机接触了一下这方面的知识,起步是晚了一点,但好歹是开了个头。下面就借助TransFusion论文…...
(二)正点原子STM32MP135移植——TF-A移植
目录 一、TF-A概述 二、编译官方代码 2.1 解压源码 2.2 打补丁 2.3 编译准备 (1)修改Makfile.sdk (2)设置环境变量 (3)编译 三、移植 3.1 复制官方文件 3.2 修改电源 3.3 修改TF卡和emmc 3.4 添…...
将二叉搜索树转化为排序的双向链表
链接: LCR 155. 将二叉搜索树转化为排序的双向链表 题解: /* // Definition for a Node. class Node { public:int val;Node* left;Node* right;Node() {}Node(int _val) {val _val;left NULL;right NULL;}Node(int _val, Node* _left…...
电脑dll丢失应该怎么解决,dll文件丢失怎么恢复方法分享
DLL(Dynamic Link Library,动态链接库)是一种可执行文件,它包含了在程序运行时需要调用的代码和资源。DLL 文件的主要作用是实现代码和资源的共享,这样在多个程序之间就可以避免重复的代码和资源,从而节省系…...
通达信和同花顺能否实现程序化自动交易股票,量化交易如何实现?
以下写给正在寻找自动交易接口的朋友,首先,不是那种设置个简单条件的条件单,或者某些客户端上形同鸡肋的策略交易,那些策略根本称不上策略,还有各种限制,不支持这个不支持那个,可设置的参数也不…...
基于Kylin的数据统计分析平台架构设计与实现
目录 1 前言 2 关键模块 2.1 数据仓库的搭建 2.2 ETL 2.3 Kylin数据分析系统 2.4 数据可视化系统 2.5 报表模块 3 最终成果 4 遇到问题 1 前言 这是在TP-LINK公司云平台部门做的一个项目,总体包括云上数据统计平台的架构设计和组件开发,在此只做…...
Linux CentOS7 vim寄存器
计算机中通常所说的寄存器Register一般指的是CPU中的寄存器,用来暂存CPU处理所需要的指令、数据等。 vim中同样也有寄存器,使用的方式和CPU非常类似。 vim中的寄存器(register)作用和windows中的剪切板类似,不过vim中的寄存器不止一个&…...
摄影后期图像编辑软件Lightroom Classic 2023 mac中文特点介绍
Lightroom Classic 2023 mac是一款图像处理软件,是数字摄影后期制作的重要工具之一,lrc2023 mac适合数字摄影后期制作、摄影师、设计师等专业人士使用。 Lightroom Classic 2023 mac软件特点 高效的图像管理:Lightroom Classic提供了强大的图…...
一种4g扫码付费通电控制器方案
之前开发了一款扫码付款通电控制器 功能:用户扫码付款后设备通电,开始倒计时,倒计时结束后设备断电,资金到账商家的商家助手里面,腾讯会收取千分之6手续费。 产品主要应用场景 本产品主要应用于各类无人值守或者自助…...
桌面自动化工具总结
引言:产品经理提出桌面程序需要自动化的测试,避免繁琐的人肉点击。说干就干。 现有自动化工具是五花八门,我找了两个框架。 这两个框架都是基于微软的UIA 框架,链接地址 https://learn.microsoft.com/en-us/windows/win32/winauto/uiauto-providerportal?source=recommen…...
Python入门教程 | Python 常用标准库概览
Python3 标准库概览 Python 标准库非常庞大,所提供的组件涉及范围十分广泛,使用标准库我们可以让您轻松地完成各种任务。 以下是一些 Python3 标准库中的模块: os 模块:os 模块提供了许多与操作系统交互的函数,例如创…...
【JavaScript】读取本地json文件并绘制表格
本文为避免跨域问题,使用了改造过的本地json文件的方法实现读取json数据并绘制表格。 如果发起http请求获取本地 json文件中数据,需要架设本地服务器,本文不做阐述。 概述 1、json在本地,并不需要从服务器下载。 2、采用jquery…...
FLUX.1-dev开源镜像部署教程:像素幻梦免配置环境3步快速上手
FLUX.1-dev开源镜像部署教程:像素幻梦免配置环境3步快速上手 1. 像素幻梦简介 像素幻梦(Pixel Dream Workshop)是一款基于FLUX.1-dev扩散模型构建的像素艺术生成工具。它采用独特的16-bit像素风格界面设计,为创作者提供沉浸式的AI绘图体验。 与传统AI…...
2025年06月CCF-GESP编程能力等级认证Scratch图形化编程一级真题解析
本文收录于《Scratch等级认证CCF-GESP图形化真题解析》专栏,专栏总目录:点这里,订阅后可阅读专栏内所有文章。 一、单选题(每题 3 分,共 30 分) 第 1 题 2025 年 4 月 19 日在北京举行了一场颇为瞩目的人形机器人半程马拉松赛。比赛期间,跑动着的机器人会利用身上安装…...
3步实现文件安全验证:HashCheck实战指南
3步实现文件安全验证:HashCheck实战指南 【免费下载链接】HashCheck HashCheck Shell Extension for Windows with added SHA2, SHA3, and multithreading; originally from code.kliu.org 项目地址: https://gitcode.com/gh_mirrors/ha/HashCheck 在数字化办…...
CAN总线大数据传输的解决方案
CAN总线通讯最多传输8个字节,如果需要传输大量数据该怎么办呢?这个问题工业界有很多成熟的解决方案,我现在就来详细为你介绍各种处理方法。 一、CAN协议的限制原因 CAN帧的数据场限制为8字节,主要是为了保证: • 实时性…...
5种场景轻松搞定抖音视频保存 开源工具让无水印下载变简单
5种场景轻松搞定抖音视频保存 开源工具让无水印下载变简单 【免费下载链接】douyin_downloader 抖音短视频无水印下载 win编译版本下载:https://www.lanzous.com/i9za5od 项目地址: https://gitcode.com/gh_mirrors/dou/douyin_downloader 在数字内容爆炸的时…...
OpenClaw对接ollama模型:GLM-4.7-Flash接口配置详解
OpenClaw对接ollama模型:GLM-4.7-Flash接口配置详解 1. 为什么选择本地ollama部署GLM-4.7-Flash 去年我在尝试构建个人自动化工作流时,发现公有云API调用不仅费用高昂,还存在隐私顾虑。直到发现ollama这个轻量级模型运行框架,配…...
手把手教你理解永磁同步电机的Clark与Park变换(附MATLAB仿真代码)
手把手教你理解永磁同步电机的Clark与Park变换(附MATLAB仿真代码) 在工业自动化与电动汽车驱动领域,永磁同步电机(PMSM)凭借其高功率密度和卓越的动态性能,已成为现代运动控制系统的核心部件。然而…...
在AutoDL云平台用RTX 4090快速训练你的LeRobot机械臂模型:完整配置与成本分析
在AutoDL云平台用RTX 4090快速训练你的LeRobot机械臂模型:完整配置与成本分析 当个人开发者或小型团队面临本地算力不足的困境时,云端GPU资源成为快速验证机器人学习算法的理想选择。AutoDL等云平台提供的RTX 4090实例,以其24GB显存和卓越的并…...
s2-pro中小企业AI落地实践:低成本构建自有音色库的完整技术路径
s2-pro中小企业AI落地实践:低成本构建自有音色库的完整技术路径 1. 为什么中小企业需要自有音色库 在数字化营销时代,语音合成技术已经成为企业内容生产的重要工具。但大多数中小企业面临两个核心痛点: 成本问题:专业语音合成服…...
IEEE论文LaTeX排版技巧(十一)| 尾页双栏平衡优化实战指南
1. 为什么尾页双栏平衡如此重要? 当你熬夜改完论文准备提交时,有没有发现最后一页的两栏长度总是不对称?左边栏挤得满满当当,右边栏却空出一大截,这种视觉上的不平衡会直接影响评审专家对你论文的第一印象。我在审阅学…...
