Top 是 Linux 下常用的性能分析工具,能够实时动态显示当前系统负载情况、内存使用情况,以及各个进程资源占用情况。
通过 top 命令显示系统整体情况。示例如下:
top - 17:51:14 up 69 days, 20:06, 2 users, load average: 71.81, 71.99, 63.46
Tasks: 1335 total, 1 running, 1334 sleeping, 0 stopped, 0 zombie
%Cpu(s): 34.9 us, 6.0 sy, 0.1 ni, 58.9 id, 0.0 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem : 79180025+total, 53055686+free, 16692761+used, 94315792 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 61829075+avail MemPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND52974 hudson 20 0 160.1g 146.3g 73796 S 3893 19.4 1273:28 observer33773 root 39 19 764452 104396 4408 S 8.2 0.0 14:55.16 bianque_daemon_8951 root 20 0 3398328 16880 3284 S 4.3 0.0 1787:32 y_watchdog11959 root 10 -10 247688 107284 4508 S 3.9 0.0 4226:29 AliYunDun9321 root 20 0 577532 79328 4264 S 3.0 0.0 1074:18 asar98164 hudson 20 0 159020 3560 1572 R 1.6 0.0 0:00.14 top95053 root 16 -4 1936116 72160 4460 S 1.3 0.0 2699:29 h2o97939 root 20 0 169488 24716 788 S 1.3 0.0 0:00.13 vsar2529 root 20 0 162396 14628 2148 S 1.0 0.0 453:31.03 ob-sm-probe51856 root 39 19 2215292 56896 4072 S 1.0 0.0 561:25.46 argusage
-
第一行显示了系统整体情况。
top -系统当前时间 up 系统开机到现在的时间,用户在线个数,load average:系统 1 分钟、5 分钟、15 分钟的 CPU 负载信息 -
第二行显示了系统任务情况。
Tasks:任务总数 total,正在运行的进程个数 running,正在休眠的进程个数 sleeping, 已经停止的进程个数 stopped,僵死进程个数 zombie -
第三行显示了机器整体 CPU 情况。
%Cpu(s): 用户态进程占用 CPU 时间百分比 us,内核占用 CPU 时间百分比 sy,改变过优先级的进程占用 CPU 的百分比 ni,空闲 CPU 时间百分比 id,等待 I/O 的 CPU 时间百分比 wa,CPU 硬中断时间百分比 hi,CPU 软中断时间百分比 si
如果希望显示每一个 CPU 的信息,可在该界面按 1 来显示或取消显示。示例如下:
%Cpu0 : 24.3 us, 0.0 sy, 0.7 ni, 75.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu1 : 30.7 us, 0.7 sy, 1.0 ni, 67.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu2 : 40.7 us, 0.3 sy, 0.0 ni, 58.6 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
%Cpu3 : 39.1 us, 0.3 sy, 0.0 ni, 60.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu4 : 46.5 us, 0.0 sy, 0.0 ni, 53.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
%Cpu5 : 10.6 us, 0.3 sy, 0.3 ni, 88.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
-
第四行显示了系统内存信息。
KiB Mem:总物理内存,空闲物理内存,已使用物理内存,缓存的物理内存 -
第五行显示了交换区信息。
KiB Swap:交换区总量,空闲交换区,已使用的交换区,缓冲交换区 -
从第七行开始,用于显示每一个进程的信息。
- PID:进程的 ID。
- USER:进程拥有者。
- PR:进程的优先级别,越小越优先被执行。
- NI:进程 Nice 值。正值表示低优先级,负值表示高优先级,值为零则表示不会调整该进程的优先级。
- VIRT:进程占用的虚拟内存。
- RES:进程占用的物理内存。
- SHR:进程使用的共享内存。
- S:进程的状态。S 表示休眠,R 表示正在运行,Z 表示僵死状态,N 表示该进程优先值为负数。
- %CPU:进程的 CPU 使用率。
- %MEM:进程使用的物理内存和总内存的百分比。
- TIME+:该进程启动后占用的总 CPU 时间,即:占用 CPU 使用时间的累加值。
- COMMAND:进程启动命令名称。
可通过如下的交互命令,查看更多信息:
- H:显示线程信息,用于查看 OBServer 各个线程的状态。
- P:按 CPU 使用率排序。
- M:按内存使用率排序。
- I:显示正在运行的进程。
- O:添加过滤器。例如:COMMAND:observer 只显示进程名字是 observer 的进程。也适用于线程过滤,例如:COMMAND:RpcIO。