背景
一直以来我都使用iMazing来对iPhone进行备份,最早是iPhone 6,然后迁移到iPhone 8, 现在是iPhone 12。我一直很好奇,不管是用有线还是无线,iPhone 12备份总是要执行三四十分钟(虽然比之前iPhone 8的一个半小时左右要好),而且这个过程耗电还不少。这些时间和电力都花在哪里了呢?
最近发现无线备份又好几天没有自动进行了,于是插上USB数据线进行了一次备份,并观察了日志,没想到有了一些有意思的发现
探索
通过iMazing(或系统的Console)可以查看手机的控制台日志。我在日志里过滤BackupAgent2
这个信息,经过观察,发现了一些内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
Jun 30 19:13:37 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 10000 files (AppDomain-com.tencent.xin) Jun 30 19:13:43 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 20000 files (AppDomain-com.tencent.xin) Jun 30 19:13:49 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 30000 files (AppDomain-com.tencent.xin) Jun 30 19:13:55 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 40000 files (AppDomain-com.tencent.xin) Jun 30 19:14:01 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 50000 files (AppDomain-com.tencent.xin) Jun 30 19:14:07 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 60000 files (AppDomain-com.tencent.xin) Jun 30 19:14:13 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 70000 files (AppDomain-com.tencent.xin) Jun 30 19:14:18 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 80000 files (AppDomain-com.tencent.xin) Jun 30 19:14:24 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 90000 files (AppDomain-com.tencent.xin) Jun 30 19:14:30 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 100000 files (AppDomain-com.tencent.xin) Jun 30 19:14:36 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 110000 files (AppDomain-com.tencent.xin) Jun 30 19:14:41 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 120000 files (AppDomain-com.tencent.xin) Jun 30 19:14:47 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 130000 files (AppDomain-com.tencent.xin) Jun 30 19:14:53 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 140000 files (AppDomain-com.tencent.xin) Jun 30 19:14:58 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 150000 files (AppDomain-com.tencent.xin) Jun 30 19:15:04 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 160000 files (AppDomain-com.tencent.xin) Jun 30 19:15:10 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 170000 files (AppDomain-com.tencent.xin) Jun 30 19:15:16 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 180000 files (AppDomain-com.tencent.xin) Jun 30 19:15:22 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 190000 files (AppDomain-com.tencent.xin) Jun 30 19:15:28 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 200000 files (AppDomain-com.tencent.xin) Jun 30 19:15:34 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 210000 files (AppDomain-com.tencent.xin) Jun 30 19:15:40 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 220000 files (AppDomain-com.tencent.xin) Jun 30 19:15:46 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Found 230000 files (AppDomain-com.tencent.xin) Jun 30 19:15:48 Sharpbais-iPhone-12 BackupAgent2[1216] <Notice>: Finished scanning domain AppDomain-com.tencent.xin - size:22730807632/0/1602699264, files:234178, dirs:2562, clones:61/17/75, hardLinks:669, symLinks:1: (null) |
我发现在备份的第一个阶段,iMazing提示是「准备进行备份」,看起来会进行一次完整的本机扫描,会扫描每个安装的目录的本地数据,然后上面的意思是,微信的应用目录下有21G的数据,与本地备份好的数据相比有1.5G的数据变动,文件一共有23万多个,目录2500多个。
并且可以看到,iPhone12大概每5~6s就能扫描完成本地的10000个文件。不得不说,iPhone12的CPU的运算以及整个访存系统的性能真是非常优秀了,131s扫描了21G的文件,这种遍历+扫描+计算哈希值+与远程信息进行比对,平均处理速度到165MB/s,1781个文件每秒,这个访存带宽+IOPS性能估计不少笔记本或台式机都达不到。
怪不得之前iPhone 8的时候速度那么慢,毕竟CPU、内存、以及SSD比iPhone 12还是有显著的差异的。为了维持这么大的计算以及IO量,确实还是很耗电的。
另外一点,这个扫描不仅仅是准备阶段会执行,在拷贝完数据之后,观察到还会再执行一遍。
结论
目前基本上清楚了。每天备份中耗电耗时主要在文件扫描和差异计算以及备份完成后的校验上。文件以及差异主要来自于我超过7年的微信聊天记录及相关文件。
最近有一个感兴趣的主题就是评估「访存系统」的性能,这远比对比CPU计算性能实际的多。后面会专门在研究后总结一下。