收起左侧

CPU/GPU 占用高,如何排查

0
回复
27
查看
[ 复制链接 ]

323

主题

1万

回帖

0

牛值

管理员

fnOS1.0上线纪念勋章

CPU / GPU 占用高时,重点不是先判断“是不是异常”,而是先确认“是谁在占用”。常见的相册处理、影视扫描 / 转码、Docker / 虚拟机、下载同步、备份校验等任务,都可能带来明显占用。

先区分“短时间高占用”和“空闲很久仍持续高占用”。如果刚导入大量照片、刚建立媒体库、刚启动容器或刚开始同步,高占用更像后台任务在处理;如果没有明显任务但长时间不回落,就需要继续定位具体进程。

GPU 占用要结合任务类型判断。GPU 0% 不一定代表硬件加速没有生效,GPU 99% 也不一定直接等于故障;关键是当前任务是否真的需要硬件解码、转码或 AI 计算,以及驱动识别、应用设置和格式条件是否满足。

处理顺序建议是:先看资源监控能不能对应到任务,再按相册、影视、Docker / 虚拟机、下载同步等场景排查;仍然找不到来源时,再通过 SSH 查看进程,并把截图和命令输出一起反馈。


先确认这几项

先看项 怎么判断
持续时间 是刚打开应用、刚导入数据后的短时间升高,还是空闲很久仍持续不降。
对应任务 资源监控里是否能看到具体应用、进程或任务占用,例如相册、影视、Docker、虚拟机、下载、同步、备份。
相册场景 是否刚导入大量照片 / 视频,是否正在生成缩略图、识别人物 / 场景、索引相册内容。
影视场景 是否正在刮削、扫描媒体库、播放需要转码的视频,或开启了代理播放 / 硬件加速相关设置。
Docker / 虚拟机 是否有容器、虚拟机、数据库、下载器、媒体服务、AI 服务在后台运行。
下载 / 同步 / 备份 是否有网盘同步、BT 下载、文件复制、备份、校验、解压、索引等任务。
GPU 识别 如果关注 GPU,占用前先确认显卡 / 核显是否被系统识别,相关应用是否有硬件加速设置。
最近变化 是否刚升级系统、更新应用、换显卡 / 网卡、改 Docker 配置、导入大量数据或异常断 电。

总览页先看 CPU、GPU、内存、硬盘和网络哪一项持续偏高,再从左侧进入进程管理查看明细。


排除思路

第一步:先看是不是正常任务占用

  1. 打开 fnOS 资源监控,先看 CPU、GPU、内存、磁盘、网络哪一项在高位。
  2. 再看高占用是否能对应到某个应用或任务。能对应到任务时,优先按该任务场景判断。
  3. 如果是刚导入照片、刚扫描影视库、刚启动容器、刚开始同步,先观察任务完成后占用是否回落。
  4. 不要只看某一秒的峰值,建议连续观察一段时间,记录开始时间、持续时间和是否回落。

进程管理里重点看 CPU 占用、CPU 时间、内存等列;如果能看到明确服务名,后面反馈时把这一屏一起截图。

第二步:按场景分别排查

场景 优先确认
相册 是否正在导入大量照片 / 视频、生成缩略图、做 AI 识别或重建索引。大量素材首次整理时资源占用升高比较常见。
影视 是否正在扫描媒体库、刮削信息、播放需要转码的视频。客户端能直放时和需要转码时,占用差异会很明显。
Docker / 虚拟机 先看是否有容器或虚拟机长期占用 CPU / GPU,例如下载、数据库、媒体服务、AI 推理、编译任务。
下载同步 BT、网盘同步、备份、文件复制、解压、校验会同时拉高 CPU、磁盘和网络,不一定只表现为一个指标高。
升级后 升级后短时间可能有索引、扫描、缓存重建等后台任务。若长时间无任务仍持续高占用,再继续反馈。

相册相关任务占用时,通常能在服务列表里看到 AI、识别、缩略图等相关服务。能对应到任务时,先观察任务完成后是否回落。

影视场景先看播放信息里是否显示转码、编码 / 解码方式和是否启用 GPU;再结合 GPU 曲线判断是不是正在硬件处理。

Docker 页面先看容器健康状态和资源曲线,再进容器列表确认具体哪个容器在运行。

第三步:单独看 GPU 时,先确认调用条件

  1. 确认系统能识别到显卡或核显,相关页面能看到设备信息。
  2. 确认当前任务真的需要 GPU,例如视频硬件解码 / 转码、相册 AI 识别或其他支持 GPU 的应用。
  3. 确认应用内是否开启硬件加速,且该格式、客户端、播放方式满足硬件加速条件。
  4. 如果播放本来可以客户端直放,GPU 不动不一定是异常;如果任务不支持 GPU,也不会因为系统有显卡就自动调用。
  5. 如果 GPU 长时间 99% 且任务已经停止,记录资源监控、相关应用页面和最近操作时间线。

相册智能识别、视频转码等任务可能会触发 GPU;GPU 页面既要看曲线,也要看下方显存、Video、Render 等指标。GPU 低不一定异常,要结合当前任务是否需要 GPU 判断。

注:有部分GPU并不支持人脸识别/不支持大部分人脸识别任务,在此情况下人脸识别任务大量调用CPU执行是正常的情况。

第四步:做一个低风险对比

  1. 暂停或结束可疑的相册、影视、下载、同步、Docker / 虚拟机任务,观察占用是否回落。
  2. 如果能定位到某个应用,优先在应用内停止任务或重启该应用,不要直接删文件、删数据库或改系统目录。
  3. 如果不确定是哪项占用,先记录截图,再逐项关闭最近新增的任务做对比。
  4. 对比时一次只改一个变量,例如只暂停相册任务,或只停止某个容器,避免后续无法判断原因。
  5. 如果重启设备后短时间恢复,但过一段时间又复现,要记录复现前做了什么操作。

补充:通过 SSH 查看具体进程

如果前台资源监控只能看到整体占用,看不到具体进程,可以在已经开启 SSH 的前提下,用电脑连接设备后查看。下面这些命令主要用于定位“是谁在占用”,不要直接拿来强制结束进程。

top
  • 进入 top 后,按 P 可以按 CPU 占用排序,按 M 可以按内存占用排序,按 q 退出。
  • 重点记录占用最高的 PID、进程名、CPU / 内存占用,以及占用是否持续不降。

ps -eo pid,ppid,comm,%cpu,%mem --sort=-%cpu | head -n 15

ps -eo pid,ppid,comm,%cpu,%mem --sort=-%mem | head -n 15

如果某个 PID 持续排在前面,再用下面的命令查看这个进程的详细信息。

ps -fp 进程ID

如果看到可疑进程,先不要直接删除文件或强制结束进程。建议先截图保存 toppsdocker stats 的输出,再记录进程 ID、进程名、启动路径和是否来自 Docker 容器。正常的相册、影视转码、虚拟机、下载器、备份任务也会造成高占用,需要先区分“正常任务占用”和“异常进程持续占用”。


收藏
送赞
分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则