概述
top命令是Linux下常用的性能分析工具,常用来监控Linux的系统状况,比如cpu、内存的使用等。相当于Windows下的资源管理器,能够动态实时的显示系统中进程的资源占用情况。
top使用方法
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
参数说明:
- d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用回车(Enter)交互命令来改变之。
- p 通过指定监控进程ID来仅仅监控某个进程的状态。
- q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
- S 指定累计模式
- s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。
- i 使top不显示任何闲置或者僵死进程。
- c 显示整个命令行而不只是显示命令名
top命令显示过程中的一些交互命令:
- Ctrl + L :擦除并且重写屏幕
- h或者?:显示帮助画面(按 q or <Esc> 返回)
- c :切换显示命令名称和完整命令行。
- m:切换显示内存信息。
- M:根据驻留内存大小进行排序。
- P :根据CPU使用百分比大小进行排序。
- t :切换显示进程和CPU状态信息。
- T :根据时间或者累计时间进行排序。
- I :切换显示平均负载和CPU状态信息。
- k :终止一个进程;默认使用15信号,可以使用信号9来强制结束该进程。但是在安全模式下此命令被屏蔽。
- i :忽略闲置和僵死进程,开关式命令。
- q :退出程序。
- r :重新安排一个进程的优先级。默认值是10,输入一个正值使优先级降低;输入一个负值使优先级升高。
- S :切换到累计模式。
- s :改变两次刷新的延迟时间。单位为秒,如果有小数,切换为ms,输入0则系统不断的刷新,默认值是5.
- f或者F :从当前显示中添加或者删除项目。
- o或者O :改变显示项目的顺序。
- W:写top配置文件的方法。将当前设置写入~/toprc文件中。
top视图详情
下面是刚进入top的基本视图,我们来结合这个视图讲解各个数据的含义。
第一行:top
- 16:37:18 — 当前系统时间
- 85 days, 23:53 — 系统已经运行了85天23小时53分钟(在这期间服务器没有重启过)
- 1 users — 当前有2个用户登录系统
- load average: 1.13, 0.89, 1.41 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行:Tasks
- Tasks — 任务(进程),系统现在共有156个进程,其中1个处于运行中(running),155个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
第三行:Cpu状态 %Cpu(s)
- 11.4% us — 用户空间占用CPU的百分比。
- 2.3% sy — 内核空间占用CPU的百分比。
- 0.0% ni — 改变过优先级的进程占用CPU的百分比
- 84.5% id — 空闲CPU百分比
- 0.9% wa — IO等待占用CPU的百分比
- 0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
- 1.0% si — 软中断(Software Interrupts)占用CPU的百分比
- 0.0% st — 这一显示项单位为百分比,它的值表明你的系统花了百分之多少等待得到真正的cpu资源。在正常情况下在云平台下st最好为0,这表明你的vm得到了所有必要的cpu资源。如果这个值为50,表明你vm需要cpu时有一半时间在等待。如果这个值为100%,那么表明你的vm花了100%的时间等待真实的cpu资源。
第四行:内存状态 KiB Mem(单位k)
- 32947136 total — 物理内存总量(≈31.42GB)
- 32535760 used — 使用中的内存总量(≈31.02GB)
- 411376 free — 空闲内存总量(≈401.73M)
- 143216 buffers — 缓存的内存量(≈139.85M)
第五行:swap交换分区 KiB Swap(单位k)
- 0 total — 交换区总量
- 0 used — 使用的交换区总量
- 0 free — 空闲交换区总量
- 9226092 cached — 缓冲的交换区总量(≈8.80GB)
第六行是空行
第七行以下:各进程(任务)的状态监控
- PID — 进程id
- USER — 进程所有者
- PR — 进程优先级
- NI — nice值。负值表示高优先级,正值表示低优先级
- VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
- RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
- SHR — 共享内存大小,单位kb
- S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
- %CPU — 上次更新到现在的CPU时间占用百分比
- %MEM — 进程使用的物理内存百分比
- TIME+ — 进程使用的CPU时间总计,单位1/100秒
- COMMAND — 进程名称(命令名/命令行)
多核CPU监控
在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况:
服务器有8个逻辑CPU