理解htop核心使用率与运行任务数显示不一致的问题
该现象的核心成因如下:
- htop的默认任务统计仅展示处于Running状态的活跃任务,大量执行周期极短、唤醒后立刻进入休眠态的轻量任务(包括用户态线程、内核线程),在htop采样的瞬间没有处于运行队列中,不会被计入展示的任务数,但实际执行时会消耗核心算力。
- htop默认折叠显示进程而非展开所有线程,哪怕你仅看到3个进程条目,单个进程可能后台创建了数十个轻量级工作线程。你可以按
H切换显示所有用户线程、按K切换显示所有内核线程,即可看到全部正在被调度的执行单元。 - Linux内核默认采用多核心负载均衡调度策略,为了避免单核心积热、同时优化缓存命中率,短周期任务会被内核动态调度到不同的空闲核心上执行,即使总计算量很小,也会出现多个核心均存在低使用率的情况,而非所有任务固定在少数核心上运行。
- 系统后台的内核常驻任务(包括文件系统回写、网络协议栈处理、硬件中断调度等)默认会分散到多个核心上执行,这类任务通常单核心占比极低,但会产生分散的核心使用率。

内容的提问来源于stack exchange,提问作者Joséph Flames
相关产品推荐
相关产品推荐

