【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

百度 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:481680

评论

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

KCL v0.5.0 重磅发布 - 面向云原生场景更易用的语言、工具链,社区集成和扩展支持

Peefy

开源 DevOps 云原生 编程语言 Kubernetes Serverless

基于Qt编写超精美自定义控件

智趣匠

AI大模型应用开发实战营第一周作业

panxiaochun

Ubuntu 20.04系统编译安装phpMyAdmin教程。

百度搜索:蓝易云

云计算 Linux ubuntu 运维 phpMyAdmin

质效两全:媒体服务的创新“顶设”

阿里云视频云

云计算 视频云

矿炼真金色,终见菩提心:首个商用的矿山大模型是怎样炼成的?

脑极体

AI 大模型

XR应用云流化如何提升扩展现实体验?!

3DCAT实时渲染

实时渲染云 XR应用云流化

Nautlius Chain主网正式上线,模块Layer3时代正式开启

EOSdreamer111

生成式 AI:改变未来的力量| 社区征文

度假的小鱼

年中技术盘点

百度与软通动力达成战略合作,共同探索大模型产业化落地

彭飞

MVCC

陈皮

Ubuntu 20.04系统编译安装Docker教程。

百度搜索:蓝易云

Docker 云计算 Linux ubuntu 运维

全加器

陈皮

软件测试 | Java开发环境搭建

测吧(北京)科技有限公司

测试

NUC永存!英特尔刚刚和华硕聊了后续合作

E科讯

全部免费!整理了10个Python自动化办公库!(下)

程序员晚枫

Python 工具 机器人 自动化办公

软件测试 | Java程序的运行机制和Java虚拟机

测吧(北京)科技有限公司

测试

关于新兴技术对我们生活和工作方式的改变 | 社区征文

fifoaa

年中技术盘点

成功实践丨虚实交互,安擎赋能城市交通大数据应用

科技热闻

B站&华为云 | 融合虚实宇宙,开启云上视听的黄金时代

脑极体

AI B站 华为云

Ubuntu 20.04系统编译安装Pure-Ftpd教程。

百度搜索:蓝易云

云计算 Linux ubuntu 运维 Pure-FTPd

浅谈大模型时代的后台技术发展|社区征文

后台技术汇

年中技术盘点

Nautlius Chain主网正式上线,模块Layer3时代正式开启

威廉META

2023-07-19:布尔表达式 是计算结果不是 true 就是 false 的表达式 有效的表达式需遵循以下约定: ‘t‘,运算结果为 true ‘f‘,运算结果为 false ‘!(subExpr

福大大架构师每日一题

福大大架构师每日一题

在 Amazon 上以高可用性模式实现 Microsoft SQL 数据库服务现代化的注意事项

亚马逊云科技 (Amazon Web Services)

Amazon

如何写出一手好代码(上篇-理论储备)?

慕枫技术笔记

后端 7月日更

RocketMQ 事务消息导致事务消息阻塞 BUG 排查

陈皮

RocketMQ bug 事务消息

百度智能云 X 软通动力:将结合大模型开发多领域智能应用

科技热闻

软件测试 | 编写第一个Java程序

测吧(北京)科技有限公司

测试

Nautlius Chain主网正式上线,模块Layer3时代正式开启

鳄鱼视界

Ubuntu 20.04系统编译安装Tomcat教程。

百度搜索:蓝易云

云计算 tomcat Linux ubuntu 运维

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