目 录
一、要求
二、快速了解系统资源利用情况的Linux命令
(一)cat /proc/loadavg命令
1、命令介绍
2、命令输出
3、命令解释
(1)前三个数字:
(2)第四个值:
(3)最后一个数字:
(二)vmstat命令
1、命令介绍
2、命令选项option
(1)常用选项
(2)输出字段解释
3、使用场景
4、命令示例
(1) procs
(2) memory
(3) swap
(4) io
(5) system
(6) cpu
(7)总结
一、要求
linux中,我们经常采用top来看系统和线程的占用资源的情况,但是我们很多时候需要总体了解系统的资源占用情况,有没有一些简单的命令,不需要安装,系统自带,可以快速了解系统总的资源占用情况?
二、快速了解系统资源利用情况的Linux命令
(一)cat /proc/loadavg命令
1、命令介绍
cat /proc/loadavg 是一个在 CentOS(以及其他 Linux 发行版)中常用的命令,用于查看系统的平均负载。/proc/loadavg 是一个虚拟文件,它反映了当前操作系统在内存中的运行情况,而不占用实际的磁盘空间。
2、命令输出
当你执行 cat /proc/loadavg 命令时,你会看到类似以下的输出:
[root@ecs-52a1 121yunwei]# cat /proc/loadavg
0.05 0.10 0.15 1/234 12345
[root@ecs-52a1 121yunwei]#
3、命令解释
上面命令输出的那些数字的含义如下:
(1)前三个数字:
这三个数字分别表示系统在过去 1 分钟、5 分钟和 15 分钟内的平均负载。这个平均负载并不是 CPU 的使用率,而是可运行或等待运行(在运行队列中)的进程数的平均值。在单核 CPU 的系统上,如果这个数字大于 1,那么通常意味着系统有进程在等待 CPU 时间片。对于多核 CPU 的系统,这个数字可以超过 CPU 的核心数,但这并不一定表示系统过载,因为多个进程可以同时运行在不同的核心上。
(2)第四个值:
这是一个分子和分母组成的分数。分子表示当前正在运行的进程数,分母表示系统总的进程数。例如,上面的输出中的 1/234 表示有 1 个进程正在运行,总共有 234 个进程。
(3)最后一个数字:
这是最近一次运行的进程的 PID(进程 ID)。
要正确理解这个命令的输出,你需要考虑你的系统的 CPU 核心数。例如,如果你有一个四核 CPU 的系统,并且 cat /proc/loadavg 的输出中第一个数字(1 分钟内的平均负载)为 4.00,那么这意味着系统在这段时间内平均有 4 个进程在等待或正在运行,这可以被认为是满负载运行。但如果这个数字超过 4,比如说是 5.00,那么意味着系统有过多的进程在等待 CPU 时间片,可能会导致性能下降。
总的来说,cat /proc/loadavg 是一个快速查看系统负载状态的好方法,
(二)vmstat
命令
1、命令介绍
vmstat(Virtual Memory Statistics,虚拟内存统计)是Linux中用于报告关于系统虚拟内存、进程、磁盘IO、中断和CPU活动的重要统计信息的工具。通过vmstat命令,管理员和用户可以快速了解系统的整体性能状况和瓶颈所在。
命令格式如下:
vmstat [options] [delay [count]]
2、命令选项option
options 是可选的参数,用于指定vmstat命令的行为。
delay 是两次报告之间的时间间隔,以秒为单位。
count 是报告的次数。如果不指定,vmstat将持续运行直到被中断。
(1)常用选项
-a:显示活跃和非活跃内存。
-f:显示从系统启动至今的fork数量。
-m:显示slabinfo信息。
-n:在周期性循环输出时,输出的头部信息仅显示一次。
-s:显示内存相关统计信息及多种系统活动数量。
-d:显示磁盘相关统计信息。
-p:显示指定磁盘分区统计信息。
-S:使用指定单位显示。例如,k或K表示1000字节,m或M表示1000000字节。
-V:显示vmstat的版本信息。
(2)输出字段解释
vmstat命令的输出包含多个字段,每个字段都反映了系统某个方面的状态或活动情况。例如:
Procs:进程状态相关字段,包括运行和等待CPU时间的进程数、不可中断状态的进程数等。
Memory:内存使用相关字段,如总量、使用量、空闲量、缓存量等。
Swap:交换空间使用相关字段。
IO:磁盘IO相关字段,包括块读/写、中断次数等。
CPU:CPU使用相关字段,如用户空间占用率、系统空间占用率、空闲率等。
为了获取每个字段的具体解释,你可以查阅vmstat的手册页,通过运行man vmstat命令来访问。
3、使用场景
vmstat命令通常用于以下场景:
- 性能监控:定期运行vmstat以监控系统的资源使用情况,包括内存、CPU和磁盘IO。
- 故障排查:当系统出现性能问题时,可以使用vmstat来识别可能的瓶颈或资源争用情况。
- 系统调优:基于vmstat的输出,可以对系统进行调优,例如调整内存分配、优化磁盘IO等。
4、命令示例
以下是一个简单的vmstat命令示例:
vmstat 1 # 每秒更新一次系统状态
这个命令将每秒打印一次系统状态,包括内存、交换、IO、CPU等信息,直到你手动停止它(通常是通过按下Ctrl+C)。
5、Vmstat命令实例详解
[root@ecs-52a1 121yunwei]# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 141140 225700 3840776 0 0 18 42 2 2 2 5 92 0 0
[root@ecs-52a1 121yunwei]#
当输入 `vmstat` 并得到以下输出:
这些数据的解释如下:
(1) procs
* **r**: 运行队列中的进程数,即等待CPU时间的进程数。在这个例子中,有1个进程在等待CPU时间。
* **b**: 处于不可中断状态的进程数。在这个例子中,没有进程处于不可中断状态。
* **swpd**: 使用的交换空间大小(KB)。在这个例子中,没有使用交换空间。
(2) memory
* **free**: 空闲的物理内存大小(KB)。在这个例子中,有141140KB的空闲物理内存。
* **buff**: 缓冲区内存大小(KB)。缓冲区用于存储块设备的读写数据,通常用于磁盘I/O。在这个例子中,有225700KB的缓冲区内存。
* **cache**: 缓存内存大小(KB)。缓存用于存储文件系统的数据和目录项,以提高文件访问速度。在这个例子中,有3840776KB的缓存内存。
(3) swap
* **si**: 每秒从交换空间换入到物理内存的数据量(KB/s)。
* **so**: 每秒从物理内存换出到交换空间的数据量(KB/s)。
在这个例子中,`si` 和 `so` 都是0,表示没有数据在物理内存和交换空间之间交换。
(4) io
* **bi**: 块设备接收的块数(块/秒)。
* **bo**: 发送到块设备的块数(块/秒)。
在这个例子中,`bi` 是18块/秒,`bo` 是42块/秒,表示了系统的磁盘I/O活动。
(5) system
* **in**: 每秒的中断数,包括时钟中断。
* **cs**: 每秒上下文切换次数。
在这个例子中,每秒有2个中断和2次上下文切换。
(6) cpu
* **us**: 用户空间占用CPU的百分比。
* **sy**: 内核空间占用CPU的百分比。
* **id**: 空闲CPU的百分比。
* **wa**: 等待I/O的CPU百分比。
* **st**: 被虚拟机偷走的CPU时间百分比(如果有虚拟机的话)。
在这个例子中:
* 用户空间占用CPU的百分比是2%。
* 内核空间占用CPU的百分比是5%。
* 空闲CPU的百分比是92%。
* 等待I/O的CPU百分比是0%。
* 没有被虚拟机偷走的CPU时间。
(7)总结
从这些数据中可以看出,系统当前的负载非常低,大部分CPU时间都是空闲的,只有很少的进程在等待CPU时间,磁盘I/O活动也很低。这是一个相当健康的系统状态。