0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

RK3588 PCIe 压测:从崩溃到排障的全流程解析

jf_44130326 来源:Linux1024 作者:Linux1024 2026-02-06 07:11 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

RK3588平台上进行PCIe设备(如NVMe SSD)压测时,不少开发者遇到过这样的噩梦:高负载下系统突然失去响应,日志里满是异常信息,甚至直接崩溃重启。今天我们就结合关键日志和代码,拆解问题根源,分享一套可复用的排障思路。

一、问题现场:从日志看崩溃链条

我们先看两张关键日志截图:

wKgZO2mFJHWAZHgjAAA5hUyD6-Y554.pngwKgZO2mFJHaABn5dAAXekNVkxsk116.jpg

NVMe驱动层的超时风暴

[2026-01-08 1623.487] nvme nvme0: I/O 124 QID 4timeout, aborting[2026-01-08 1623.487] nvme nvme0: I/O 125 QID 4timeout, aborting[2026-01-08 1623.487] nvme nvme0: I/O 127 QID 4timeout, aborting[2026-01-08 1623.487] nvme nvme0: I/O 128 QID 4timeout, aborting[2026-01-08 1624.483] nvme nvme0: I/O 20 QID 0timeout, reset controller

文件系统的自我保护

[2026-01-08 1613.852] systemd-journald[258]:Failed to writeentry(21items,734bytes), ignoring: Read-onlyfilesystem

从日志可以清晰看到事件链条:

1.NVMe I/O超时:驱动层频繁触发I/O请求超时,尝试abort操作。

2.控制器重置:超时后驱动尝试重置NVMe控制器,但问题持续。

3.只读文件系统:内核为保护数据,强制将文件系统设为只读,导致日志服务无法写入,系统陷入瘫痪。

二、根因剖析:三层拆解崩溃本质

要理解为什么超时会导致系统崩溃,需要从硬件能力、驱动配置、内核机制三个层面拆解:

1.硬件层面:RK3588PCIe性能瓶颈

RK3588作为边缘计算平台,其PCIe控制器的带宽和并发处理能力有限。高负载压测下,PCIe总线吞吐量和延迟急剧上升,导致NVMe设备I/O请求排队时间过长,无法在预设时间内完成。

2.驱动层面:默认超时参数过于激进

从图三的内核代码可以看到,NVMe驱动的默认超时参数是为通用PC平台设计的:

unsignedintadmin_timeout =60; // 管理命令超时60秒unsignedintnvme_io_timeout =30;// I/O命令超时30秒

对于RK3588这类嵌入式平台,30秒的I/O超时时间在高负载下显得过于苛刻,极易触发超时机制。

3.内核机制:数据保护的双刃剑

NVMe驱动频繁触发超时和重置时,内核会判定存储设备不可靠,为避免数据损坏,自动执行mount -o remount,ro /操作,将根文件系统设为只读。这一机制虽保护了数据,但直接导致系统无法正常运行,表现为崩溃

三、对症下药:超时参数调优方案

核心解决思路是延长NVMe驱动的超时时间,让I/O请求有足够时间完成,避免触发保护机制。

1.内核代码修改

wKgZO2mFJHaALgpsAABhWCnNMHo423.png

直接修改NVMe驱动的超时参数定义,将admin_timeout60秒增至120秒,nvme_io_timeout30秒增至120秒:

// 修改前unsignedintadmin_timeout =60;unsignedintnvme_io_timeout =30;// 修改后unsignedintadmin_timeout =120;unsignedintnvme_io_timeout =120;

修改后重新编译内核或NVMe驱动模块,使参数生效。

2.调优建议

渐进式调整:先将超时参数翻倍(30→60→120),观察压测表现,避免一次性设置过大隐藏问题。

适配硬件能力:结合RK3588PCIe带宽和NVMe设备性能,找到最适合的超时阈值,而非盲目增大参数。

四、排障心法:嵌入式压测的通用技巧

RK3588这类嵌入式平台上进行性能压测,掌握以下技巧可大幅提升排障效率:

1.日志优先原则:始终从系统日志(dmesgjournalctl)入手,定位关键错误信息,避免盲目排查硬件。

2.分层排查法

驱动层:检查设备驱动日志(如NVMePCIe),确认超时、错误码。

总线层:用lspci -vvv检查PCIe设备带宽、链路状态,确认是否降速或错误。

硬件层:检查设备供电、散热,避免因过热导致性能下降。

3.渐进式压测:从低负载到高负载逐步压测,记录系统表现,找到触发问题的阈值,针对性优化。

4.数据保护前置:压测前做好数据备份,可临时关闭文件系统只读保护(mount -o remount,rw /),但这只是临时手段,根本解决需处理超时问题。

五、总结:嵌入式性能调优的慢思考

RK3588 PCIe压测导致系统崩溃的问题,本质是通用驱动配置与嵌入式平台硬件能力不匹配的典型案例。默认的NVMe超时参数是为PC平台设计的,直接套用到嵌入式平台,就会在高负载下触发保护机制。

解决这类问题的核心,不是硬扛硬件性能,而是通过驱动参数调优适配平台能力,同时遵循日志分析分层定位参数调优渐进验证的排障流程,才能高效、稳妥地解决问题。


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PCIe
    +关注

    关注

    16

    文章

    1474

    浏览量

    88896
  • RK3588
    +关注

    关注

    8

    文章

    586

    浏览量

    7542
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    麒麟适配 | 眺望电子上线 “RK3588+麒麟” 全功能主板

    引言:在国产化加速的工业新时代,需要从核心芯片操作系统实现栈自主可控。眺望电子发布上线RK3588麒麟全功能主板,集高性能、国产化、工业级于一体,以安全可靠的国产算力底座,赋能边缘计算与万物互联
    的头像 发表于 04-17 17:03 2279次阅读
    麒麟适配 | 眺望电子上线 “<b class='flag-5'>RK3588</b>+麒麟” 全功能主板

    RK3588操控终端

    RK3588操控终端全国产化无人装备手持操控终端,搭载工业级瑞芯微RK3588J芯片,适配麒麟等自主操作系统,硬件核心到软件应用实现 100% 国产化,彻底摆脱外部技术依赖。设备标配16G
    发表于 02-28 09:42

    RK3588平台USB摄像头调试实战:报错到稳定运行

    在嵌入式开发中,RK3588 凭借强劲的算力常被用于边缘计算、工业视觉等场景,而 USB 摄像头作为常见外设,调试过程中难免遇到各类 “卡壳” 问题。最近我们在 RK3588 上调试 USB 摄像头
    的头像 发表于 02-04 16:13 655次阅读

    保姆级教程!RK3588 Linux6.1 固件签名完整实现方案(不含rootfs)

    内核)上实操固件签名时,踩了不少官方文档的坑,经过反复调试终于打通流程。今天就把这份实战经验整理成保姆级教程,配置问题排查,一步步带大家搞定
    的头像 发表于 01-14 17:21 2250次阅读
    保姆级教程!<b class='flag-5'>RK3588</b> Linux6.1 固件签名完整实现方案(不含rootfs)

    实战复盘:RK3588 SPI+PCIe3x4方案启动修复,节点配置驱动适配解析

          在 RK3588 嵌入式项目中, “ 接口配置不匹配 ” 是高频踩坑点 —— 近期 基于 linux6.1 内核 调试 SPI 闪存 +PCIe3x4 外设 方案时,就遇到了 “eMMC
    的头像 发表于 01-08 10:24 704次阅读
    实战复盘:<b class='flag-5'>RK3588</b> SPI+<b class='flag-5'>PCIe</b>3x4方案启动修复,<b class='flag-5'>从</b>节点配置<b class='flag-5'>到</b>驱动适配<b class='flag-5'>全</b><b class='flag-5'>解析</b>

    迅为RK3588开发环境搭建“三步曲”,一轻松上手!

    迅为RK3588开发环境搭建“三步曲”,一轻松上手!
    的头像 发表于 12-01 11:51 1316次阅读
    迅为<b class='flag-5'>RK3588</b>开发环境搭建“三步曲”,<b class='flag-5'>从</b>零<b class='flag-5'>到</b>一轻松上手!

    一文搞懂 RK3588 PCIe硬件资源拆分配置 + 避坑指南(含脑图)

    资源解析、 3  大拆分方案实战、关键配置步骤及避坑要点,附带可视化脑图,助力开发者快速落地  PCIe  相关项目。       一、 RK3588 PCIe  核心硬件资源   1
    的头像 发表于 11-20 18:18 4698次阅读
    一文搞懂 <b class='flag-5'>RK3588</b> <b class='flag-5'>PCIe</b>:<b class='flag-5'>从</b>硬件资源<b class='flag-5'>到</b>拆分配置 + 避坑指南(含脑图)

    开发者必备,10 分钟搞定 RK3588 PCIE 拆分!

    前言:在嵌入式开发中,PCIe接口的灵活配置直接影响设备扩展能力与性能发挥。RK3588作为旗舰芯片,其PCIe拆分机制更是让硬件设计与软件调试拥有了更多可能性。今天这篇技术笔记,就带大家快速吃透
    的头像 发表于 11-13 08:31 1931次阅读
    开发者必备,10 分钟搞定 <b class='flag-5'>RK3588</b> <b class='flag-5'>PCIE</b> 拆分!

    基于瑞芯微 RK3588 的 ARM 与 FPGA 交互通信实战指南

    本文围绕创龙科技研发的 TL3588-EVM 评估板,详解瑞芯微 RK3588 与 FPGA 基于 PCIe 总线的通信案例,包括 DMA 与非 DMA 两种方式。涵盖案例功能、测试流程
    的头像 发表于 11-04 16:09 757次阅读
    基于瑞芯微 <b class='flag-5'>RK3588</b> 的 ARM 与 FPGA 交互通信实战指南

    RK3588 PCIe设备识别失败?一招避坑“非法Class”陷阱

    前言:在RK3588平台开发过程中,你是否遇到过这样的窘境:明明PCIe总线上挂好了网卡模块,lspci能识别到芯片,可驱动就是加载失败,排查半天找不到关键问题?别慌!本文将带你一步步解决这个棘手
    的头像 发表于 08-29 08:32 2061次阅读
    <b class='flag-5'>RK3588</b> <b class='flag-5'>PCIe</b>设备识别失败?一招避坑“非法Class”陷阱

    RK3588数据手册

    RK3588的资料
    发表于 08-01 16:08 54次下载

    RK这2款旗舰芯片RK3588 PK RK3576,谁是最优选

    23mm,球间距为 0.55mm。两者封装形式不同,尺寸和球间距也有所差异,这可能影响芯片在电路板上的布局和焊接工艺,以及散热等性能。(二)总结RK3588RK3576 在多个方面都存在差异
    发表于 07-10 18:24

    RK3576 vs RK3588:为何越来越多的开发者转向RK3576?

    刷新算法:优化墨水屏残影问题,阅读体验更佳。 (2)更广泛的市场适应性 中高端主流定位:比 RK3588 更亲民,比低端芯片性能更强。 丰富接口支持:USB 3.0、PCIe 2.0、MIPI-CSI
    发表于 05-30 08:46

    RK3588参数与主要特性 RK3588数据手册解读

    RK3588参数与主要特性 RK3588数据手册解读
    的头像 发表于 05-19 18:34 1.5w次阅读
    <b class='flag-5'>RK3588</b>参数与主要特性  <b class='flag-5'>RK3588</b>数据手册解读

    RK3588S和RK3588S2差异说明

    RK3588S2 较 RK3588S少了一组 MIPI D/C-PHY CSI_RX PORT0,新增一组 MIPI DPHY CSI_RX PORT1,同时接口位置除 MIPI D/C-PHY
    的头像 发表于 05-13 14:23 3176次阅读
    <b class='flag-5'>RK3588</b>S和<b class='flag-5'>RK3588</b>S2差异说明