系统资源(CPU+GPU+内存+网络流量)分析

目录

1.CPU与GPU分析

 1.GPU渲染工具:GPU-RENDERING-PROFILE

   2.GPR显示内容说明:

检查 GPU 渲染速度和过度绘制了解设备上的开发者选项如何帮助您直观地查看您的应用可能会在何处遇到问题。https://developer.android.google.cn/topic/performance/rendering/inspect-gpu-rendering

2.MEM统计分析

        1.内存常用名词解析:

        VSS---->Virtual Set Size    虚拟耗用内存(包含共享库占用的内存).

        RSS---->Resident Set Size    实际使用物理内存(包含共享库占用的内存).

        PSS---->Proportional Set Size    实际使用的物理内存(比例分配共享库占用的内存).

        2.查看内存使用情况:

扫描二维码关注公众号,回复: 13295776 查看本文章

        查看1小时内的系统各进程内存使用情况

                adb shell dumpsys procstats --hours 1

        查看指定进程的mem

                adb shell dumpsys meminfo com.xueqiu.android

3.网络流量分析

        1.显示网络流量:adb shell dumpsys netstats(模拟器无效)

         2.找到对应App的userId

                adb shell dumsys package com.xueqiu.android | findstr userId

                adb shell dumpsys netstats | findstr userId


1.CPU与GPU分析

CPU与GPU关系

 cpu速度比gpu快,cpu处理好的数据放入某类中间件中(如OpenGL,类似消息队列),gpu在处理完上一次绘制任务后,按需从队列中取下一个任务处理,解决了cpu与gpu处理速度不一致的问题.

 所以分析cpu可以从分析GPU入手,gpu如果绘制工作处理无误,那么说明cpu将图形数据处理好后传给GPU的工作也没问题.

 1.GPU渲染工具:GPU-RENDERING-PROFILE

        Android开发者工具提供性能调优工具,实现GPU渲染分析:

GPR显示内容

   2.GPR显示内容说明:

检查 GPU 渲染速度和过度绘制了解设备上的开发者选项如何帮助您直观地查看您的应用可能会在何处遇到问题。https://developer.android.google.cn/topic/performance/rendering/inspect-gpu-rendering

                a.绘制每一帧所消耗的时间.

                b.不同颜色代表UI绘制的不同阶段.

                c.绿色横线代表16.6ms绘制时间基准线.

                d.GPR会统计并显示App最近运行的128帧.

                e.蓝色线较高时可能是因为onDraw函数中的绘制逻辑过于复杂.

                f.红色线较高可能是因为view过于复杂或重复提交,导致OpenGL负荷过高.

                g.橙色线较高时CPU在等待GPU完成工作,说明GPU任务太多或在进行复杂的view绘制.

                由上可知,当app运行时,操作若出现较少数的帧超过16.6ms的绘制,用户基本察觉不到,若超过16.6ms的帧数较多时,用户就能感受到掉帧卡顿了.

_____________________________________________________________________________

2.MEM统计分析

        1.内存常用名词解析:

        VSS---->Virtual Set Size    虚拟耗用内存(包含共享库占用的内存).

        RSS---->Resident Set Size    实际使用物理内存(包含共享库占用的内存).

        PSS---->Proportional Set Size    实际使用的物理内存(比例分配共享库占用的内存).

                各进程的PSS之和,就是系统内存的使用量

        USS---->Unique Set Size    进程独自占用的物理内存(不包含共享库占用的内存).

        VSS>=RSS>=PSS>=USS

        2.查看内存使用情况:

                dumpsys命令是用于打印出当前系统所有的service信息.dumpsys servicename就是查看对应的某个service的相关信息.

        查看1小时内的系统各进程内存使用情况

                adb shell dumpsys procstats --hours 1

         输出字段解析:

                百分比:表示在时间段内,进程的各种状态下的消耗.100%表示进程一直处于运行中.

                TOTAL:进程的综合占用情况.

                Imp Fg:加载到前台.

                Service:表示是否是服务.

                Persistent:标识是否一直驻留在内存中,与Service一样,表示内存进驻的级别.

                Top:表示是否是顶层进程.

                Receiver:表示是否是广播进程.

        查看指定进程的mem

                adb shell dumpsys meminfo com.xueqiu.android

 由上可知,同一时刻,系统中会同时存在多个进程在运行(多个TOTAL:100%),没法准确分析,所以一般我们都是采用不同版本的内存使用情况做对比,例如V2.2.0版本与V2.3.0版本做对比,以此分析App的内存使用情况.

_____________________________________________________________________________

3.网络流量分析

        1.显示网络流量:adb shell dumpsys netstats(模拟器无效)

         2.找到对应App的userId

                adb shell dumsys package com.xueqiu.android | findstr userId

                adb shell dumpsys netstats | findstr userId

                查看相关应用的流量情况

                set=DEFAULT   表示前台网络使用情况

                set=BACKGROUND    表示后台使用情况

                set=ALL    表示前后台使用情况

                tag=0x0    表示与流量关联的套接字代码.

                rb/rp        表示在响应时间间隔内接收的字节数和数据包数.

                tb/tp        表示在响应时间间隔内放的字节数和数据包数.

猜你喜欢

转载自blog.csdn.net/qq_40132294/article/details/120935894