记录一下 性能分析问题

问题: 系统的内核负载偏高

 可以看到 user 以及si hi 也就是 用户态 软中断  硬件中断很低,只是 sy 偏高。

同时cpu 负载1-5-15分钟为:8.77    9.15  9.55  

首先面对cpu 高问题我们有什么工具 需要查看什么指标:https://www.cnblogs.com/codestack/p/12570863.html  请参考这篇文档

平均负载

uptimetop

uptime 简单展示最近一段时间的平均负载top 展示更多指标

CPU 使用率

vmstat mpstat top sar /proc/stat

top、vmstat、mpstat 只可以动态查看当前,而 sar 可以查看历史/proc/stat 是其他性能工具的数据来源

进程 CPU 使用率

top pidstatps htop atop

top、ps 可以以排序方式展示进程 CPU、pidstat 不可排序展示htop、atop 则以不同颜色展示各类数据更直观

系统上下文切换

vmstat

展示上下文切换此时、运行状态、不可中断状态进程数量

进程上下文切换

pidstat

展示项很多,包括进程上下文切换信息

软中断

top /proc/softirqsmpstat

top 可查看软中断 CPU 使用率/proc/softirqs 和 mpstat 则可以查看每个 CPU 上的累计信息

硬中断

vmstat/proc/interrupts

vmstat 查看总中断次数信息/proc/interrupts 查看各种中断在每个 CPU 核心上的累计信息

 可以看到 进程上下文切换和平时一样。中断也是还行

此时就猜测 系统调用了;使用perf 工具查看:

perf record -g -a sleep 10

 可知  很多是 ethtool 问题导致。

通过 while  true; do ps -elf  ; sleep 0.5; done 

可以找出 调用ethtool 的父进程。。。

一般来说:

 系统CPU => vmstat 上下文切换次数 => pidstat 非自愿上下文切换次数 => 各类进程分析工具(perf strace ps execsnoop pstack)
 用户CPU => pidstat 用户CPU => 一般是CPU计算型任务
僵尸进程 =>  各类进程分析工具(perf strace ps execsnoop pstack)
 平均负载 => vmstat 运行状态进程数 =>  pidstat 用户CPU => 各类进程分析工具(perf strace ps execsnoop pstack)
 等待IO CPU => vmstat 不可中断状态进程数  => IO分析工具(dstat、sar -d)
硬中断 => vmstat 中断次数 => 查看具体中断类型(/proc/interrupts)
软中断 => 查看具体中断类型(/proc/softirqs) => 网络分析工具(sar -n、tcpdump) 或者 SCHED(pidstat 非自愿上下文切换)

问题二:

top 结果:

 sy si 都高:

vmstat 的结果是:

 对user 高的用户进程 经行strace

strace -c -f -p  xxx

 结果发现 select 有点高。 很奇怪 怎么select 和epoll 一起用

perf top  结果:

万恶的大锁

原文地址:https://www.cnblogs.com/codestack/p/13579448.html