使用工具有:
top看进程的状态: R(Running), D(Disk sleep), Z(zombie), S(Interruptible sleep), I(Idle), T(stopped), t(Traced)以及 cpu 、mem、inter 等信息
vmstat:整体cpu 性能 中断次数 上下文切换次数 运行以及不可中断运行的进程数
mpstat:每个cpu使用率以及中断 irq si idle nice等 可以见 top 命令中执行1 查看各个单独cpu; steal guest gnice 涉及到虚拟机 母亲啊
pidstat -w 输出进程切换指标, -t线程 -wt 参数表示输出线程的上下文切换指标 pidstat -wt 1
- cswch: 自愿上下文切换,包括io/内存不足等请求资源的问题
- nvcswch: 非自愿,高代表CPU瓶颈
查找热点函数: perf top,record,report (-g开启调用, -p指定进程)
实例中结合pidstat和perf record -g -p xxx 查找热点函
- 硬中断
- 上半部用来快速处理中断, 主要处理和硬件相关or 时间脉冲
- /proc/interrupts
- 软中断
- 下半部用来处理上班部未完成的,通常以内核线程方式运行
- /proc/softirqs ,不同列代表: 网络收发,定时,调度,RCU锁
自愿上下文切换变多,进程都在等待资源,说明IO问题较大
非自愿上下文切换变多,进程都在被强制调度
中断变多,说明CPU被中断处理程序占用过多,需要通过/proc/interrupts来分析中断类型
一般通过watch 命令 查看输出的变化比如:
watch -d -n 1 “exec cmd”
再就是 strace 以及lsof 两大神器
strace -t -tt -c -f -p -y -yy这些参数的使用
perf stat 获取计数的“摘要”以及perf跟踪参数使用
perf 使用手册 可以参考https://www.ibm.com/developerworks/cn/linux/l-cn-perf2/
https://www.cnblogs.com/arnoldlu/p/6241297.html
execsnoop
用于短时进程设计的工具,通过ftrace实时监控进程执行exec()的行为,并输出短时进程的基本信息,包括进程的PID,父进程PID,命令行参数以及执行结果
碰到无法解释的CPU使用率情况,就可能是短时应用导致的问题
https://linuxtools-rst.readthedocs.io/zh_CN/latest/advance/03_optimization.html 工具速查