linux 性能分析命令 top

top命令是 Linux 下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于 Windows 的任务管理器。

命令格式

top [参数]

命令功能:显示当前系统正在执行的进程的相关信息,包括进程 ID、内存占用率、CPU 占用率等

命令参数

  • -b 批处理

  • -c 显示完整的治命令

  • -I 忽略失效过程

  • -s 保密模式

  • -S 累积模式

  • -i <时间> 设置间隔时间

  • -u<用户名> 指定用户名

  • -p<进程号> 指定进程

  • -n<次数> 循环显示的次数

交互命令

在 top 命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了 s 选项, 其中一些命令可能会被屏蔽。

  • h 显示帮助画面,给出一些简短的命令总结说明
  • k 终止一个进程。
  • i 忽略闲置和僵死进程。这是一个开关式命令。
  • q 退出程序
  • r 重新安排一个进程的优先级别
  • S 切换到累计模式
  • s 改变两次刷新之间的延迟时间(单位为 s),如果有小数,就换算成 m s。输入 0 值则系统将不断刷新,默认值是 5 s
  • f 或者 F 从当前显示中添加或者删除项目
  • o 或者 O 改变显示项目的顺序
  • l 切换显示平均负载和启动时间信息
  • m 切换显示内存信息
  • t 切换显示进程和 CPU 状态信息
  • c 切换显示命令名称和完整命令行
  • M 根据驻留内存大小进行排序
  • P 根据 CPU 使用百分比大小进行排序
  • T 根据时间/累计时间进行排序
  • W 将当前设置写入~/.toprc 文件中

使用示例

显示进程信息

命令:

top

输出:

说明:

  • 统计信息区:前五行是当前系统情况整体的统计信息区。
    • 第一行,任务队列信息,同 uptime 命令的执行结果,具体参数说明情况如下:
1) 00:17:28 — 当前系统时间 
2) up 1 days, 20:01 — 系统已经运行了 1 天 20 小时 01 分钟(在这期间系统没有重启过的吆!)
3) 1 users — 当前有 1 个用户登录系统
4) load average: 0, 0, 0 — load average 后面的三个数分别是 1 分钟、5 分钟、15 分钟的负载情况。load average 数据是每隔 5 秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑 CPU 的数量,结果高于 5 的时候就表明系统在超负荷运转了。
  • 第二行,Tasks — 任务(进程),具体信息说明如下:系统现在共有 101 个进程,其中处于运行中的有 1 个,60 个在休眠(sleep),stoped 状态的有 0 个,zombie 状态(僵尸)的有 0 个。

  • 第三行,cpu 状态信息,具体属性说明如下:

5.9%us — 用户空间占用 CPU 的百分比。
3.4% sy — 内核空间占用 CPU 的百分比。
0.0% ni — 改变过优先级的进程占用 CPU 的百分比
90.4% id — 空闲 CPU 百分比
0.0% wa — IO 等待占用 CPU 的百分比
0.0% hi — 硬中断(Hardware IRQ)占用 CPU 的百分比
0.2% si — 软中断(Software Interrupts)占用 CPU 的百分比

备注:在这里 CPU 的使用比率和 windows 概念不同,需要理解linux 系统用户空间和内核空间的相关知识!

  • 第四行, 内存状态,具体信息如下:
32949016k total — 物理内存总量(32GB)
14411180k used — 使用中的内存总量(14GB)
18537836k free — 空闲内存总量(18GB)
169884k buffers — 缓存的内存量 (169M)
  • 第五行,swap 交换分区信息,具体信息说明如下:
32764556k total — 交换区总量(32GB)
0k used — 使用的交换区总量(0K)
32764556k free — 空闲交换区总量(32GB)
3612636k cached — 缓冲的交换区总量(3.6GB)
  • 第六行,空行。

  • 第七行以下:各进程(任务)的状态监控,项目列信息说明如下:

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 — 进程名称(命令名/命令行)

其他使用技巧:

多 U 多核 CPU 监控

在 top 基本视图中,按键盘数字“1”,可监控每个逻辑 CPU 的状况:


观察上图,服务器有 16 个逻辑 CPU,实际上是 4 个物理 CPU。再按数字键 1,就会返回到 top 基本视图界面。

高亮显示当前运行进程

敲击键盘“b”(打开/关闭加亮效果),top 的视图变化如下:

我们发现进程 id 为 2570 的“top”进程被加亮了,top 进程就是视图第二行显示的唯一的运行态(runing)的那个进程,可以通过敲击“y”键关闭或打开运行态进程的加亮效果。

进程字段排序

默认进入 top 时,各进程是按照 CPU 的占用量来排序的,在下图中进程 ID 为 28894 的 java 进程排在第一(cpu 占用 142%),进程 ID 为 574 的 java 进程排在第二(cpu 占用 16%)。

敲击b,再键盘x(打开/关闭排序列的加亮效果),top 的视图变化如下:

可以看到,top 默认的排序列是“%CPU”。

通过“shift + >”或“shift + <”可以向右或左改变排序列

下图是按一次”shift + >”的效果图,视图现在已经按照%MEM 来排序。

显示完整命令

命令:

top -c

显示指定的进程信息

命令:

top -p 574

转发:竹子博客,https://www.cnblogs.com/peida/archive/2012/12/24/2831353.html

Was this helpful?

0 / 0

发表回复 0