命令1:top
top
总体系统信息
- uptime:系统的运行时间和平均负载。
- tasks:当前运行的进程和线程数目。
- CPU:总体 CPU 使用率和各个核心的使用情况。
- 内存(Memory):总体内存使用情况、可用内存和缓存。
查看 CPU 使用率
以下是一些常用的CPU使用率相关字段:
- %Cpu(s):显示整个系统的CPU使用率情况,包括用户空间、系统空间和空闲时间的百分比。
- us:用户空间占用CPU的百分比。
- sy:系统空间占用CPU的百分比。
- ni:用户进程的优先级改变(nice)占用CPU的百分比。
- id:空闲CPU的百分比。
- wa:等待I/O操作(如磁盘读写)占用CPU的百分比。
用交互命令进行排序
- P:按照CPU使用率(%CPU)进行排序。
- M:按照内存使用率进行排序。
- N:按照进程ID进行排序。
- T:按照运行时间进行排序。
命令2:mpstat
mpstat
mpstat -P ALL 10
-P ALL 代表的是监控所有CPU,后面数字10代表的是每隔10秒输出一组数据。
命令3:uptime
用于显示系统总共运行了多长时间和系统的平均负载。
最后三个数字 代表的是过去 1分钟,5分钟,15分钟的平均负载
uptime
什么是系统平均负载
- 平均负载:指的是单位时间内,系统处于可运行状态和不可中断状态的平均进程数,也就是单位时间内活跃的进程数。
- 可运行状态进程:指的是正在使用CPU或者正在等待CPU调度的进程,也就是处于Running或Runnable的进程。
- 不可中断状态进程:指的是正在处于内核态关键流程中的进程,比如最常见的就是调用磁盘的IO读取,简而言之就是当一个进程向磁盘读写数据的时候,为了保证数据的一致性,在得到磁盘回复前,是不能被其他进程或中断打短的,这个时候进程就处于不可中断的状态,如果此时被其他的进程打断就容易出现进程和磁盘中的数据不一致的情况。
系统平均负载多少时合理
- uptime 命令给出的三个时间段的平均负载并不是标准化的,因为系统中 CPU 核心数量是不定的。所以平均负载为 1 味着拥有一个 CPU 核心的系统一直在忙碌,而在一个拥有 4 个 CPU 核心的系统上,意味着系统 75% 的时间是空闲的。
- 当系统平均负载除以 CPU 核心数小于等于 1表示系统没有出现过载的情况。最理想的情况是每个CPU 上都刚好运行一个进程,这样 CPU 就得到了充分的利用。
- 三个时间段统计出的系统平均负载,我们以哪个数字为准?一分钟?五分钟?还是十五分钟?我们应该着眼于五分钟或者十五分钟的平均数值,如果前一分钟的负载情况是 1.00,那么仍可以说明认定服务器情况还是正常的,但是如果十五分钟的数值仍然保持在 1.00,那么就值得注意了。
平均负载和CPU使用率
有时候我们很容易把平均负载和CPU使用率搞错,其实是不一样的,平均负载指的是单位时间内处于可运行状态或不可中断的进程数,不仅包含了正在使用CPU的进程,还包含等待CPU和等待I/O的进程。而CPU使用率指的是单位时间内CPU的繁忙情况。其实分三种情况
- CPU密集型进程,使用大量的CPU导致平均负载升高的同时也会导致CPU使用率升高,此时两者是一样的
- I/O密集型进程,等待I/O会导致平均负载升高,但CPU的使用率不一定升高
- 大量等待CPU调度的进程也会导致平均负载升高,此时的CPU使用率也会比较高
查看系统 CPU 核心数
lscpu
grep 'model name' /proc/cpuinfo | wc -l