top 命令的参数理解

发布时间: 更新时间: 总字数:1471 阅读时间:3m 作者: IP上海 分享 网址

经常在 Linux 系统中使用 top 命令查看系统系统各种资源的占用数据,有些参数实在疑惑,故写此博客汇总写。

top命令窗口

top - 15:57:32 up 165 days, 20:29,  1 user,  load average: 0.00, 0.01, 0.05
Tasks:  76 total,   1 running,  75 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.3 sy,  0.0 ni, 99.3 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1014836 total,   130316 free,   160796 used,   723724 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   691668 avail Mem

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
14514 root      10 -10  130348  12556   7468 S  0.7  1.2 273:21.86 AliYunDun
    1 root      20   0  191048   3740   2252 S  0.0  0.4  20:36.16 systemd
    2 root      20   0       0      0      0 S  0.0  0.0   0:00.06 kthreadd
    3 root      20   0       0      0      0 S  0.0  0.0   2:03.52 ksoftirqd/0
    5 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kworker/0:0H
    7 root      rt   0       0      0      0 S  0.0  0.0   0:00.00 migration/0
    8 root      20   0       0      0      0 S  0.0  0.0   0:00.00 rcu_bh
    9 root      20   0       0      0      0 S  0.0  0.0  23:14.34 rcu_sched
   10 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 lru-add-drain
   11 root      rt   0       0      0      0 S  0.0  0.0   0:50.62 watchdog/0
   13 root      20   0       0      0      0 S  0.0  0.0   0:00.00 kdevtmpfs
   14 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 netns
   15 root      20   0       0      0      0 S  0.0  0.0   0:03.50 khungtaskd
   16 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 writeback
   17 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 kintegrityd
   18 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset
   19 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset
   20 root       0 -20       0      0      0 S  0.0  0.0   0:00.00 bioset
  • 第一行
    • top - 15:57:32 up 165 days, 20:29 : 系统已经运行的时间,也可以用 uptime 查看
    • 1 user : 当前登录用户
    • load average: 0.00, 0.01, 0.05 : 分别表示系统1分钟平均负载、5分钟平均负载、15分钟平均负载
  • 第二行 Tasks 表示系统运行的整体进程数量和状态信息
    • total 表示系统现在一共有多少个用户进程
    • running 表示正在处于running状态的进程
    • sleeping 表示正处于sleeping状态的进程
    • stopped 表示正处于stopped状态的进程
    • zombie 表示僵尸进程的格式
  • 第三行 %Cpu(s) 表示的是总体CPU使用情况
    • us user 表示用户态的CPU时间比例
    • sy system 表示内核态的CPU时间比例,间接表示内核消耗在硬件服务软件中断上的时间
    • ni nice 表示运行低优先级进程的CPU时间比例
    • id idle 表示空闲CPU时间比例
    • wa iowait 表示处于IO等待的CPU时间比例
    • hi hard interrupt 表示处理硬中断的CPU时间比例
    • si soft interrupt 表示处理软中断的CPU时间比例
    • st steal time 表示当前系统运行在虚拟机中的时候,被其他虚拟机占用的CPU时间比例
  • 第四行 Mem 内存情况,单位为 KiB
  • 第五行 Swap 内存情况,单位为 KiB
  • 第六行个别参数:
    • PID 进程ID
    • USER 进程所有者的用户名,例如root
    • PR 进程调度优先级
    • NI 进程nice值(优先级),越小的值代表越高的优先级
    • VIRT(virtual memory usage)进程使用的虚拟内存
    • RES (resident memory usage)进程使用的物理内存(不包括共享内存)
    • SHR (shared memory)进程使用的共享内存
    • S 表示进程的运行状态,Z 表示该进程是僵尸进程
    • CPU 进程使用的CPU占比
    • MEM 进程使用的内存占比
    • TIME 进程启动后到现在所用的全部CPU时间
    • COMMAND 进程的启动命令(默认只显示二进制,top -c能够显示命令行和启动参数)
    • DATA:数据占用的内存。如果top没有显示,按f键可以显示出来。这一块是真正的该程序要求的数据空间,是真正在运行中要使用的。

因此,DATA的含义比较确定,甚至可以用程序读取的数据量计算出来;SHR是一个潜在的可能会被共享的数字,如果只开一个程序,也没有别人共同使用它;VIRT里面的可能性更多,比如它可能计算了被许多X的库所共享的内存;RES应该是比较准确的,但不含有交换出去的空间;但基本可以说RES是程序当前使用的内存量。

交互式命令

  • f或者F 从当前显示中添加或者删除项目
  • o或者O 改变显示项目的顺序
  • l 切换显示平均负载和启动时间信息
  • m 切换显示内存信息
  • t 切换显示进程和CPU状态信息
  • c 切换显示命令名称和完整命令行
  • M 根据驻留内存大小进行排序
  • P 根据CPU使用百分比大小进行排序
  • 按1切换过程查看单个 cpu详情模式

僵尸进程

如何查找僵尸(Defunct)进程

ps -ef | grep defunct | grep -v grep

消灭僵尸进程的方法

  1. 找到僵尸进程的父进程pidpstress可以显示进程父子关系),kill -9 pid,父进程退出后init自动会清理僵尸进程。(需要注意的是kill -9并不能杀死僵尸进程)
  2. 重启系统
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数