• 当前位置: 石阡县均傻汽车资讯网 > 论坛 > 正文

  • 带你打造一套 APM 监控体系 之 卡顿监控
    时间:2020-07-05   作者:admin  点击数:

    原标题:带你打造一套 APM 监控体系 之 卡顿监控

    作者丨杭城幼刘

    花垣恁捘融资担保公司

    来源公多号丨知识幼集(zsxjtip)

    https://github.com/FantasticLBP/knowledge-kit/blob/master/Chapter1 - iOS/1.74.md

    APM 是 Application Performance Monitoring 的缩写,监视和管理柔件行使程序的性能和可用性。行使性能管理对一个行使的赓续安详运走至关主要。以是这篇文章就从一个 iOS App 的性能管理的纬度谈谈如何准确监控以及数据如何上报等技术点

    App 的性能题目是影响用户体验的主要因素之一。性能题目主要包含:Crash、网络乞求舛讹或者超时、UI 反响速度慢、主线程卡顿、CPU 和内存行使率高、耗电量大等等。大无数的题目因为在于开发者舛讹地行使了线程锁、体系函数、编程规范题目、数据组织等等。解决题目的关键在于尽早的发现和定位题目。

    本系列文章偏重总结了 APM 的因为以及如何搜集数据。APM 数据搜集后结相符数据上报机制,遵命必定策略上传数据到服务端。服务端消耗这些新闻并产出报告。请结相符姊妹篇, 总结了如何打造一款变通可配置、功能富强的数据上报组件。

    APM 是 Application Performance Monitoring 的缩写,监视和管理柔件行使程序的性能和可用性。行使性能管理对一个行使的赓续安详运走至关主要。以是这篇文章就从一个 iOS App 的性能管理的纬度谈谈如何准确监控以及数据如何上报等技术点

    App 的性能题目是影响用户体验的主要因素之一。性能题目主要包含:Crash、网络乞求舛讹或者超时、UI 反响速度慢、主线程卡顿、CPU 和内存行使率高、耗电量大等等。大无数的题目因为在于开发者舛讹地行使了线程锁、体系函数、编程规范题目、数据组织等等。解决题目的关键在于尽早的发现和定位题目。

    本系列文章偏重总结了 APM 的因为以及如何搜集数据。APM 数据搜集后结相符数据上报机制,遵命必定策略上传数据到服务端。服务端消耗这些新闻并产出报告。请结相符姊妹篇, 总结了如何打造一款变通可配置、功能富强的数据上报组件。

    吾们先从卡顿题目讲首。

    卡顿题目,就是在主线程上无法反响用户交互的题目。影响着用户的直接体验,以是针对 App 的卡顿监控是 APM 内里主要的一环。

    FPS(frame per second)每秒钟的帧刷新次数,iPhone 手机以 60 为最佳,iPad 某些型号是 120,也是行为卡顿监控的一项参考参数,为什么说是参考参数?由于它约束禁锢确。先说说怎么获取到 FPS。CADisplayLink 是一个体系准时器,会以帧刷新频率相通的速率来刷新视图。 [CADisplayLink displayLinkWithTarget:self selector:@selector(###:)] 。至于为什么约束禁锢吾们来望望下面的示例代码

    _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(p_displayLinkTick:)];

    [_displayLink setPaused:YES];

    [_displayLink addToRunLoop:[NSRunLoop currentRunLoop] forMode:NSRunLoopCommonModes];

    代码所示,CADisplayLink 对象是被增补到指定的 RunLoop 的某个 Mode 下。以是照样 CPU 层面的操作,卡顿的体验是整个图像渲染的效果:CPU GPU。请不息去下望

    1. 屏幕绘制原理

    讲讲老式的 CRT 表现器的原理。CRT 电子枪遵命上面手段,从上到下一走走扫描,扫面完善后表现器就表现一帧画面,随后电子枪回到初首位置不息下一次扫描。为了把表现器的表现过程和体系的视频限制器进走同步,表现器(或者其他硬件)会用硬件时钟产生一系列的准时信号。当电子枪换到新的一走,准备进走扫描时,表现器会发出一个程度同步信号(horizonal synchronization),简称 HSync;当一帧画面绘制完善后,电子枪恢复到原位,准备画下一帧前,表现器会发出一个垂直同步信号(Vertical synchronization),简称 VSync。表现器清淡以固定的频率进走刷新,这个固定的刷新频率就是 VSync 信号产生的频率。固然现在的表现器基本都是液晶表现屏,但是原理保持不变。

    清淡,屏幕上一张画面的表现是由 CPU、GPU 和表现器是遵命上图的手段协同做事的。CPU 根据工程师写的代码计算益必要现实的内容(比如视图创建、组织计算、图片解码、文本绘制等),然后把计算效果挑交到 GPU,GPU 负责图层相符成、纹理渲染,论坛随后 GPU 将渲染效果挑交到帧缓冲区。随后视频限制器会遵命 VSync 信号逐走读取帧缓冲区的数据,经过数模转换传递给表现器表现。

    在帧缓冲区只有一个的情况下,帧缓冲区的读取和刷新都存在效果题目,为晓畅决效果题目,表现体系会引入2个缓冲区,即双缓冲机制。在这栽情况下,GPU 会预先渲染益一帧放入帧缓冲区,让视频限制器来读取,当下一帧渲染益后,GPU 直接把视频限制器的指针指向第二个缓冲区。升迁了效果。

    现在来望,双缓冲区挑高了效果,但是带来了新的题目:当视频限制器还未读取完善时,即屏幕内容表现了片面,GPU 将新渲染益的一帧挑交到另一个帧缓冲区并把视频限制器的指针指向新的帧缓冲区,视频限制器就会把新的一帧数据的下半段表现到屏幕上,造成画面扯破的情况。

    为晓畅决这个题目,GPU 清淡有一个机制叫垂直同步信号(V-Sync),当开启垂直同步信号后,GPU 会等到视频限制器发送 V-Sync 信号后,才进走新的一帧的渲染和帧缓冲区的更新。如许的几个机制解决了画面扯破的情况,也增补了画面流畅度。但必要更多的计算资源

    应疑

    能够有些人会望到「当开启垂直同步信号后,GPU 会等到视频限制器发送 V-Sync 信号后,才进走新的一帧的渲染和帧缓冲区的更新」这边会想,GPU 收到 V-Sync 才进走新的一帧渲染和帧缓冲区的更新,那是不是双缓冲区就失踪意义了?

    设想一个表现器表现第一帧图像和第二帧图像的过程。最先在双缓冲区的情况下,GPU 最先渲染益一帧图像存入到帧缓冲区,然后让视频限制器的指针直接直接这个缓冲区,表现第一帧图像。第一帧图像的内容表现完善后,视频限制器发送 V-Sync 信号,GPU 收到 V-Sync 信号后渲染第二帧图像并将视频限制器的指针指向第二个帧缓冲区。

    望上去第二帧图像是在等第一帧表现后的视频限制器发送 V-Sync 信号。是吗?真是如许的吗?,

友情链接

Powered by 石阡县均傻汽车资讯网 @2018 RSS地图 html地图

Copyright 365站群 © 2013-2018 版权所有