FANYI · ENGINEER INTERVIEW / 嵌入式Linux
嵌入式Linux面试高频:系统负载load average、CPU利用率、运行队列、不可中断睡眠、top/htop性能分析与定位方法。
CPU使用率表示处理器在一个统计窗口内忙于各类任务的时间比例;Linux load average反映一段时间内可运行任务与不可中断睡眠任务的平均数量。两者单位和意义不同,不能简单认为load=4就是CPU占用400%。
01先区分两个常被混淆的指标
面试官常给出一个现象:“4核系统load average为8,CPU只占40%,为什么还很卡?”应先回答负载不等于CPU利用率。高负载可能来自大量等待运行的任务,也可能由不可中断的I/O等待等因素贡献,不能仅凭load推断CPU计算瓶颈。
01先确认逻辑CPU数量、系统是否运行在容器或受配额限制环境。
02通过uptime或top查看1、5、15分钟load average的趋势,不只看单个数。
03查看各核CPU的user/system/idle/iowait等时间比例以及运行队列。
04通过top -H、ps -eo pid,stat,comm,wchan:32等定位线程状态与等待位置。
05对可疑进程继续检查I/O、锁竞争、内存压力、软中断或设备超时,而不是直接调高线程优先级。

02如何解释两个典型场景
场景A:多核CPU全部忙且可运行队列增长,通常应考虑计算饱和、锁竞争与线程调度。场景B:CPU空闲比例较高但load也高,需检查D状态任务、存储设备、网络文件系统或驱动等待。某些嵌入式平台的CPU频率调节、热降频与内核版本差异也会影响观测。
03面试参考回答
“我会先用top确认CPU是否真正忙,再看load average和进程状态分布。如果CPU不满却负载高,就重点查D状态、I/O等待、设备延迟;如果所有核持续繁忙,再查热点线程与算法或锁竞争。最后用可复现的数据验证修复前后差异。”
04延伸追问
问:load average很低就说明系统体验好吗?答:不一定。交互线程可能被单个高优先级任务阻塞,或者存在瞬时尖峰、锁等待与设备长尾延迟,平均值可能掩盖问题。

扫码关注





























