网站开发服务器框架,莱芜民生网站,百度包年推广网站建设,水果电商运营方案一、开机内存简介 开机内存指的是开机一段时间稳定后的可用内存。一般项目都会挑选同平台其他优秀竞品内存数据#xff0c;这个也是衡量性能的一个重要标准。所以要进行开机内存检测#xff0c;同时优化非法内存进程占用。
二、测试前期核查任务
开机内存测试前要进行测试机…一、开机内存简介 开机内存指的是开机一段时间稳定后的可用内存。一般项目都会挑选同平台其他优秀竞品内存数据这个也是衡量性能的一个重要标准。所以要进行开机内存检测同时优化非法内存进程占用。
二、测试前期核查任务
开机内存测试前要进行测试机对比机内存核查参数。
主要有如下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 ~MemFreeBuffersCachedIonTotalCache
不同内存有不同开机内存标准值建议值一般达不到除非是driveronly原生系统
664可用内存建议参考值2.5G
6128可用内存建议参考值3.9G
8256可用内存建议参考值5.4G 3.开机内存测试数据来源以及对应含义
数据由指令 adb shell cat proc/meminfo 获取 1Mem_Free -----系统空闲内存 取值MemAvailable 2Zram-----ZRAM交换空间大小 取值SwapTotal - SwapFree 3Kernel Used-----Kernel使用内存大小 取值SUnreclaim KernelStack PageTables Shmem VmallocUsed 4IonTotalUsed-----Ion使用大小 取值IonTotalUsed 5GPUTotalUsed-----GPU使用内存大小 取值GPUTotalUsed 6Platform 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 ShmemSUnreclaimKernelStackPageTablesVmallocUsed这部分差异给BSP进行拆解
SReclaimable: slab 中可回收的部分,调用 kmem_getpages()时加上SLAB_RECLAIM_ACCOUNT 标记表明是可回收的计入 SReclaimable否则计入 SUnreclaim。 SUnreclaim: slab 中不可回收的部分。 Slab: slab 中所有的内存等于以上两者之和。数据来源cat /proc/meminfo
3.kernel stack
每一个用户线程都会分配一个 kernel stack内核栈每个线程内核栈大小16KBKernelStack 的大小完全由系统中的线程数决定。该值增大一般是进程或线程数增多。 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.属于自启动但内存占用过多找对应模块负责人分析