当前位置 往事如风 Linux 正文 下一篇:

top 命令与操作及其参数指标总结

top 命令的选项

top 命令有丰富的选项可以使用, 常用的如以下几种:

# -u    user, 指定展示的用户
# -d    delay, 指定刷新频率
top -u nginx -d 1

# -n    iteration, 指定刷新多少次之后自动退出 top 命令
# -p    pid, 指定进程 id
top -n 20 -p {pid1} {pid2} ...

全局系统信息

top 命令的界面被分为泾渭分明的两部分, 上半部分是全局类的信息, 展示 load, cpu, 内存, 进程数目统计等信息, 本节主要介绍的就是上半部分: 全局系统信息;

top - 11:59:14 up 194 days, 21:56,  2 users,  load average: 0.74, 0.97, 1.18
Tasks: 108 total,   1 running, 107 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.0 us,  2.0 sy,  0.0 ni, 82.2 id, 13.7 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  3881920 total,   139820 free,  2848020 used,   894080 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   773540 avail Mem
  • 第一行是 uptime 信息;
  • 第二行和第三行是 cpu 及进程信息;
  • 第四行和第五行是 free 信息;

cpu 全局统计信息

全局的 cpu 统计信息, 主要存在于 top 命令的第三行:

# us    user time
# sy    system time
# ni    niceness process time
# id    idle time
# wa    wait time
# hi    hardware interrupt time
# si    software interrupt time
# st    stole time, used in virtualization
%Cpu(s):  5.8 us,  1.0 sy,  0.0 ni, 90.4 id,  2.8 wa,  0.0 hi,  0.0 si,  0.0 st

其中有几个比较重要的指标:

  • user time 时间占比大, 说明用户空间内的 cpu 计算比较多, 这属于最常见的状态;

  • system time 时间占比大, 说明 system call 系统调用比较多, 计算多在内核空间发生;
    这往往不是一个好的兆头, 如果伴随着系统的性能异常, 需要使用 strace 等命令追踪系统调用的状态;
    如果一个正常情况下 system time 很少的进程, 突然莫名其妙得 user time 与 system time 的差距达到了量级, 那么有相当的概率, 系统内核发生了性能问题, 比如进程上下文切换 (context switch) 频繁以及缺页 (page fault);
    如果一个进程每次启动都会造成很高的 system time, 那么很可能是进程内部的逻辑在执行某些耗时的 system call.

  • idle time 时间占比很大, 说明 cpu 很闲, 时间多消耗在了闲置进程上;

  • wait time 时间占比很大, 这十有八九是 cpu 等待 IO 设备的时间过长, 比较常见的是磁盘 IO 出现了吞吐瓶颈, 导致 cpu wait; 当然也有可能是网络适配器的带宽被打满了;

除此之外, 其余的几个指标, nice, hardware interrupt, software interrupt, stole, 相对来说要次重要一些, 对系统的影响有限;

全局系统信息 快捷键

  1. 按小写 l (字母) 可以显示/隐藏 uptime 信息;
  2. 连续按 t 可以切换四种(包括隐藏) cpu 信息的显示方式;
  3. 按小写 1 (数字) 可以详细显示 cpu 的每一个 core 的状态统计信息;
  4. 连续按 m 可以切换四种(包括隐藏) free 信息的显示方式;
  5. 连续按 E 可以切换 KB, MB, GB, TB, PB, EB 六种 free 信息显示的单位;

进程详细信息

top 命令的界面被分为泾渭分明的两部分, 下半部分是进程的详细信息, 展示特定进程的 cpu, 内存, 命令等信息, 本节主要介绍的就是下半部分: 进程详细信息;

PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
1   root      20   0   44752   6880   3504 S   0.0  0.2   2:29.89 systemd
2   root      20   0       0      0      0 S   0.0  0.0   0:00.20 kthreadd
3   root      20   0       0      0      0 S   0.0  0.0   0:06.73 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.36 migration/0

第一行的字段含义

PR:     priority
NI:     nice
VIRT:   virtual mem, 虚拟内存
RES:    resident mem, 常驻内存
SHR:    shared mem, 共享内存
S:      state: R(running), S(sleep), Z(zombie), T(terminate)
%CPU:   cpu  综合使用量
%MEM:   内存 综合使用量
TIME+:  进程的 cpu 时间

其中:
PR 为 rt 代表进程运行在实时态;
VIRT = RES + SWAP;
RES = CODE + DATA = SHR + 程序自身所占的物理内存;

进程详细信息 快捷键

  1. V 以树形结构显示各进程;
  2. c 详细/简略 显示 COMMAND 列的信息(带命令参数与否);
  3. enter/space 立即刷新指标;
  4. e 连续敲击 可以切换 KB, MB, GB, TB, PB 五种内存显示(VIRT, RES, SHR)的单位;
  5. d/s 改变 top 命令刷新指标的频率, 会出现交互提示, 输入指定的时间; 默认是 3s;
  6. M 以内存使用率从大到小排序;
  7. P 以 CPU 使用率从大到小排序;
  8. k kill 掉指定的进程, 会出现交互提示, 先输入 pid, 再输入 signal id;

注意, 第 8 条 kill 指定进程, 一定要以启动进程的用户执行 top 命令才有权限 kill 它; 或者更统一的, 直接用 sudo 执行 top 命令, 就有权限 kill 指定进程了;

参考文献

top 命令与操作及其参数指标总结

本文来自网络,不代表往事如风立场,转载请注明出处:https://www.pastlikewind.com/2019/06/13/290/

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

返回顶部