Linux命令(1)top

Linux的top命令用于实时显示所有的进程的动态,经常用于性能分析,类似于Windows里面的任务管理器。

使用方法

可以直接使用输入top,不用任何参数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$ top
top - 20:59:04 up 453 days, 3:57, 1 user, load average: 0.12, 0.15, 0.13
Tasks: 206 total, 1 running, 134 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.9 us, 0.3 sy, 0.0 ni, 98.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 16260472 total, 244680 free, 12796476 used, 3219316 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 3103912 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
17019 ubuntu 20 0 1677944 281220 49100 S 6.7 1.7 1327:05 splunkd
17203 ubuntu 20 0 179836 65484 49288 S 6.7 0.4 70:11.98 splunkd
24849 root 20 0 171024 25612 12552 S 6.7 0.2 0:00.66 check-new-relea
24994 ubuntu 20 0 43636 3872 3196 R 6.7 0.0 0:00.01 top
1 root 20 0 226576 7816 5172 S 0.0 0.0 54:01.35 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:28.90 kthreadd
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H
6 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
7 root 20 0 0 0 0 S 0.0 0.0 5:35.13 ksoftirqd/0
8 root 20 0 0 0 0 I 0.0 0.0 106:51.81 rcu_sched
9 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_bh

下面介绍一下输出的内容。

第一行

1
top - 20:59:04 up 453 days,  3:57,  1 user,  load average: 0.12, 0.15, 0.13
  • 20:59:04 当前系统时间
  • 453 days, 3:57 系统运行时间453天3小时57分钟
  • 1 user 当前有1歌用户登录系统
  • load average: 0.12, 0.15, 0.13 后面三个数分别是1分钟、5分钟、15分钟的负载情况

load average是Linux系统的负载平均值。

负载衡量的是Linux系统中task对系统的需求(比如CPU、内存、IO等),负载越高,说明系统中运行的任务对系统资源的需求越多,也就是工作量越大。

一般这个值记录在/proc/loadavg文件里面,用户态的工具(uptime、top等)读的都是这个文件。

如果1分钟平均值高于5分钟,5分钟高于15分钟,则负载正在增加;反之就是减少。

如果负载平均值高于系统CPU的数量,系统很可能遇到了性能问题。

第二行

1
Tasks: 206 total,   1 running, 134 sleeping,   0 stopped,   0 zombie
  • 206 total 系统一共206个进程
  • 1 running 1个进程正在运行
  • 134 sleeping 134个进程在休眠
  • 0 stopped stopped状态的有0个
  • 0 zombie 僵尸状态的进程有0个

第三行

1
%Cpu(s):  0.9 us,  0.3 sy,  0.0 ni, 98.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

这一行显示CPU的状态。

  • 0.9 us user 用户空间占用CPU百分比
  • 0.3 sy system 内核空间占用CPU百分比
  • 0.0 ni nice 改变过优先级的进程占用CPU的百分比
  • 98.8 id idle 空闲CPU百分比
  • 0.0 wa waiting IO等待占用CPU的百分比
  • 0.0 hi Hardware IRQ 硬中断占用CPU的百分比
  • 0.0 si Software IRQ 软中断占用CPU的百分比
  • 0.0 st 被Hypervisor消耗掉的CPU的百分比

第四行

1
KiB Mem : 16260472 total,   244680 free, 12796476 used,  3219316 buff/cache

内存状态

  • 16260472 total 物理总内存 16GB左右
  • 244680 free 空闲内存总量 240MB左右
  • 12796476 used 使用中的内存总量 12GB左右
  • 3219316 buff/cache 缓存的内存总量 3GB左右 用作内核缓存

第五行

1
KiB Swap:        0 total,        0 free,        0 used.  3103912 avail Mem

交换分区信息

  • 0 total 交换区总量
  • 0 free 空弦交换区总量
  • 0 used 使用的交换区总量
  • 3103912 avail Mem 可以用于进程下一次内存分配的内存总量3GB左右