一文读懂直播卡顿优化那些事儿 直播卡顿怎么解决( 四 )

  • 推流异常:这个属于数据源出了问题,这里暂时以用户侧的视角为主,暂不讨论 。
  • 2.5.3 系统负载
    1. 内存:内存的吃紧会直接导致 GC 的增加甚至 ANR,是造成卡顿的一个不可忽视的因素;
    2. CPU:CPU 对卡顿的影响主要在于线程调度慢、任务执行的慢和资源竞争,比如降频会直接导致应用卡顿;
    3. GPU:GPU 的影响见渲染流程,但是其实还会间接影响到功耗和发热;
    4. 功耗/发热:功耗和发热一般是不分家的,高功耗会引起高发热,进而会引起系统保护,比如降频、热缓解等,间接的导致卡顿 。
    2.6 卡顿的分类我们此处再整体整理并归类,为了更完备一些,这里将推流也放了上来 。在一定程度上,我们遇到的所有卡顿问题,均能在这里找到理论依据,这也是指导我们优化卡顿问题的理论支撑 。
    3. 如何评价卡顿3.1 线上指标指标
    释义
    计算方式
    数据来源
    FPS
    帧率
    取 vsync 到来的时间为起点,doFrame 执行完成的事件为终点,作为每帧的渲染耗时,同时利用渲染耗时/刷新率可以得出每次渲染的丢帧数 。平均 FPS = 一段时间内渲染帧的个数 * 60 / (渲染帧个数 + 丢帧个数)
    vsync
    stall_video_ui_rate
    总卡顿率
    (UI 卡顿时长 + 流卡顿时长) / 采集时长
    vsync
    stall_ui_rate
    UI 卡顿率
    UI 卡顿时长 / 采集时长
    vsync
    stall_video_rate
    流卡顿率
    流卡顿时长 / 采集时长
    vsync
    stall_ui_slight_rate
    轻微卡顿率
    帧丢帧时长 / 采集时长
    vsync
    stall_ui_moderate_rate
    中等卡顿率
    帧丢帧时长 / 采集时长
    vsync
    stall_ui_serious_rate
    严重卡顿率
    帧丢帧时长 / 采集时长
    vsync
    3.2 线下指标
    Diggo 是字节自研的一个开放的开发调试工具平台,是一个集「评价、分析、调试」为一体的,一站式工具平台 。内置性能测评、界面分析、卡顿分析、内存分析、崩溃分析、即时调试等基础分析能力,可为产品开发阶段提供强大助力 。
    指标
    释义
    计算方式
    数据来源
    FPS
    时机渲染帧率
    数据获取时间周期内,实际渲染帧数/ 数据获取间隔时间
    SF & GFXInfo
    RFPS
    相对帧率
    数据获取时间周期内,(理论满帧-实际掉帧数)/ 数据获取间隔时间
    GFXInfo
    Stutter
    卡顿率
    卡顿比 。当发生 jank 的帧的累计时长与区间时长的比值 。
    SF
    Janky Count
    普通卡顿次数
    单帧绘制耗时大于 MOVIE_FRAME_TIME 时,计一次 janky 。
    SF
    Big Janky Count
    严重卡顿次数
    单帧绘制耗时大于 3*MOVIE_FRAME_TIME 时,计一次 big janky 。
    SF
    4. 如何优化卡顿4.1 常用的工具4.1.1 线上工具名称
    释义
    正式包慢函数
    相对于灰度包,过滤了比较多监控,对性能损耗比较小,但是需要手动打开,单点反馈中不能保留反馈现场
    灰度包慢函数
    灰度上全量打开,针对版本间的数据对比和新增卡顿问题解决比较有效
    ANR
    ANR 的及时响应和处理
    4.1.2 线下工具工具名
    备注
    Systrace
    暂不赘述
    perfetto
    加强版 systrace,可定制,可以参考官方文档
    Rhea
    最常用也是最好用的工具,方便发现下下问题和归因,和 perfetto 一起使用绝配,感兴趣的同学可以移步 github 搜索 btrace


    以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

    「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: