WWDC Quick Look 💓 By SwiftGGTeam
Diagnose performance issues with the Xcode Organizer

Diagnose performance issues with the Xcode Organizer

观看原视频

Highlight

Xcode 12 的 Organizer 在无需改动 App 的前提下,把同意共享设备上的聚合电量、性能和 I/O 数据做成版本对比、scroll hitch 指标与 disk write 诊断报告。


核心内容

做 App 性能优化时,开发者常遇到一个尴尬问题:手里的设备和测试脚本只能覆盖少量场景,真正的用户设备、系统版本、使用方式会复杂得多。你知道要提高电池续航和流畅度,却很难判断下一个版本最该先修哪里。(00:30

Xcode Organizer 给出的入口很直接:打开 Xcode,选择 Window > Organizer。App 不需要做任何改动。用户同意共享后,Apple 会收集电量、性能和 I/O 数据,在服务器端聚合,再通过 Organizer 返回给开发团队。(01:43

2020 年的变化有三块。Organizer 增加了 scroll hitch 指标,用来衡量滚动时帧是否按预期时间出现在屏幕上;增加了 disk write diagnostics reports,用调用栈帮你定位过量写盘;同时重做了交互界面,让两个 App 版本的指标对比变成一次点击。(02:41

演示里的 Meal Planner 很像真实项目。新版本加入自定义照片和菜谱后,Organizer 先显示 disk writes 在 2.2 版本突然升高,再通过 Reports > Disk Writes 把问题拆成不同 signature。开发者从 stack trace 跳回对应代码,修复后回到 metrics 确认数据恢复。(08:31

详细内容

打开 Organizer 就能看到线上聚合指标

00:51)Organizer 跟随 Xcode 提供,不要求 App 集成额外代码。它展示的是同意共享设备上的聚合 battery、performance 和 I/O metrics,适合回答“真实用户已经遇到了什么问题”。

Xcode > Window > Organizer
source = consented user devices
aggregation = Apple servers
metrics = battery, performance, IO
app changes required = none

关键点:

  • Window > Organizer 是本场 session 明确给出的入口。
  • 数据来自同意共享的设备,并由 Apple 聚合后返回。
  • 这类数据适合发布后观察,不替代本地 Instruments 或 XCTest 性能测试。
  • 文章不把这些数据写成实时日志,因为 transcript 只说明它们会被聚合后展示在 Organizer 中。

scroll hitch rate 把滚动卡顿变成可比较指标

03:19)Scroll hitch 指滚动过程中,某个渲染帧没有在预期时间出现在屏幕上。用户看到的结果是跳动、迟滞或掉帧。

hitch rate = hitch time / scroll duration
smooth range = less than 5 ms/s
warning range = 5 to 10 ms/s
poor range = greater than 10 ms/s

关键点:

  • hitch time 是帧额外花费的总时间。
  • scroll duration 是用户在 App 内滚动的总时间。
  • 小于 5 ms/s 时,用户大多会感到滚动顺滑。
  • 5 到 10 ms/s 表示每隔几秒就会掉帧。
  • 大于 10 ms/s 表示掉帧会频繁出现,滚动体验会变差。

新 UI 用版本对比定位发布回归

05:45)Xcode 12 的 Organizer 新界面支持点击旧版本,与最新版本做并排对比。演示里,Meal Planner 的最新版本在 Camera 和 Bluetooth 的 battery usage 子类别上升,开发者马上知道下一步要查哪里。

open Organizer
select an older app version
compare latest version with selected version
inspect metric subcategories
check limited-usage icon and margin of error

关键点:

  • 版本对比是单击旧版本后触发的交互,不需要手动导出表格。
  • battery usage 会继续拆到子类别,演示中出现了 Camera 和 Bluetooth。
  • Xcode 12 把展示数据所需的使用量门槛降低到原来的五分之一。
  • 使用量有限的版本会显示图标和误差范围;随着更多用户升级,误差范围会下降。

disk write diagnostics 从指标峰值走到调用栈

05:00)Disk write diagnostics logs 会在 24 小时内写盘超过 1GB 时聚合。它补齐了上一年只有 disk write metrics 时缺少的上下文。

Disk Writes metric spike
-> Reports > Disk Writes
-> inspect signatures
-> review device and OS breakdown
-> inspect 14-day report trend
-> read sample stack traces
-> mark signature as resolved
-> confirm metrics return after users adopt the fix

关键点:

  • Disk Writes 报告按 signature 聚合问题,signature 下方会显示它占 disk writes 的比例。
  • 右侧报告会按设备类型和系统版本拆分,并显示最近 14 天收到的 report 趋势。
  • Organizer 提供 sample stack traces 和 Details 区域,帮助开发者回到造成写盘的代码路径。
  • 演示修复后会把 signature 标记为 resolved,再等用户使用修复版本后回到 metrics 验证。

核心启发

  • 做什么:把 Organizer 版本对比加入每次发布后的检查表。为什么值得做:Xcode 12 可以直接比较两个版本的电量、性能和 I/O 指标。怎么开始:新版本上线后打开 Window > Organizer,选中上一版,记录突然升高的指标和子类别。

  • 做什么:为核心列表页建立滚动体验验收线。为什么值得做:scroll hitch rate 把用户感到的跳动拆成小于 5、5 到 10、大于 10 ms/s 三个范围。怎么开始:先用 Organizer 找线上 hitch 较高的页面,再配合 Session 10077 的 XCTest 在发版前覆盖同一条滚动路径。

  • 做什么:把过量写盘当成发布回归单独跟踪。为什么值得做:Organizer 会在 24 小时写盘超过 1GB 时聚合 disk write diagnostics,并把 signature、比例、设备和系统分布展示出来。怎么开始:看到 Disk Writes 指标峰值后进入 Reports > Disk Writes,按 signature 分配修复人,并在修复后标记 resolved。

  • 做什么:对低使用量版本单独标记数据可信度。为什么值得做:Xcode 12 更早展示数据,但使用量有限的版本会有误差范围。怎么开始:在发布看板里记录 Organizer 的 limited-usage 图标和 margin of error,等更多用户升级后再复查同一指标。

关联 Session

评论

GitHub Issues · utterances