高可用流畅度方案

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. Flutter 线上流畅度监控方案 叶然(阿詹) 阿里巴巴 - 智能信息事业群 - U4 内核研发团队
2. 目录 01 背景介绍 02 方案总览 03 指标建设 04 定位问题 05 总结与展望
3.
4. 背景介绍
5. 背景与现状 监控指标不准 • 线上指标和线下测试差异大,精度 不够,导致无法准确感知性能劣化, 只能关注指标的波动。 监控场景复杂 • 线上用户使用场景复杂,导致监控 到大量异常极值数据,难以分析。 版本迭代的质量难以把控 日常监控难以发现问题 缺乏有效定位手段 • 当指标出现波动时,无法定位或者 定位能力不够高效,只能定位少数 问题 人力成本巨增 对线上情况毫无掌控
6. 突破思路 精准指标 需求 帧率 发现问题 🙁不够 Hummer 引擎 卡顿 高效闭环方案 定位方案 定位问题 卡顿Trace 验证效果 卡顿聚合
7. 方案总览
8. 卡顿trace定位案例 流畅度分析模型 帧率监控 刷新率 1. 帧率分析 5.线下优化 场景 2.发现波动 卡顿监控 卡顿耗时 卡顿trace 卡顿数量 卡顿trace 卡顿率 4.trace定位 3.卡顿分析 聚合排名 卡顿场景 卡顿函数 卡顿间隔
9. 线上监控方案架构 平 台 侧 Itrace 大盘实时监控 多位度问题分析 数据可视化 自动诊断优先级 自动预警 用户路径 高可用插件 数据上报通道 客 户 端 Hummer 引擎 卡顿判定 帧率 API请求 白屏 首屏 资源加载 页面访问 异常 自定义监控 卡顿trace收集 首屏判定 首屏问题信息收集 业务代码 图片加载跟踪 黑屏检测
10. 流畅度指标建设
11. Flutter渲染流水线 Vsync Ui Dart Layer Tree Layer Tree Layer Tree Raster Compositor|Skia Layer Tree Layer GL Tree Vulkan 系统 GPU Vsync
12. 业界方案1 Vsync Ui Vsync Dart Raster Compositor|Skia 系统 GPU 帧耗时数据 😢延迟一秒返回
13. 业界方案2 Vsync Ui Raster 系统 Vsync Dart Frame_count Compositor|Skia Draw_count 帧率 = 60*(draw_count / Frame_count) GPU
14. Vsync 实验室方案和hummer方案 Vsync Dart Ui Raster Compositor|Skia 系统 GPU PRODUCER BUFFER QUEUE CONSUMER ⚡Present fence
15. 帧率方案对比 业界方案1 01 官方Api(addTimingsCallback):❌准确性、延迟 02 03 04 业界方案2 60*满帧率: ❌准确性 业界线下方案 Dump SurfaceFlinger:✅准确度高❌不适用线上 Hummer方案 帧绘制开始时统计次数:✅较准确、适用线上、简单
16. 帧率建设 按照刷新率分类 场景分类 脏数据过滤 按主流刷新率对帧率分类 增加场景信息(滑动、动画) 过滤拖拽、慢滑、手指触屏所 造成的脏数据 - 01 - - 02 - - 03 - 按照动画为单位 计算fps 只统计连续刷帧的场景 -04 -
17. 卡顿trace定位案例 帧率的缺陷 波动不明显 • 当业务的水准较高时,帧率就会波 动不明显 关注卡顿变化 • 帧率 关注卡顿问题的增幅来发现问题 卡顿
18. 卡顿trace定位案例 流畅度分析模型 帧率监控 刷新率 1. 帧率分析 5.线下优化 场景 2.发现波动 卡顿监控 卡顿耗时 卡顿trace 卡顿trace 细致分析模型 4.trace定位 卡顿数量 3.卡顿分析 卡顿率 聚合排名 卡顿场景 卡顿函数 卡顿间隔
19. 卡顿方案对比 业界方案1 01 官方Api(addTimingsCallback):❌延迟 02 03 04 业界方案2 掉帧数: ❌过于严格,脱离体感 电影帧卡顿:当前帧耗时>前三帧耗时平均值的两倍 业界线下方案 当前帧耗时>两个电影帧(1000ms/24*2 =83ms) 电影帧卡顿:✅关注体感❌仅适用游戏场景 Hummer方案 更小的电影帧卡顿:✅关注体感,适用app场景
20. 帧耗时计算 Vsync Ui Raster Vsync Vsync Raster_end 系统 帧耗时 = Ceil((Raster_end – Vsync) / Vsync_interval)* Vsync_interval
21. 卡顿方案优势 准确度高 卡顿和停顿的区别 贴近体感 丰富的卡顿信息 最接近实验室精度的监控方式 解决很多方法无法判定停顿的 考虑视觉暂留,更贴近用户体 提供卡顿时间、卡顿率、卡顿 感 间隔、线程耗时等数据 问题 - 01 - - 02 - - 03 - -04 -
22. 定位卡顿问题
23. 卡顿定位方案对比 卡顿堆栈 卡顿trace 卡顿trace 卡顿堆栈 ✅捕获准确 ❌难捕获 -> 频繁的捕获 ✅好分析 ✅极底比例采样, 性价比高 ❌难分析 ❌需要大量抓取才能分析, 🤔不细致->✅细致 ✅细致 性价比低
24. 卡顿trace流程 App • 利用官方已有的trace机 制,缓存业务和引擎层的 • 一帧的trace信息 性能优化(线程锁,文件 • 落盘) 判定卡顿,提取缓存的一 帧trace • 监控平台 借助Perfetto 卡顿 • trace可视化 卡顿聚合 高可用 • • 数据整理和计算 上报卡顿日志
25. 卡顿trace优势 数据可视化 自动诊断聚合 动态采样 用户无感 高效定位
26. 卡顿trace定位案例 卡顿trace实战 优化前 优化后 卡顿占比 35.39% 0.04% 帧率(滑动) 55.7 56.8 定位率 聚合后top2卡顿问题 卡顿问题定位 优化效果验证
27. Itrace界面 实时分析 指标大盘
28. 总结与展望
29. 方案特色 引擎的助力 引擎层的辅助信息 精准且贴近体感的指 标设计 深挖底层原理,从用户使用角 高效定位问题 方案闭环 卡顿trace和卡顿聚合 发现问题,定位问题,验证优 化 度思考 - 01 - - 02 - - 03 - -04 -
30. 致力于打造业界领先的线上监控方案 首屏监控 白屏 内存分析 提高判定准确率 提高判定准确率 客户端 场景复现 引擎 占位图场景 轮播图场景 特殊图忽略 图片加载全链路分析 黑屏 服务端 判定 客户端 定位信息收集 引擎
31. 扫码回复「D2」 获取第十七届 D2 演讲 PDF 材料 U4内核技术 公众号 后续也将推送 D2 会后技术文章,敬请关注!!
32. 感谢大家观看

首页 - Wiki
Copyright © 2011-2024 iteam. Current version is 2.124.0. UTC+08:00, 2024-05-02 21:35
浙ICP备14020137号-1 $访客地图$