top 是一个命令行程序, 用于实时监视系统的运行情况, top 命令展示的信息比较丰富, 我们分类介绍下, 先来看看top命令展示的信息

root@server:~# top                                                                                                                                                                                                       [2/1909]
top - 18:41:48 up 1 day,  2:21,  3 users,  load average: 0.12, 0.08, 0.09 
Tasks: 157 total,   1 running, 156 sleeping,   0 stopped,   0 zombie      
%Cpu(s):  1.1 us,  0.2 sy,  0.0 ni, 98.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  4045996 total,  1009596 free,  1579968 used,  1456432 buff/cache
KiB Swap:   998396 total,   998396 free,        0 used.  2164548 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                                   
 1627 rabbitmq  20   0 2205672  57648   5204 S   3.3  1.4  67:14.58 beam.smp
23655 root      20   0       0      0      0 S   0.3  0.0   0:04.69 kworker/0:1
    1 root      20   0   38068   6032   3948 S   0.0  0.1   0:02.93 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.43 ksoftirqd/0
    5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H
    7 root      20   0       0      0      0 S   0.0  0.0   2:11.68 rcu_sched
    8 root      20   0       0      0      0 S   0.0  0.0   0:00.00 rcu_bh
    9 root      rt   0       0      0      0 S   0.0  0.0   0:00.24 migration/0
   10 root      rt   0       0      0      0 S   0.0  0.0   0:01.31 watchdog/0
   11 root      rt   0       0      0      0 S   0.0  0.0   0:01.26 watchdog/1
   12 root      rt   0       0      0      0 S   0.0  0.0   0:00.24 migration/1
   13 root      20   0       0      0      0 S   0.0  0.0   0:02.09 ksoftirqd/1
   15 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/1:0H

......

top 命令有非常多的选项,便于我们通过展示界面和内容进行定制, 在 top 命令的展示界面, 我们可以操作下述选项:

  • z 切换为颜色模式
  • x 切换排序列的颜色
  • s 10 Enter 设置更新频率
  • Space 强制更新
  • R 对排序列逆序
  • P 以CPU使用率排序
  • M 以内存使用率排序
  • c 显示命令完整路径
  • k {PID} Enter 关闭{PID}进程
  • u {USER} Enter 仅显示指定用户进程
  • h 显示帮助信息
  • q 退出 top 命令
top - 18:56:36 up 1 day,  2:36,  3 users,  load average: 0.13, 0.14, 0.10

如果是1 core CPU, load average 超过 1 意味着CPU使用率达到100%
如果是2 core CPU, load average 超过 2 意味着CPU使用率达到100%
如果是N core CPU, load average 超过 N 意味着CPU使用率达到100%

一般情况下, 如果 load average/CPU核心数 超过 1 则意味着服务器超载了.

Tasks: 157 total,   1 running, 156 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.3 us,  0.3 sy,  0.0 ni, 98.3 id,  0.0 wa,  0.0 hi,  0.1 si,  0.0 st

这里显示总共有157个任务在执行, 1个正在运行, 其他156个均在休眠.

  • us User CPU Time 运行用户态任务占用CPU时间片百分比
  • sy System CPU Time 运行内核态任务占用CPU时间片百分比
  • ni Nice CPU Time 用户态改变过优先级的进程占用CPU时间片百分比
  • wa iowait 等待输入输出的CPU时间片百分比
  • hi Hardware IRQ 硬件中断占用CPU时间片百分比
  • si Software Interrupts 软件中断占用CPU时间片百分比
  • st Steal Time 抢占到别的实例占用CPU时间片百分比
KiB Mem :  4045996 total,  3224488 free,   278292 used,   543216 buff/cache
KiB Swap:   998396 total,   998396 free,        0 used.  3522332 avail Mem

上述描述的系统的物理内存和交换分区的使用信息,KiB Mem行显示总共4G内存, 空闲大概3G, 使用了大概300M左右, 缓存了500M左右.显示内存资源还是非常空闲
KiB Swap行显示交换分区总共1G左右的大小, 无任何内存交换行为,全部空闲中,服务器当前无任何大的IO负载.

物理内存计算方式一般是 total=free+used+buff/cache, 交换分区也类似.

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                                                                                                   
 1632 rabbitmq  20   0 2203352  56164   5024 S   3.4  1.4   0:17.45 beam.smp                                                                                                                                                                  
   41 root      20   0       0      0      0 S   0.1  0.0   0:00.63 kworker/0:1                                                                                                                                                              
    7 root      20   0       0      0      0 S   0.1  0.0   0:00.26 rcu_sched

从这里开始显示的系统的进程列表, 默认是根据CPU使用率排序, 可以通过上述介绍的快捷键来切换, 每列详细信息如下:

  • PID 进程编号(Process Id)
  • USER 进程运行用户名(User Name)
  • PR 优先级(Priority)
  • NI 负值表示高优先级,正值表示低优先级( Nice value)
  • VIRT 进程使用的虚拟内存总量, 单位kb.VIRT=SWAP+RES
  • RES 进程使用的、未被换出的物理内存大小, RES=CODE+DATA
  • SHR 共享内存大小
  • S 进程状态。(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
  • %CPU 上次更新到现在的CPU时间占用百分比
  • %MEM 进程使用的物理内存百分比
  • TIME+ 进程使用的CPU时间总计,单位1/100秒
  • COMMAND 进程启动命令和参数

当然我们也可以通过命令参数来改变top命令的行为

  • top -d 9 设置更新频率为9秒
  • top -u {USER} 仅显示{USER}下的进程
  • top -n 10 更新10次之后退出top命令
  • `top -b -n 1 > top.txt 将top命令的内容输出到文本文件,

【腾讯云】境外1核2G服务器低至2折,半价续费券限量免费领取!
https://cloud.tencent.com/act/cps/redirect?redirect=1068&cps_key=e4b50f6c64a4480367f8a8d16fd07c5a&from=console

标签: 系统监控, top

添加新评论