记录一下以前操作Linux服务器时关于CPU操作指令的相关知识点,其实这些在实际生产中很少用到,使用时忘记后翻看回忆一下资料即可,这边记录了常用指令,有助于快速找到对自己有用的内容。
sysstat 工具包的命令 mpstat+pidstat
全局命令——mpstat
-
命令说明:全称 Multiprocessor Statistics,多核 CPU 性能分析程序,实时查看每个 CPU 的性能指标和全部 CPU 的平均性能指标
-
使用场景:当系统变慢,CPU平均负载增大时,判断是CPU的使用率增大,还是IO压力增大的情况导致
-
命令格式:
mpstat [-P {|ALL}] [ <时间间隔> ] [ <次数> ]
比如mpstat -P ALL 2 3
每隔2秒出一个报告数据,共出具3次 -
命令参数说明:
参数 说明 -P 指定监控哪个CPU,范围是[ 0 ~ (N-1)], ALL表示监控所有CPU都监控 internal 两次采样的间隔时间 count 总采样次数
-
显示信息(参数很多,记住二八原则,工作中80%都是在用那20%的命令)
mpstat -P all
字段 | 说明 |
---|---|
CPU | 全部CPU 和 某个CPU,从0开始。 下面每一行项加起来就是100% |
%usr | 用户态所使用 CPU时间的百分比,CPU使用率 |
%nice | nice值为负进程的CPU时间,即使用 nice 命令对进程进行降级时 CPU 的百分比 |
%sys | 内核态所使用 CPU时间的百分比,CPU使用率 |
%iowait | CPU 在等待 I/O 操作完成所消耗的时间,高表示可能 I/O 存在瓶颈 |
%irq | 用于硬中断的 CPU 百分比 |
%soft | 用于软中断的 CPU 百分比 |
%steal | 虚拟机强制CPU 等待的时间百分比(基本很少关注) |
%guest | 虚拟机占用CPU时间的百分比(基本很少关注) |
%gnice | CPU运行niced guest虚拟机所花费的时间百分比(基本很少关注) |
%idle | CPU空闲且系统没有未完成的磁盘I/O请求的时间百分比; CPU使用率低,iowait高,idle低的话可能是等待IO |
局部命令——pidstat
-
实时查看进程的 CPU、内存、I/O 、上下文切换等指标
-
格式
pidstat [ 选项 ] [ <时间间隔> ] [ <次数> ]
比如pidstat -u 2 3
每隔2秒出一个报告数据,一共出具3次
-
-
输出排序 pidstat -u | sort -k 8 -r
-
sort 排序
-
指定排序用哪一列,下面的例子中是第8列:%CPU
-
-r : 倒序
-
-
命名参数说明
参数 | 说明 |
---|---|
-u | 默认的参数,显示各个进程的cpu使用统计,监控cpu,pidstat 和 pidstat -u -p ALL 是等效的 |
-r | 显示各个进程的内存使用统计,监控内存 |
-d | 显示各个进程的IO使用情况,监控硬盘 |
-p | 指定进程号,比如 pidstat -p 5 |
-w | 显示每个进程的上下文切换情况 |
-t | 显示选择任务的线程的统计信息外的额外信息 |
pidstat
字段 | 说明 |
---|---|
PID | 进程ID |
%usr | 进程在用户态所使用 CPU时间的百分比,CPU使用率 |
%system | 进程在内核态所使用 CPU时间的百分比,CPU使用率 |
%guest | 进程在虚拟机占用cpu的百分比(基本很少关注) |
%wait | 进程等待cpu 的时间百分比, 进程处于就绪队列中的状态等待CPU调度运行的百分比【新版才有】 |
%CPU | 进程占用cpu的百分比,和top命令一样 等于 用户态CPU+内核态 CPU,如果要区分cpu哪个态多则用pidstat,不包括 %wait |
CPU | 处理进程的cpu编号 |
Command | 当前进程对应的命令 |