极客时间Linux性能优化实战笔记 —— CPU性能篇
2022/9/17 5:16:13
本文主要是介绍极客时间Linux性能优化实战笔记 —— CPU性能篇,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
查看系统平均负载
使用uptime
或者top
命令,以uptime
为例:
$ uptime 02:34:03 up 2 days, 20:14, 1 user, load average: 0.63, 0.83, 0.88
含义:
02:34:03 //当前时间 up 2 days, 20:14 //系统运行时间 1 user //正在登录用户数 load average: 0.63, 0.83, 0.88 // 依次则是过去 1 分钟、5 分钟、15 分钟的平均负载(Load Average)
平均负载
单位时间内,系统中处于可运行状态(R)和不可中断状态(D)的平均进程数,即平均活跃进程数(实际上是活跃进程数的指数衰减平均值,参考sched/loadavg.c),跟cpu的使用率没有直接关系。所以这里不仅包括了正在使用CPU
的进程,还包括等待CPU
和等待I/O
的进程。
R: Running或者Runable
D:Uninterruptible Sleep或者Disk Sleep
平均负载最理想的情况是等于CPU个数,当高于CPU数量的70%的时候,就应该排查负载高的问题了。负载过高可能会导致进程响应变慢,进而影响服务的正常功能。
- 跟CPU使用率的区别
CPU 使用率,是单位时间内 CPU 繁忙情况的统计,跟平均负载并不一定完全对应。比如:- CPU 密集型进程,使用大量 CPU 会导致平均负载升高,此时这两者是一致的;
- I/O 密集型进程,等待 I/O 也会导致平均负载升高,但 CPU 使用率不一定很高;
- 大量等待 CPU 的进程调度也会导致平均负载升高,此时的 CPU 使用率也会比较高。
平均负载提供了一个快速查看系统整体性能的手段,反映了整体的负载情况。但只看平均负载本身,我们并不能直接发现,到底是哪里出现了瓶颈。在理解平均负载时,也要注意:
- 平均负载高有可能是 CPU 密集型进程导致的;
- 平均负载高并不一定代表 CPU 使用率高,还有可能是 I/O 更繁忙了;
- 当发现负载高的时候,你可以使用 mpstat、pidstat 等工具,辅助分析负载的来源。
工具
- stress
可以用来模拟CPU和IO密集型负载。- CPU密集型
$ stress --cpu 1 --timeout 600 # 模拟一个CPU密集型进程,运行600秒后退出
- IO密集型
$ stress -i 1 --timeout 600 # 模拟一个IO密集型进程,运行600秒后退出。使用sync来实现,有可能无法产生有效的iowait,可以使用stress-ng
- CPU密集型
这个stress工具的继任者是stress-ng,可以模拟的进程类型非常广泛,值得研究一下。
比如用这个工具模拟IO密集型进程:
stress-ng -i 1 --hdd 1 --timeout 600 # --hdd表示读写临时文件
-
watch
周期性执行指定命令,加入-d参数会将差异部分高亮出来。如watch -d uptime
可以实时查看平均负载的变化情况 -
mpstat
常用的多核 CPU 性能分析工具,用来实时查看每个 CPU 的性能指标,以及所有 CPU 的平均指标
示例:
mpstat -P ALL 2 5 # 显示所有cpu的指标,每个2秒输出依次,执行5次后退出
- pidstat
常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标
示例:
pidstat -u 2 5 # -u表示查看CPU指标,每隔2s输出一组,执行5次后退出 pidstat -d 2 5 # -d表示查看IO指标,每隔2s输出一组,执行5次后退出
-
htop
对于IO密集型负载:红色
对于CPU密集型负载:绿色
-
atop
这篇关于极客时间Linux性能优化实战笔记 —— CPU性能篇的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-03-30[译]漫画SELinux概念
- 2024-03-29linux 移动文件
- 2024-03-28linux .so file
- 2024-03-28Linux 磁盘管理
- 2024-03-28Linux学习笔记(十三)磁盘管理(一):磁盘分区
- 2024-03-26linux 创建 文件
- 2024-03-25使用SecureCRT对Linux vim进行颜色设置
- 2024-03-202019-2020-12 20199317 《Linux内核原理与分析》 第十二周作业
- 2024-03-20Linux运维的第二周总结
- 2024-03-13how to count number of directories in linux