linux之性能分析工具top
top
top 是一个性能分析工具,能够实时显示系统中各个进程的资源占用状况,与Windows的任务管理器类似
格式
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
常用参数
-
-d 指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。
-
-p 通过指定监控进程ID来仅仅监控某个进程的状态
-
q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。
-
-S 指定累计模式
-
-s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险
-
-i 使top不显示任何闲置或者僵死进程
-
-c 显示整个命令行而不只是显示命令名
案例
第一行:任务队列信息,与uptime命令结果一致
系统当前时间:21:44:13
从本次开机到现在经过的时间:up 190 days
当前有几个用户登录到该机器: 1 user
平均负载值:load average: 0.12, 0.06, 0.05
average 后面的三个数分别是1分钟、5分钟、15分钟的负载情况
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了
第二行:Tasks 任务(进程)
总进程数: 87 total
正在运行的进程数(TASK_RUNNING): 2 running
睡眠的进程数(TASK_INTERRUPTIBLE和TASK_UNINTERRUPTIBLE): 85 sleeping
停止的进程数(TASK_STOPPED): 0 stopped
僵尸进程数(TASK_ZOMBIE): 0 zombie
第三行:cpu 状态信息
-
0.3 us(user space)进程在用户空间(user)消耗的CPU时间占比,不包含调整过优先级的进程
-
0.3 sy(sysctl)进程在内核空间(system)消耗的CPU时间占比
-
0.0 ni (niced)调整过用户态优先级的进程的CPU时间占比
-
99.3 id(idle)空闲的CPU时间占比
-
0.0 wa(wait)等待I/O完成的CPU时间占比
-
0.0 hi(hardware interrupt)处理硬中断的CPU时间占比
-
0.0 si (software interrupt)处理软中断的CPU时间占比
-
0.0 st 当Linux系统是在虚拟机中运行时,等待CPU资源的时间(steal time)占比
第四行:内存状态
以物理内存为例。free 命令也会打印出类似的信息。
- total 系统可用的物理内存总量
- free 当前已经使用的物理内存总量
- used 当前的空闲内存总量
- buff/cache 用作内核缓冲区的物理内存总量
第五行:swap 交换分区信息
- total 系统全部的交换区总量
- used 当前已经使用的交换区总量
- free 空闲的交换区总量
- avail 可用的交换区总量
控制显示单位
top 命令默认以 K 为单位显示内存大小。可以通过大写字母 E 来切换内存信息区域的显示单位。注意 E 不能控制任务区域中的内存单位。
第七行以下:各进程(任务)的状态监控
- PID 进程 ID
- USER 进程所有者的有效用户名称。简单说就是以哪个用户权限启动的进程
- PR 进程执行的优先级,PR 的值是以 Linux 内核的视角看到的进程执行的优先级
- NI 从用户视角看到的进程执行优先级。注意上图中 NI 值为 -20 的进程外,它们的 PR 值都是 0
- VIRT 进程使用的虚拟内存大小
- RES 进程使用的物理内存大小
- SHR 进程使用的共享内存的大小
- S 进程当前的状态。S 值有下面几种:
D 不可中断的睡眠状态(uninterruptible sleep)
I idle 状态
R 进程在 running 队列中,正在运行或准备运行(running)
S 睡眠状态(sleeping)
T 停止状态(stopped by job control signal)
t 跟踪状态(stopped by debugger during trace)
Z 僵尸状态(zombie) - %CPU 进程使用 CPU 的百分比
- %MEM 进程使用内存的百分比
- TIME+ 进程累计使用的 CPU 时间
- COMMAND 运行进程对应的程序
top 运行中可以通过 top 的内部命令对进程的显示方式进行控制
- s 改变画面更新频率
- l 关闭或开启第一部分第一行 top 信息的表示
- t 关闭或开启第一部分第二行 Tasks 和第三行 CPUs 信息的表示
- m 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示
- N 以 PID 的大小的顺序排列表示进程列表
- P 以 CPU 占用率大小的顺序排列进程列表
- M 以内存占用率大小的顺序排列进程列表
- h 显示帮助
- n 设置在进程列表所显示进程的数量
- q 退出 top
- s 改变画面更新周期
附
top 命令然后按数字“1”可监控每个逻辑 CPU 的状况。
如果不按1,则在 top 视图里面显示的是所有 CPU 的平均值。
案例
显示进程信息
top
显示完整命令
top -c
设置信息更新次数
top -n 2 #表示更新两次后终止更新显示
设置信息更新时间
top -d 3 #表示更新周期为3秒
显示指定的进程信息
top -p 139 #显示进程号为139的进程信息,CPU、内存占用率等