# 车机系统 CPU / 内存监控问题报告 **日期**: 2026-09-05 **设备**: T9999916 · Android 10 · 6核(600%) · RAM 6.1G + swap 2.4G **监控窗口**: 10:10 – 11:07(约 57 分钟,10 秒采样,持续报文压测中) **监控方式**: `top` 10s 轮询 + `dumpsys meminfo` + 线程级 `top -H` + `/proc` 快照 --- ## 结论总览 | 等级 | 进程 | 问题 | 证据强度 | |---|---|---|---| | 🔴 P0 | `com.txzing.voiceassistant` (PID 4733) | **Native 层内存泄漏 + 持续高 CPU** | 确凿 | | 🟡 P1 | `com.yaxon.fota` (PID 5037) | 常驻高 CPU(升级服务压测下异常) | 高 | | 🟡 P2 | `com.yaxon.dms` (PID 5056) | CPU 波动大(可能为正常视觉推理负载) | 中 | | ⚪ 观察 | system_server / systemui / surfaceflinger / logd / logcollector | 二级负载,随报文流量波动 | 信息 | --- ## 🔴 P0: com.txzing.voiceassistant — Native 内存泄漏(核心发现) ### 内存增长曲线(RSS) - 10:10 起始 ~562MB → 10:45 ~730MB → 11:00 ~770MB → **11:07 停止监控时 754MB(峰值 793MB)** - **约 57 分钟增长 ~200MB(+35%)**,锯齿形单调上行,无平台期,无回落,未观察到 GC 释放 - 全局 MemAvailable 同步从 ~1.98G 降至 ~1.70–1.77G,与该进程泄漏吻合 ### 泄漏定位在 Native 层(非 Java) 停止监控前最终 `dumpsys meminfo` 快照: ``` Pss Private Heap Total Dirty Alloc Native Heap 378885 378784 378358 ← 泄漏主体 Dalvik Heap 113174 113112 100795 TOTAL PSS: 704888 (Views: 9837, ViewRootImpl: 29) ``` - **Native Heap: 378MB**(Heap Alloc 378.4MB / Size 386MB,已接近上限) - Java Heap: 仅 113MB — 若是 Java 泄漏 GC/lmkd 可回收,Native 才解释 RSS 单调涨 - Views: **9837 个 / ViewRootImpl: 29**(UI 对象也在累积,但量级远小于 native heap) ### CPU 与热点线程(共 104 线程) ``` TID 4942 MDS_SERVER R 94.5% 累计 57:31.58 ← 热点 TID 5018 RenderThread S 2.7% 累计 3:36.31 TID 4962 engine_proc S 2.7% 累计 1:21.77 ``` - 进程 CPU 常驻 90–140%,峰值 193% - **热点线程 TID 4942 = `MDS_SERVER`:单线程 94.5%,57 分钟内累计 57 分 31 秒 CPU 时间** —— 几乎吃满一个核,处于报文/流处理路径;内存与 CPU 异常同源 ### 判断 MDS_SERVER(native 报文/数据服务线程)存在分配未释放(缓冲区/会话对象累积),同时该路径处理消耗持续 CPU。按当前 ~3.5MB/min 速率,连续运行数小时将逼近 Native Heap 上限并触发 OOM/崩溃。 ### 建议动作 1. `debuggerd -j 4733` 抓 MDS_SERVER 调用栈,确认其在忙什么系统调用/库 2. 对比"停止发报文"前后 RSS 斜率,闭环验证报文触发 3. native 内存定位:`adb shell setprop wrap.com.txzing.voiceassistant "LIBC_MALLOC_DEBUG=1"` 后复测 4. 交 txzing 语音助手团队:重点审 MDS_SERVER 线程的报文缓冲生命周期 --- ## 🟡 P1: com.yaxon.fota — 常驻高 CPU - 全程 40–90% CPU(峰值 100%),RSS 稳定 ~141MB(无内存问题) - 升级服务在报文压测下持续高 CPU 不正常——怀疑频繁解析/重试报文或轮询过密。建议查其日志与轮询策略 ## 🟡 P2: com.yaxon.dms - CPU 7–91% 波动,RSS 稳定 ~158MB。若 DMS 在做视觉推理属正常负载,峰值偏高,建议确认 --- ## ⚪ 二级负载(未见泄漏,供参考) | 进程 | CPU 范围 | 备注 | |---|---|---| | system_server | 20–91% 突发 | 随报文/窗口活动波动 | | com.android.systemui | 17–64% | 正常偏高 | | surfaceflinger | 20–47% | 渲染负载 | | logd | 峰值 77% | 日志量随报文增大 | | logcollector | 突发 116% | 周期性日志收集 | | com.yaxon.datacenter_service | 14–57% | 疑似报文接收方,CPU 合理 | --- ## 附录:关键证据命令(可复现) ```bash adb shell dumpsys meminfo com.txzing.voiceassistant # Native 378MB vs Java 113MB adb shell top -H -b -n 1 -q -p 4733 # MDS_SERVER 94.5% / 57m31s adb shell cat /proc/4733/task/4942/comm # → MDS_SERVER adb shell ls /proc/4733/task | wc -l # → 104 线程 adb shell dumpsys meminfo -c # 全进程 PSS 排名 ``` ### 全进程 PSS Top(11:07 快照) | 进程 | PID | PSS (KB) | |---|---|---| | com.txzing.voiceassistant | 4733 | 693,609 | | system | 3288 | 120,731 | | com.yaxon.dms | 5056 | 90,670 | | com.yaxon.music | 4806 | 53,318 | | com.yaxon.factory | 5074 | 38,285 | | com.yaxon.voice | 4677 | 36,104 | | com.yaxon.logcat | 5031 | 32,314 | | com.yaxon.bluetooth | 4721 | 33,078 |