写点什么

百度 APP 流畅度全流程质量监控实践 流畅度现状分析(二)

  • 2020-01-07
  • 本文字数:1126 字

    阅读完需:约 4 分钟

百度APP流畅度全流程质量监控实践 流畅度现状分析(二)

业界流畅度监控方案调研(Android)


——

丨 1. 基础流畅度概念介绍

1.1 理想帧率:

60FPS,受限于显示器的刷新频率 60HZ

1.2 理想帧长:

1/60≈16.6ms

1.3 Vsync 机制:

VSync 可以简单的认为是一种定时中断,系统在每次需要绘制的时候都会发送 VSync Pulse 信号,cpu/gpu 收到信号后马上处理绘制。

丨 2. 业界方案调研

丨 3. 监控实现原理

3.1 统计帧长基于 VSYNC:统计帧长、SM、SF:

Choreographer 类就是接受系统垂直同步信号(VSync 信号),在每次接受 VSync 信号时顺序执行 View 的 Input、Animation、Draw 等 3 个操作,然后等待下一个信号,再次顺序执行 3 个操作。如果第二个信号到来时,Draw 操作没有按时完成,界面将不会更新,显示的还是第一帧的内容。这就表示丢帧了,丢帧是造成画面卡顿的原因。所以我们可以向 Choreographer 类中加入自己的 Callback,通过此 Callback 的 doFrame 函数我们可以统计一秒内帧绘制的次数(即流畅值 SM )、绘制耗时(两次 doFrame 之间耗时,即帧长)、丢帧 SF。

3.2 基于 Looper:

利用 UI 线程的 Looper 打印的日志匹配获取帧长。和 VSYNC 方案类似,只是当 UI 线程阻塞严重时,可能出现数据丢失。(对 UI 线程的影响也是一个待平衡点)

3.3 堆栈监控:

单开线程定期抓取堆栈,基于 Vsync 或者 Looper 机制监控到帧长超过指定阈值时,上传最近的堆栈。但由于单开线程实时抓堆栈,会导致应用本身性能退化,不适宜线上长期大面积使用。

3.4 监控注意事项(实测经验):

实际测试中发现,APP 静置时,尤其是网页静置时,SM 值亦可能出现变低如接近 30 的情况,SF 值、帧长均可能存在超过理想值的情况。原因是用户虽未对界面进行操作,亦可能在后台发生下载、屏幕显示区域之外的动画等行为,整体界面展现上表现不出卡顿,但可能会对用户肉眼感知不到的加载等造成影响。



——不同阶段、不同场景下,相同流畅度指标的绝对值,对用户实际体验的反应准确度有所不同,因此建议区分场景和阶段进行监控。

参考资料

——


萧竹:Android App 性能评测分析-流畅度篇


htkeepmoving:移动 APP 性能评测-流畅度评测


腾讯:【腾讯 TMQ】GT3.1 简化您的 App 性能测试(2)——原理讲解,溯本求源


微信读书:卡顿监控系统


腾讯 perfdog:PerfDog 性能狗帮助文档


whbsspu:为什么帧率达到 60fps 页面就流畅?


egos:Android 中 VSync 机制的介绍


markzhai’s home:BlockCanary — 轻松找出 Android App 界面卡顿元凶(AndroidPerformanceMonitor)


本文转载自百度 App 技术公众号。


原文链接:https://mp.weixin.qq.com/s?__biz=MzUxMzk2ODI1NQ==&mid=2247483933&idx=1&sn=9bddb62fc031a540e3b893cc955652db&chksm=f94c530dce3bda1b69314e7f1cc0552b2a437c37c3fa341ea7084a286a9a0b15bb54dd893759&scene=27#wechat_redirect


2020-01-07 09:482122

评论

发布
暂无评论
发现更多内容

2/8 19:00 直播 | StarRocks 实战系列第一期--部署&导入

StarRocks

数据库

快速入门pandas进行数据挖掘数据分析[多维度排序、数据筛选、分组计算、透视表](一)

汀丶人工智能

Python 数据挖掘 数据分析 pandas

第三届腾讯Light·技术公益创造营正式启动:聚焦三大议题,探索技术公益可持续路径​

OpenCloudOS

开源

沿着数字中国的大江大河,领略云上三峡

脑极体

华为云 三峡

青云 KubeSphere 与 OpenCloudOS 完成技术兼容互认证

OpenCloudOS

云原生 操作系统 KubeSphere

案例研究:让线上故障沉淀为团队的经验

石云升

极客时间 2月月更 技术领导力实战笔记

Zebec 上线投票治理机制,全新流支付生态正在起航

股市老人

深度剖析 Linux 伙伴系统的设计与实现

bin的技术小屋

Linux 内存管理 Linux内核 内存分配 Linux内核源码

官宣:计算中间件 Apache Linkis 正式毕业成为 Apache 顶级项目

腾源会

开源

Zebec 上线投票治理机制,全新流支付生态正在起航

鳄鱼视界

Jackson 的 DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES

HoneyMoose

Zebec 投票治理机制上线,全新流支付生态正在起航

西柚子

金兔迎福报、新春第一炮【2022 中国开源年度报告】!

腾源会

开源

我发现买不起自己出版的图书了,这到底是咋回事?

冰河

程序员 并发编程 高并发 架构师 编程开发

信用卡APP评测系列——工银e生活5.0打造个人生活服务平台,引领用户美好生活

易观分析

金融 银行 信用卡

大文件传输软件的优势有哪些?-镭速传输

镭速

写给go开发者的gRPC教程-protobuf基础

凉凉的知识库

golang 微服务 gRPC protobuf 微服务框架

活动预告 | 2023 QCon 全球软件开发大会 - AI 基础架构论坛

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

基于 Flink+Pravega 的游戏服务器监控与调节系统设计

Apache Flink

大数据 flink 实时计算

跬智信息 (Kyligence) 入选2022年度上海市优质大数据服务供应商目录

Kyligence

大数据 数据分析

提名倒计时! | 2022 龙蜥社区优秀贡献者

OpenAnolis小助手

技术 操作系统 龙蜥社区 开源贡献者 奖项报名

【1.27-2.3】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

gcc属性__attribute__((naked))使用场景

SkyFire

GCC 内嵌汇编

D触发器 (D-FF)详解

timerring

FPGA

全息电网 数字孪生智慧电网Web3D运维系统

2D3D前端可视化开发

智慧电网 数字电网 智能电网 数字孪生智慧电网 智慧电网三维可视化

湖仓一体电商项目(十八):业务实现之编写写入DWD层业务代码

Lansonli

数据湖 湖仓一体电商项目

解锁极狐GitLab 自动化功能:Webhook 触发 Pipeline 与计划流水线

极狐GitLab

DevOps pipeline ChatOps webhook ChatGPT

喜讯!云起无垠实力入选多项中国网络安全行业全景图

云起无垠

架构训练营模块四作业

gigifrog

架构训练营

抖音春晚直播观看人数破1.3亿,火山引擎技术助力“新年俗”新体验

火山引擎边缘云

云原生 CDN 边缘计算 抖音 视频云

百度APP流畅度全流程质量监控实践 流畅度现状分析(二)_语言 & 开发_百度App技术_InfoQ精选文章