cpu性能分析
mpstat -P ALL 5 #多核cpu性能分析工具
pidstat -u 5 1 #进程性能分析工具,cpu、内存、I/O,上下文切换
系统cpu升高--程上下文切换、线程上下文切换和中断上下文切换
自愿上下文切换变多了,说明进程都在等待资源,有可能发生了 I/O 等其他问题;
非自愿上下文切换变多了,说明进程都在被强制调度,也就是都在争抢 CPU,说明 CPU 的确成了瓶颈;
中断次数变多了,说明 CPU 被中断处理程序占用,还需要通过查看 /proc/interrupts 文件来分析具体的中断类型。
vmstat 5 #cs、in、r、b
pidstat -w 5 #cswch、nvcswch
pidstat -w -u 1 #-w参数表示输出进程切换指标,而-u参数则表示输出CPU使用指标
pidstat -wt 1 #-wt 参数表示输出线程的上下文切换指标$ pidstat -wt 1
cat /proc/interrupts #分析中断
1、某个应用cpu使用率高
perf top
perf record #记录性能事件
perf report # 展示类似于perf top的报告
perf top -g -p 21515 #-g开启调用关系分析,-p指进程号
2、系统cpu使用率高 #进程用户态和内核态的运行,还包括中断处理、等待 I/O 以及内核线程等
pstree #树状形式显示所有进程之间的关系:
3、iowait 升高
dstat 1 10 #观察系统的 CPU、磁盘 I/O、网络以及内存使用情况
pidstat -d -p 4344 1 3 # -d 展示 I/O 统计数据,-p 指定进程号,间隔 1 秒输出 3 组数据
pidstat -d 1 20 #观察所有进程的 I/O 使用情况
strace -p 6082 #跟踪进程系统调用,查看磁盘访问函数
4、僵尸进程--找出父进程
pstree -aps 3084 #-a 表示输出命令行选项 p表PID s表示指定进程的父进程
5、中断处理程序
上半部对应--硬中断 /proc/interrupts
下半部对应--软中断 /proc/softirqs 软中断包括网络收发、定时、调度、RCU 锁等各种类型
当软中断事件的频率过高时,内核线程也会因为 CPU 使用率过高而导致软中断处理不及时,进而引发网络收发延迟、调度缓慢等性能问题。
sar 是一个系统活动报告工具,既可以实时查看系统的当前活动,又可以配置保存和报告历史统计数据。
tcpdump 是一个常用的网络抓包工具,常用来分析各种网络问题。
watch -d cat /proc/softirqs #发现, TIMER(定时中断)、NET_RX(网络接收)、SCHED(内核调度)、RCU(RCU 锁)等这几个软中断都在不停变化。
sar -n DEV 1 #-n DEV 表示显示网络收发的报告,间隔1秒输出一组数据 查看系统的网路收发情况
# -i eth0 只抓取eth0网卡,-n不解析协议名和主机名# tcp port 80表示只抓取tcp协议并且端口号为80的网络帧
tcpdump -i eth0 -n tcp port 80

image.png
第一个维度,从 CPU 的性能指标出发

image.png
第二个维度,从工具出发

image.png
迅速分析 CPU 的性能瓶颈

image.png