Android 记录系统空间的高通答疑

Case_ 05784001 ~ Customer Engineering Community.pdf

image.png

注意

case中提到的resize/recovery,就是我们之前提到的恢复出厂设置后userdata拓展到剩余空间,16G变32G的动作。
按高通的回复截图,resize/recovery之前 ui上面显示的总空间/已用空间大小没有任何参考意义(参考截图第四段落最后一行。这里提到的不可信大小就是之前你们看到的下载软件后开机,系统占用16G,总容量32G)
高通认为resize之后,此时UI上显示的存储空间数据是可信的(参考截图倒数第三行,这里提到的可信大小就是你们了解的恢复出厂设置后系统占用32G,总容量64G。我们和高通在case上沟通时提供的机器数据是基于128G的,所以高通在引用数据时写的是128G)
另外,目前PNC560我们已修改为下载软件后开机时自动拓展,无需再次恢复出厂设置了,所以用户是看不到16G系统占用这个resize之前的数据的。

注意

New Comment from Qualcomm engineer: “Dear Customer,
我想你我都漏考虑了一点,所有ufs的实际容量都不是标称容量,大约相当于标称容量的93%左右(这一点在vendor提供的 specification文档中应该有写,你可以自行查阅或向vendor求证)
比如一个标称容量64G的Hynix UFS, 它的实际容量其实是59G
LUN0 的实际容量是 59 - 6 = 53G
userdata 理论上剩下的容量是 53 - 15 = 38G
并没有你说的那么夸张,而且我们的计算并没有考虑因为物理block对齐而没有被分配的部分空间,以及apt分区表(main + back)所占用的空间,这部分在partition.xml 和 操作系统中都是不可见的。

注意

New Comment: “你好!
我们把你给的说明(4/8/2022 1:58 AM)反馈给客户了,下面是客户的回复:

高通的回复有些绕口,我确认下是不是这样:
安卓12的固件大小超过了16G,当前软件的大小统计是按照2的幂数来取整,所以显示为32G,而实际上这32G中有10多G是空的;
我看了下个人手机安卓11的固件大小是在11G左右,再怎么增加功能,也不可能到32G吧?
还有一个问题,如果是显示问题,这部分有办法调整么?要不然每个用户都会有疑问的。

这个些问题是否可以协助确认一下?
谢谢!”

注意

“Dear Customer,
安卓12的固件大小超过了16G,当前软件的大小统计是按照2的幂数来取整,所以显示为32G,而实际上这32G中有10多G是空的;
--> 这个理解是正确的
我看了下个人手机安卓11的固件大小是在11G左右,再怎么增加功能,也不可能到32G吧?
-->
userdata分区是用来存放用户数据的,不是Android固件,你可以简单理解:android固件存放在userdata之外的分区中
从partition.xml可以看出 LUN0中除了usdata之外的分区占用大约14G,userdata分区初始空间15G
所以不存在“32G”的android固件
还有一个问题,如果是显示问题,这部分有办法调整么?要不然每个用户都会有疑问的。
--> 发布到终端用户手中的设备应该是已经resize过的,用户看到的storage空间大小应该是64G/128G,这已经不存在歧义了。

注意

文韬,占飞,
3 .已用空间是不准确的,是通过2的幂数对齐后减去可用空间 显示可用 64-33 = 31G, 使用手机已用空间: 59-6-33 =20G,里面包括已用的空间和未对齐的空间。

所以里面虚标了 总容量 虚标了 5G 还有LUN4 6G
我看了下QFIL读取出来的分区表,lun4里存放的主要是modem,dsp等分区,是属于下载镜像内容,是我们传统理解的系统容量一部分。虚标只能算5G吧。
倒是lun0中的backup分区是应用保护分区,这部分是算到系统里的,有5G。这个是比标准Android12占用多出来的。

我把qfil dump出来的分区表贴在附件里了,每个分区的num_partition_sectors去乘以4就是该分区的总字节数。占飞要不把每个分区大小用excel转换为字节数和对应的GB数,会比较直观,然后再加总一下,误差就比较清楚了。
另外我比较了64G和128G的机器,系统占用都是32G,似乎高通说的也没有什么问题,关键还是客户这边。

注意

占飞,
我理了一下高通的回复。以我手里的pnc560的手机为例,我手里的是64G的手机。
在设置里面显示已使用31G,剩余33G的空间。
安装高通的说法和设置界面显示的规则:

  1. 剩余可用空间33G是准确的,代表剩余的userdate 空间有33G。
  2. 总容量是不准确的,相当于标称的93%,大约59G 但系统会以2的幂数来取整
  3. 已用空间是不准确的,是通过2的幂数对齐后减去可用空间 显示可用 64-33 = 31G, 使用手机已用空间: 59-6-33 =20G,里面包括已用的空间和未对齐的空间。
    所以里面虚标了 总容量 虚标了 5G 还有LUN4 6G

按照目前的规则,可用空间肯定必须要准确无误的,那么在可用空间计算没有问题的情况下,已用空间只能是31G

0%