一、什么是性能问题?
1 | 突然有一天,公司开发在夜里打电话给你,“现在有很多用户说系统弹出一个错误,系统繁忙”之类的。 |
看,cpu100%这类问题就归属性能问题。
研究性能问题需要学习操作系统主要组件原理
CPU性能、内存、磁盘IO性能、网络
衡量性能的指标:
并发(吞吐)、响应快(时延)
二、CPU性能篇
什么是平均负载
看一个例子:uptime
1 | $ uptime |
说明:
02:34:03
当前时间up 2 days, 20:14
系统从开机后运行的时长1 user
正在登录的用户数load average: 0.63, 0.83, 0.88
最近1分钟、5分钟、15分钟的平均负载(Load average)
平均负载
是指单位时间内,系统处于可运行(Running或ready)和不可中断(blocked)的进程数。结合最近1分钟、5分钟、15分钟的平均负载,我们可以全面了解cpu的使用情况。像了解一天早中晚的气候变化。
Running是指正在使用cpu;Ready是指代码(指令)已经加载到了内存,等cpu来执行指令;
不可中断是指进程在使用cpu,突然需要进行磁盘IO(读写)的长时间操作,先不用cpu,等IO操作完毕再回来使用cpu。
一般而言,平均负载超过cpu核数70%就要检查cpu的使用情况,考虑是否优化。
查看cpu核数
1 | grep 'model name' /proc/cpuinfo|wc -l |
什么是CPU使用率
cpu使用率衡量了单位时间cpu的繁忙程度。
对于I/O密集型进程,平均负载就高,但cpu却不繁忙,也就是cpu使用率不高。
看一个例子:top
1 | $ top |
说明:
%Cpu(s)
比如说有4个cpu,%Cpu(s)代表这4个的平均使用率。cpu = 用户空间使用率(us) + 内核空间使用率(sy) + 空闲(id)
ni
用户空间通过改变进程优先级占用的cpu百分比wa
等待io操作占用的cpu百分比hi/si
硬/软中断进行cpu上下文切换占用的百分比RES
使用的真实物理内存(KB)%CPU
一个cpu的使用率,毕竟一个进程只占用一个cpuTIME+
累计使用cpu时间
附top使用快捷键说明:
shift + m
# 按照内存使用率排序,shift m 等价于大写Mshift + p
# 按照cpu使用率排序c
# 显示命令全路径F
# 挑选你要选择展示的列,按下空格选中,* 代表会展示的列(列会出现在最后),按q退出。
可以展示进程使用哪一个cpu- 按
1
# 展示每个cpu的使用情况
原文链接: https://chenqiaorui.github.io/2023/05/22/第18期:linux性能/
版权声明: 转载请注明出处.