linux常用命令查看cpu
下面这套清单够你在一线排障时快速定位 CPU 相关问题,口径统一、动作简洁、可直接落地。💪
一、静态硬件信息(先看“车”再开)
| 目标 | 命令 | 关键输出 | 用途判断 | 
|---|---|---|---|
| 架构/核心/线程 | lscpu | 
Architecture、CPU(s)、Thread(s) per core、NUMA node(s) | 确认是否超线程、NUMA 拓扑是否对齐应用部署 | 
| 详细型号 | cat /proc/cpuinfo | 
model name、flags | 看指令集/虚拟化/AVX 支持 | 
| 并行度 | nproc | 
数字 | 评估线程池/并发上限 | 
解释:
lscpu汇总自/proc/cpuinfo与 sysfs,优先用它;flags可判断是否支持 AES/AVX/VT-x 等特性。
二、总体健康度(先看“天色”)
uptime
解释:看系统“负载平均值”load average(1/5/15 分钟)。经验阈值:load ≈ 合理并发上限 ≈ CPU 逻辑核数。长期高于核数,说明 CPU 或可运行队列挤压。
vmstat 1
解释:r 就绪进程队列、us 用户态、sy 内核态、wa I/O 等待、st 被宿主机偷走(虚机常见)。r 持续大于逻辑核,且 us+sy 高,CPU 硬吃紧;若 wa 高,更可能是 I/O 拖累。
三、实时 CPU 使用率(全局与按核)
mpstat -P ALL 1
解释:逐核观测。%usr/%sys/%iowait/%steal/%idle 一目了然。若个别核 100% 而其他空闲,多为单线程热点或锁竞争。
sar -u 1 5
解释:历史友好视图,便于留档。sar 属 sysstat 套件,生产主机建议安装以便留痕。
四、按进程/线程定位(从“谁在吃”到“怎么吃”)
top -H -p <PID>
解释:对单一进程按线程维度观测,找出占用最高的 TID(常用于 Java/C++ 热点线程)。
pidstat -u -r -d -t 1
解释:按进程/线程输出 CPU、内存、I/O,-t 展开线程。CPU 高但 majflt/s(缺页)高,可能内存抖动;CPU 高且 kB_rd/s 低,多为纯算力压力。
ps -Leo pid,tid,psr,pcpu,comm --sort=-pcpu | head
解释:列出最“热”的线程,以及它们被调度到的 CPU(psr),排查是否集中在少数核心。
五、热点函数与瓶颈(必要时“剥开看看”)
perf top
解释:实时采样热点符号(函数级),用户态/内核态各自吃在哪。适合现场快速嗅探;若需报表用 perf record; perf report。
提示:容器/虚机中用
--privileged或适当的 perf 权限;无符号时为“匿名占用”,需安装符号包或以-g采样调用栈。
六、NUMA/中断与调度(进阶但高价值)
numactl --hardware
解释:看 NUMA 节点与内存本地性。跨 NUMA 大量访问会导致 sys/iowait 偏高与抖动。
cat /proc/interrupts | head
解释:观察网卡/存储中断是否集中在某些 CPU 核,必要时开启 RPS/RFS 或 IRQ 亲和性,避免单核顶满。
七、判读基线(避免误报与误治)📈
| 指标 | 关注阈值 | 含义与动作 | 
|---|---|---|
| load average | > 逻辑核数且持续 | 首查就绪队列与线程热点;评估扩容/并行度 | 
| %us 高(>70%) | 算力瓶颈 | 优化算法/开启向量化/水平扩容 | 
| %sy 高(>30%) | 内核开销大 | 可能锁/上下文切换/中断密集,查 pidstat -w、/proc/interrupts | 
| %iowait 高(>20%) | I/O 拖累 | 盘/网;用 iostat -x 1、ss -s继续追 | 
| %steal 高 | 宿主机超卖 | 与云商沟通或更换宿主/规格 | 
八、三套“即用”排障脚本(复制即跑)🛠️
# 1) 快速体检:总体+按核+队列
echo '=== uptime ==='; uptime; \
echo '=== mpstat ==='; mpstat -P ALL 1 3; \
echo '=== vmstat ==='; vmstat 1 5
解释:三连击确认“是否真忙、谁在忙、忙在哪”。
# 2) 进程热点(含线程)
TARGET=<进程名或PID>; \
pgrep -f "$TARGET" | xargs -r -I{} sh -c 'echo "PID {}"; top -H -b -n1 -p {} | head -n 20'
解释:快速获取目标进程下最热线程,便于下一步 perf。