news 2026/10/9 10:18:15

高通平台实测情况分享(3): UFS读写时延

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
高通平台实测情况分享(3): UFS读写时延

高通平台实测情况分享的第三篇。
上一篇实测了温控cpufreq,这篇继续分享实测的另一个指标UFS读写时延。

前言

存储是最容易测出误导性数字的部件:

  • 同一块盘,走文件系统还是裸设备,4K 随机写能差五倍;
  • 换一个块层调度器,随机读掉三分之一;
  • 再过一层加密,又是一截。

两台设备跑完,最大的收获是不同的测试方法和一份能复用的基线方法。

实测的两台设备 UFS 栈同参数、同工具测试:
• 第五代骁龙8至尊版(SM8850)(Micron 512GB,UFS 4.0)。
• 高通跃龙IQ-9075 EVK(Micron 128GB,UFS 3.1)。

控制器参数从 sysfs 直读,性能用同版本 fio 3.36(libaio + direct)测,IQ-9075 与 SM8850 另有 dd 交叉验证。

我们发现第五代骁龙8至尊版平台SM8850为密闭壳内被动散热,IQ-9075 EVK 开放空气加大散热片。同一段压测代码,两种散热与功耗策略,降频行为表现不同。

测完最大的收获不在两代 UFS 的带宽差,而是:

  • SM8850 上同一块盘,文件系统层和裸设备层的 4K 随机写差了五倍,顺序读反过来是文件系统层更快;
  • IQ-9075 的 ext4 无加密栈,不同于骁龙移动平台的 /data 路径。

不先弄清楚 IO 经过什么,可能就没办法真正理解这些测试数字背后逻辑。这篇把 UFS 参数、IO 路径和测量方法一次讲清楚,先了解相关数字是哪条 IO 路径上测出来。

1. 控制器与盘体参数

项IQ-9075 EVKSM8850
盘体Micron MT128GBCAV2U31AIMicron MT512GAYAX4U4001
UFS 规范3.1(0x0310)4.0(0x0400)
容量128GB512GB
设备队列深度3264
host can_queue / cmd_per_lun31 / 3163 / 31
nr_hw_queues19
块层调度器(默认)mq-deadlinemq-deadline
auto_hibern8150000 us5000 us
内核6.8.0-1080-qcom6.17 mainline

IQ-9075 同组参数一次读全(盘体、spec 0x0310、queue_depth 0x20、can_queue 31、nr_hw_queues 1、mq-deadline、wb_on=0):

SM8850 的盘体与 spec:

队列与链路在同一屏,can_queue 63、nr_hw_queues 9、可选调度器none [mq-deadline] kyber bfq,以及空闲时的 HS_GEAR2 / HIBERN8:

两台同为 ufshcd-qcom 驱动。SM8850 队列深度翻倍,硬件队列从 1 个变 9 个,多核并发提交 IO 不用抢一把锁。auto_hibern8 两台手机都是 5ms,IQ-9075 EVK 是 150ms。

链路状态(power_info)显示了内核代际差异:IQ-9075 EVK(6.8)和 SM8850(6.17)都有这个节点。两台都能读到,且随负载自动升降档:

状态IQ-9075SM8850
空闲HS_GEAR1 x2HS_GEAR2 x2
负载中HS_GEAR4 x2HS_GEAR5 x2

均为 FAST_MODE / HS_RATE_B。Gear5 x2 理论带宽约 5.8GB/s,Gear4 x2 约 2.9GB/s。升降档由控制器自主完成,sysfs 只读。

IO 路径是两台机器不大相同:

  • IQ-9075:测试文件在/var/tmp。ext4 直接建在 UFS 分区上,无加密层
  • SM8850:同样 f2fs → dm-default-key(全盘加密,inlinecrypt 硬件内联)→ sda12,挂载参数带background_gc=on

SM8850的 /data 过了加密层和 f2fs,IQ-9075 并没有,这个差异后面会多次出现在数据里。

2. 顺序读写

fio 1M 块、direct、QD8、time_based 20s,两台设备的参数:

测试IQ-9075(ext4)SM8850(f2fs+加密)
顺序读1695 MiB/s4062 MiB/s
顺序写(无 fsync)460 MiB/s3577 MiB/s

同为 UFS 3.1,SK hynix 盘比 Micron 128GB 盘略快(读 1895 对 1695),两者都在 Gear4 x2 的带宽包络内。

  • SM8850 的 UFS 4.0,代际差加上 512GB 大容量 NAND 的并行度优势。
  • IQ-9075 上 dd 复测(1M direct)读 1.4GB/s、写 481MB/s,与 fio 相互印证;

SM8850 的顺序写数字要说明测试条件:3577 MiB/s 是不带 fsync 的持续写,数据进了 f2fs 日志缓冲和盘内 DRAM。补一组带end_fsync=1的 512MB 写,强制落盘后是1299 MiB/s,差 2.8 倍。time_based 持续写场景下缓冲会被摊平,两台设备都是无 fsync。

3. 4K 随机

fio 4K、direct、4 线程 x QD32(总深度 128)、time_based 30s。SM8450 默认调度器是 bfq:

测试IQ-9075(ext4)SM8850(f2fs+加密)SM8850(裸设备只读)
随机读146k IOPS89.1k IOPS118k IOPS
随机写99.2k IOPS18.7k IOPS未测(裸写不安全)

调度器切到 mq-deadline 后, IO 路径IQ-9075 是 ext4 裸分区,SM8850 是 f2fs + dm 加密,文件系统层 89.1k,绕开文件系统直接读裸块设备/dev/block/sda(--readonly)回到 118k IOPS,f2fs 元数据查找加 dm-default-key 加密层吃掉约四分之一性能。

随机写两台拉不开差距:15.3-18.7k,全在 f2fs 的最差路径上。f2fs 是日志结构文件系统,4K 随机覆盖写要走新数据追加写、旧段失效、触发 background GC。SM8850 monitor 里写时延最大值 309ms 就是 GC 长尾;用 fallocate 预分配 1GB 文件再测,排除文件布局阶段,也只有 20.3k IOPS,GC 的影响坐实。IQ-9075 的 ext4 随机覆盖写是原地更新,99.2k 没有这层开销。

结论:SM8850的 /data 路径上的 4K 随机写数字主要反映 f2fs+加密+GC 的软件栈,不反映控制器能力。存储随机写的能力主要是在软件层。

裸设备顺序读还有一组值得记的数据:SM8850 裸读 1M QD8 只有 2241-2690 MiB/s(QD32 时 2970),比文件系统层的 3755-4062 低。4GB 文件复测排除了盘内缓存因素后差异仍在,f2fs 的预读和 extent_cache 在大块顺序读上是净收益,文件系统层未必比裸设备慢。小块随机和大块顺序,f2fs 的开销和收益方向相反。

4. 控制器侧时延

两台设备都开 UFS monitor(monitor_enable,重启后需重新使能):

指标IQ-9075(randrw 后)SM8850(fs 测试后)SM8850(裸读后)
读时延均值466 us120 us187 us
读时延最大18.4 ms4.1 ms45.7 ms
写时延均值279 us258 us—
写时延最大56.9 ms309.6 ms—

UFS 4.0 盘体的读响应确实快:SM8850 文件系统层测试读时延均值 120us,两台 UFS 3.1 是 466/583us。写时延均值两台设备接近(258-622us)。

monitor 量的是主机控制器视角的命令完成时间,与 fio 应用层 clat(含排队)量的不是同一段时间:SM8850 fio 报的 4K 随机写 clat 均值 6647us,monitor 写均值只有 258us,QD128 下排队时间占大头。

5. 踩坑分享

fio 在SM8850上第一次都跑不起来:

shmget: Function not implemented,设备内核关了 SysV IPC(SM8850 的CONFIG_SYSVIPC is not set直接可在 /proc/config.gz 确认),fio 默认用 SysV 共享内存段存线程结构。官方 Android 构建用 bionic 的 ashmem 替代路径,交叉编译(aarch64-linux-gnu-gcc + 静态链接)走的是 glibc 路径撞上了这个坑。解法是给config-host.h手工加#define CONFIG_NO_SHM 1重编,fio 退回 malloc 分配线程段,单文件测试场景功能不受影响。

adb push的路径以/开头时,Git Bash 会把/data/local/tmp转成 Windows 路径导致 push 失败,换 PowerShell 调用或加MSYS_NO_PATHCONV=1。

Android 的 toybox dd 不支持oflag=direct,主机 Linux 和 IQ-9075 上的 dd 命令不能原样照搬,direct IO 测试统一用 fio。

SM8850(6.17)和 IQ-9075(6.8)都有。写自动化采集脚本时这个路径要按内核版本做存在性检查。

6. 参数汇总

项IQ-9075 EVKSM8850
盘体 / 规范Micron 128GB / UFS 3.1Micron 512GB / UFS 4.0
链路(负载中)HS_GEAR4 x2HS_GEAR5 x2
1M 顺序读 / 写1695 / 460 MiB/s4062 / 3577 MiB/s
4K 随机读(fs 层)146k IOPS89.1k IOPS
4K 随机写(fs 层)99.2k IOPS18.7k IOPS
IO 路径ext4 裸分区f2fs + dm 加密

IQ-9075 的 4K 随机领先是 ext4 裸路径的红利,SM8850 的顺序带宽领先是 UFS 4.0 的实力。要评估控制器和盘体本身,两台设备需要走同一条 IO 路径:要么都裸设备(写有分区风险),要么都文件系统层(接受软件栈噪声),不能混着评估。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/9 10:17:45

AI+网络安全:AI如何在1秒内拦截10万次攻击

一、凌晨2点的AI自动响应 2026年8月,深圳。某科技公司安全运营中心(SOC)。 安全分析师老刘在值夜班。凌晨2:07,告警系统弹出一条消息。 不是普通告警。AI安全平台"天眼"标注为"高度可疑":服务器Sr…

作者头像 李华
网站建设 2026/10/9 10:17:39

bhSDR Studio/Matlab入门指南(七):单波束图传收发实验界面全解析

bhSDR小助理:各位工程师、技术爱好者们,大家好!欢迎来到bhSDR Studio/Matlab系列教程的第七章。在上一章中,bhSDR小助理带您完成了8通道OFDM图传收发实验,搞定了5G核心技术的高速多通道通信!这一期&#xf…

作者头像 李华
网站建设 2026/10/9 10:15:32

道路桥梁一张图监管平台的核心功能与应用场景

随着我国公路与城市道路网络的不断完善,道路桥梁设施规模持续扩大,传统的“人盯路、纸记录”式管理方式在实时感知、协同处置和数据共享等方面日益吃力,巡检养护不到位、风险发现不及时等问题时有出现。近年来,借助物联网、GIS、大…

作者头像 李华