目标:寻找平均负载升高的原因
现在大多数CPU有超线程能力,在计算和评估平均负载的时候,CPU的核数是指物理核数,还是超线程功能的逻辑核数?
关于平均负载多少合理中,理想情况下等于cpu核数的描述,这里的cpu核数值得是逻辑核数
演示环境介绍:
操作系统:ubuntu18.04
机器配置:4 CPU,4GB 内存。
预先安装 stress 和 sysstat 包,如 apt install stress sysstat。
工具介绍
在这里,我先简单介绍一下 stress 和 sysstat。
压力测试工具stress
stress 是一个 Linux 系统压力测试工具,这里我们用作异常进程模拟平均负载升高的场
景。
性能分析工具mpstat和pidstat
而 sysstat 包含了常用的 Linux 性能工具,用来监控和分析系统的性能。我们的案例会用到
这个包的两个命令 mpstat 和 pidstat。
mpstat 是一个常用的多核 CPU 性能分析工具,用来实时**查看每个 CPU 的性能指标,以及所有 CPU 的平均指标。**
pidstat 是一个常用的**进程性能分析工具**,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标。
场景一:CPU 密集型进程
在第一个终端运行 stress 命令,模拟一个 CPU 使用率 100% 的场景
$ stress --cpu 1 --timeout 600
在第二个终端运行 uptime 查看平均负载的变化情况:
#-d 参数表示高亮显示变化的区域
$ watch -d uptime
在第三个终端运行 mpstat 查看 CPU 使用率的变化情况:
-P ALL 表示监控所有 CPU,后面数字 5 表示间隔 5 秒后输出一组数据
$ mpstat -P ALL 5
那么,到底是哪个进程导致了 CPU 使用率为 100% 呢?你可以使用 pidstat 来查询:
间隔 5 秒后输出一组数据
$ pidstat -u 5 1
场景二:I/O密集型进程
运行 stress 命令,但这次模拟 I/O 压力,即不停地执行 sync
stress -i 1 --timeout 600
场景三:大量进程的场景
当系统中运行进程超出 CPU 运行能力时,就会出现等待 CPU 的进程。
使用 stress,但这次模拟的是 8 个进程:
stress -c 8 --timeout 600
htop工具
用htop看负载,因为它更直接(在F2配置中勾选所有开关项,打开颜色区分功
能),不同的负载会用不同的颜色标识。比如cpu密集型的应用,它的负载颜色是绿色偏
高,iowait的操作,它的负载颜色是红色偏高等等,根据这些指标再用htop的sort就很容
易定位到有问题的进程。
htop是一个功能强大且用户友好的系统进程监控工具,它是传统top命令的升级版。
以下是一些htop的主要特点和优势:
实时监控:它可以实时显示系统的资源使用情况,包括CPU、内存、磁盘IO和网络等信息。
用户界面:htop提供了一个彩色的界面,以直观的方式展示信息,使得查看和管理进程更加方便。
交互操作:支持鼠标和键盘交互操作,可以方便地进行排序、过滤和查找等操作。这允许用户通过鼠标点击来kill进程而无需输入PID。
功能丰富:htop提供了诸如进程树视图、进程优先级设置和进程终止等丰富的功能。
快速启动:相比传统的top命令,htop启动更快,不需要像top那样在显示任何内容之前收集一段时间的数据。
操作简便:在htop中,用户无需输入进程编号或优先级值来重新分配进程,还可以同时杀死多个进程。
总的来说,htop是Linux系统管理员和用户监控和管理系统进程的有力工具,它通过提供一个直观、易用和功能丰富的界面,帮助用户更有效地管理和监控他们的系统【来自讯飞星火大模型的工具介绍】
atop工具
还有个更好用的atop命令,好像是基于sar的统计生成的报告,直
接就把有问题的进程标