linux 查看当前系统的负载情况

uptime命令

linux uptime命令主要用于获取主机运行时间和查询linux系统负载等信息。

➜  ~ uptime
 17:14:50 up 66 days, 10 min,  3 users,  load average: 1.00, 0.40, 3.35

显示内容说明

  • 17:14:50 当前时间
  • up 66 days 系统运行时间,时间越大,说明你的机器越稳定。
  • 3 users 用户连接数,是总连接数而不是用户数
  • load average 系统平均负载,统计最近1,5,15分钟的系统平均负载

那么什么是系统平均负载呢?

系统平均负载是指在特定时间间隔内运行队列中的平均进程数。

load average在单核系统中意味着

  • CPU 被充分利用(100%);最近的 1 分钟有 1 个进程在运行。
  • CPU 有 60% 处于空闲状态;在最近的 5 分钟没有进程等待 CPU 时间。
  • CPU 平均过载了 235%;最近的 15 分钟平均有 2.35 个进程在等待 CPU 时间。

load average在双核系统中意味着

  • 有一个 CPU 处于完全空闲状态,另一个 CPU 被使用;最近的 1 分钟没有进程等待 CPU 时间。
  • CPU 平均 160% 处于空闲状态;最近的 5 分钟没有进程等待 CPU 时间。
  • CPU 平均过载了 135%;最近的 15 分钟有 1.35 个进程等待 CPU 时间。

其他说明

  • 如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。
  • 如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。
  • 如果你的linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。
  • 1可以被认为是最优的负载值。负载是会随着系统不同改变得。
  • 单CPU系统1-3和SMP系统6-10都是可能接受的。

w命令

cat /proc/loadavg

0.00 0.03 0.05 1/244 16510

参数说明

  • 0.00 0.03 0.05 表示最近1分钟,5分钟,15分钟 系统的平均负载; 系统负载越高,代表CPU越繁忙
  • 1/244 1代表此时运行队列中的进程个数 244 代表系统中进程的总数
  • 16510 代表到此为止创建的最后一个进程的ID

w命令

➜  ~ w
 17:38:03 up 66 days, 33 min,  3 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    114.252.145.48   17:08    3.00s  1.17s  0.00s w
root     pts/3    106.37.127.67    133月18 33days  0.22s  0.22s -zsh
root     pts/1    106.37.127.67:S. 133月18 33days  1.36s  1.36s /bin/zsh

参数说明

  • USER:用户名
  • TTY:录后系统分配的终端号
  • FROM: 远程主机名(即从哪儿登录来的)
  • LOGIN@:何时登录
  • IDLE:空闲了多长时间,表示用户闲置的时间。
  • JCPU:和该终端(tty)连接的所有进程占用的时间,这个时间里并不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间
  • PCPU:指当前进程(即在WHAT项中显示的进程)所占用的时间
  • WHAT:当前正在运行进程的命令行

tload命令

0.06, 0.03, 0.05

平均负载:0.06, 0.03, 0.05 表示最近1分钟,5分钟,15分钟的系统平均负载

top命令

top - 17:41:04 up 66 days, 36 min,  3 users,  load average: 0.04, 0.03, 0.05
Tasks: 127 total,   1 running, 126 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.1 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3881692 total,  1096832 free,  1737420 used,  1047440 buff/cache
KiB Swap:  6143996 total,  5946192 free,   197804 used.  1591844 avail Mem

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
16372 elastic+  20   0 3180788 761340  16688 S   0.3 19.6   0:14.52 java
    1 root      20   0  673252 484080   1516 S   0.0 12.5   8:56.39 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.92 kthreadd

参数说明

  • 第一行:
    • 时间为:17:41:04;
    • 已经运行了 66 days;
    • 当前在线用户:3 users;
    • 平均负载:0.04, 0.03, 0.05 表示最近1分钟,5分钟,15分钟的系统平均负载.
  • 第二行:
    • 进程总数:127 正在运行进程数:1
    • 睡眠进程数:126
    • 停止的进程数:0
    • 僵尸进程数:0
  • 第三行:
    • 用户空间占用CPU百分比: 1.1%
    • 内核空间占用CPU百分比:0.1%
    • 用户进程空间内改变过优先级的进程占用CPU百分比:0.0%
    • 空闲CPU百分比:0.0
    • 等待输入输出的CPU时间百分比:0.0
    • CPU服务软中断所耗费的时间总额:0.0%
    • StealTime:0.0%
  • 第四行:
    • 物理内存总量:3881692
    • 空闲内存总量:1096832
    • 使用的物理内存总量:1737420
    • 用作内核缓存的内存量:1047440
  • 第五行:
    • 交换区总量:6143996
    • 空闲交换区总量:5946192
    • 使用的交换区总量:197804
    • 缓冲的交换区总量:1591844
  • 第六行:
    • 进程ID、
    • 进程所有者、
    • 优先级、
    • nice值,负值表示高优先级,正值表示低优先级、进程使用的虚拟内存总量、进程使用的、未被换出的物理内存大小、共享内存大小、进程状态、上次更新到现在的CPU时间占用百分比、进程使用的物理内存百分比、进程使用CPU总时间、命令名、命令行

df命令

➜  ~ df
文件系统          1K-块     已用     可用 已用% 挂载点
/dev/vda1      41151808 25972916 13065460   67% /
devtmpfs        1931228        0  1931228    0% /dev
tmpfs           1940844        0  1940844    0% /dev/shm
tmpfs           1940844      548  1940296    1% /run
tmpfs           1940844        0  1940844    0% /sys/fs/cgroup
tmpfs            388172        0   388172    0% /run/user/0

参考文献

理解 Linux 的平均负载和性能监控

使用 Nmon 监控 Linux 的系统性能

【Linux】查看当前系统的负载情况

Linux命令大全