stress 是一个 Linux 系统压力测试工具,用作异常进程模拟平均负载升高的场景。
strees: 压测命令,–cpu cpu压测选项,-i io压测选项,-c 进程数压测选项,–timeout 执行时间
sysbench 来模拟系统多线程调度切换的情况

显示平均负载:uptime、top,显示的顺序是最近1分钟、5分钟、15分钟,从此可以看出平均负载的趋势。

sysstat 包含了常用的 Linux 性能工具,用来监控和分析系统是的性能,找出平均负载升高的根源,包括几个命令 mpstat 和 pidstat,iostat。
mpstat: 多核cpu性能分析工具,-P ALL监视所有cpu,cswch ,表示每秒自愿上下文切换的次数,nvcswch ,表示每秒非自愿上下文切换的次数。
pidstat: 进程性能分析工具,-u 显示cpu利用率
iostat:IO性能分析工具

vmstat 是一个常用的系统性能分析工具,主要用来分析系统的内存使用情况,也常用来分析 CPU 上下文切换和中断的次数。
cs(context switch)是每秒上下文切换的次数。
in(interrupt)则是每秒中断的次数。
r(Running or Runnable)是就绪队列的长度,也就是正在运行和等待 CPU 的进程数。
b(Blocked)则是处于不可中断睡眠状态的进程数。

cat /proc/interrupts查看系统中断次数
cat /proc/stat 查看系统进程整体的统计信息

perf 是 Linux 2.6.31 以后内置的性能分析工具。它以性能事件采样为基础,不仅可以分析系统的各种事件和内核性能,还可以用来分析指定应用程序的性能问题。perf top,类似于 top,它能够实时显示占用 CPU 时钟最多的函数或者指令,因此可以用来查找热点函数。perf top 虽然实时展示了系统的性能信息,但它的缺点是并不保存数据,也就无法用于离线或者后续的分析。而 perf record 则提供了保存数据的功能,保存后的数据,需要你用 perf report 解析展示。在实际使用中,我们还经常为 perf top 和 perf record 加上 -g 参数,开启调用关系的采样,方便我们根据调用链来分析性能问题。

pstree 就可以用树状形式显示所有进程之间的关系:

execsnoop 就是一个专为短时进程设计的工具。它通过 ftrace 实时监控进程的 exec() 行为,并输出短时进程的基本信息,包括进程 PID、父进程 PID、命令行参数以及执行的结果。

dstat可以同时查看 CPU 和 I/O 这两种资源的使用情况,便于对比分析

一般来说,我们首先通过uptime查看系统负载,然后使用mpstat结合pidstat来初步判断到底是cpu计算量大还是进程争抢过大或者是io过多,接着使用vmstat分析切换次数,以及切换类型,来进一步判断到底是io过多导致问题还是进程争抢激烈导致问题。