文档首页> 云计算> linux常用命令查看cpu

linux常用命令查看cpu

发布时间:2025-11-01 00:13       

下面这套清单够你在一线排障时快速定位 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 1ss -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