下面这段代码是在Linux系统,通过top命令查看到的服务器信息
app@pyplood:/opt/state_scheduler/runtime/logs$ top
top - 21:57:08 up 65 days, 10:36, 1 user, load average: 0.07, 0.08, 0.02
Tasks: 290 total, 1 running, 289 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 50.0 sy, 0.0 ni, 50.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7462.6 total, 175.4 free, 1158.0 used, 6429.2 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 6304.6 avail Mem
接下来对具体字段所代表的含义进行展开讲解:
一、系统状态信息
top - 21:57:08 up 65 days, 10:36, 1 user, load average: 0.07, 0.08, 0.02
- 时间:21:57:08 是当前系统时间
- 系统运行时间:up 65 days, 10:36 表示系统已经连续运行了 65 天 10 小时 36 分钟,说明系统的稳定性较好
- 登录用户数:1 user 表示当前有 1 个用户登录到系统
- 系统负载平均值:load average: 0.07, 0.08, 0.02 分别代表系统在过去 1 分钟、5 分钟和 15 分钟内的平均负载。这些数值较低,表明系统当前的负载很轻,几乎没有什么压力
二、任务(进程)信息
Tasks: 290 total, 1 running, 289 sleeping, 0 stopped, 0 zombie
- 总进程数:290 total 表示系统中当前总共有 290 个进程
运行状态: - 1 running:有 1 个进程正在运行
- 289 sleeping:有 289 个进程处于睡眠状态,即它们正在等待某个事件的发生,比如等待 I/O 操作完成
- 0 stopped:没有被停止的进程
- 0 zombie:没有僵尸进程。僵尸进程是指已经结束但父进程没有正确回收其资源的进程,过多的僵尸进程会占用系统资源
三、CPU 使用率信息
%Cpu(s): 0.0 us, 50.0 sy, 0.0 ni, 50.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
- 用户空间 CPU 使用率:0.0 us 表示用户进程占用 CPU 的时间比例为 0%
- 系统空间 CPU 使用率:50.0 sy 表示系统内核进程占用 CPU 的时间比例为 50%。较高的系统 CPU 使用率可能意味着系统在进行大量的内核操作,比如设备驱动、内存管理等
- 调整优先级后的进程 CPU 使用率:0.0 ni 表示经过 nice 值调整(改变进程优先级)的进程占用 CPU 的时间比例为 0%
- 空闲 CPU 使用率:50.0 id 表示 CPU 处于空闲状态的时间比例为 50%。
- 等待 I/O 的 CPU 使用率:0.0 wa 表示 CPU 等待 I/O 操作完成的时间比例为 0%,说明系统的 I/O 操作没有导致 CPU 长时间等待
- 硬中断处理 CPU 使用率:0.0 hi 表示处理硬件中断占用 CPU 的时间比例为 0%
- 软中断处理 CPU 使用率:0.0 si 表示处理软件中断占用 CPU 的时间比例为 0%
- 被虚拟机偷走的 CPU 使用率:0.0 st 如果你使用的是虚拟机,该数值表示虚拟机管理程序从当前虚拟机中 “偷走” 的 CPU 时间比例为 0%
四、内存使用信息
MiB Mem : 7462.6 total, 175.4 free, 1158.0 used, 6429.2 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 6304.6 avail Mem
-
物理内存:
7462.6 total
:系统总共有 7462.6 MiB 的物理内存
175.4 free
:当前可用的物理内存为 175.4 MiB
1158.0 used
:已使用的物理内存为 1158.0 MiB
6429.2 buff/cache
:用于缓存和缓冲区的物理内存为 6429.2 MiB。这部分内存可以被快速回收,以满足新的内存需求 -
交换空间(Swap):
0.0 total
:系统没有配置交换空间
0.0 free
和0.0 used
:由于没有交换空间,所以可用和已使用的交换空间均为 0 -
可用内存:
6304.6 avail Mem
表示系统实际可用于新进程的内存为 6304.6 MiB,这个数值考虑了缓存和缓冲区可以释放的内存
总结
从 top 命令的输出可以看出,系统当前负载较轻,有较多的空闲 CPU 和可用内存。
但是,较高的系统 CPU 使用率可能需要进一步检查,以确定是否存在内核层面的性能问题。
在 top 界面中,按 1 键可以查看每个 CPU 核心的使用情况;
%Cpu0 : 1.0 us, 0.0 sy, 0.0 ni, 98.6 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
%Cpu1 : 1.3 us, 0.0 sy, 0.0 ni, 98.3 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
按 M 键按内存使用量排序进程;按 P 键按 CPU 使用量排序进程,以便更详细地了解系统状态。
内容延伸
关于文中提到的过去1/5/15分钟内的平均负载
系统平均负载(Load Average)是衡量 Linux 等系统繁忙程度的一个重要指标,它反映了系统在一段时间内正在运行和等待运行的进程数量。系统在过去 1 分钟内的平均负载为 0.07,这有以下几方面的含义:
系统负载程度解读
- 负载很轻:平均负载数值较低,说明系统当前处于较为空闲的状态。在过去 1 分钟内,系统中几乎没有太多进程在竞争 CPU 资源,CPU 有大量的空闲时间来处理其他任务。一般来说,平均负载值越接近 0,系统就越空闲
- 资源充足:0.07 的负载表明系统的 CPU、内存等资源充足,能够轻松应对当前的工作负载。这意味着在这个时间段内,新的进程或任务可以很容易地被系统调度和执行,不会因为资源竞争而导致性能下降
与系统 CPU 核心数的关系
平均负载的合理范围需要结合系统的 CPU 核心数来判断。假设系统有 n 个 CPU 核心:
- 负载小于核心数:当平均负载小于 CPU 核心数时,通常表示系统能够正常处理当前的工作负载,不会出现明显的性能瓶颈。例如,对于一个具有 4 个 CPU 核心的系统,平均负载为 0.07 远远小于核心数,说明系统资源利用率非常低
- 负载接近或大于核心数:如果平均负载接近或大于 CPU 核心数,那么系统可能已经处于高负载状态,部分进程可能需要等待 CPU 资源,从而导致响应时间变长。例如,对于一个 4 核系统,平均负载达到 4 或更高时,就需要关注系统的性能问题了
结合不同时间段分析
top
命令显示的平均负载有三个数值,分别代表过去 1 分钟、5 分钟和 15 分钟的平均负载。将这三个数值结合起来分析,可以更好地了解系统负载的变化趋势:
- 三个数值接近且都较低:如 0.07、0.08、0.02,说明系统长期处于低负载状态,运行非常稳定
- 1 分钟负载低,5 分钟和 15 分钟负载高:可能表示系统刚刚从高负载状态恢复,之前的负载压力较大,但现在已经得到缓解
- 1 分钟负载高,5 分钟和 15 分钟负载低:这可能是系统突然遇到了一个短暂的高负载任务,如大量数据的导入操作,但这种高负载是暂时的
综上所述,上文提到的过去 1 分钟内平均负载为 0.07 表明系统当前处于非常轻松的工作状态,有足够的资源来处理新的任务。