linux之性能分析工具top

简介: top 是一个性能分析工具,能够实时显示系统中各个进程的资源占用状况,与Windows的任务管理器类似。

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 显示整个命令行而不只是显示命令名

案例


微信图片_20220503113838.png


第一行:任务队列信息,与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


微信图片_20220503113844.png


第三行: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、内存占用率等
相关文章
|
1月前
|
监控 Unix Linux
Linux系统工具
Linux系统工具
44 6
|
27天前
|
监控 Java Linux
Linux系统之安装Ward服务器监控工具
【10月更文挑战第17天】Linux系统之安装Ward服务器监控工具
50 5
Linux系统之安装Ward服务器监控工具
|
10天前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
28 3
|
30天前
|
JSON JavaScript Linux
Linux系统之安装cook菜谱工具
【10月更文挑战第15天】Linux系统之安装cook菜谱工具
35 2
Linux系统之安装cook菜谱工具
|
18天前
|
缓存 监控 Linux
Linux性能分析利器:全面掌握perf工具
【10月更文挑战第18天】 在Linux系统中,性能分析是确保软件运行效率的关键步骤。`perf`工具,作为Linux内核自带的性能分析工具,为开发者提供了强大的性能监控和分析能力。本文将全面介绍`perf`工具的使用,帮助你成为性能优化的高手。
62 1
|
18天前
|
缓存 监控 Linux
掌握Linux性能分析:深入探索perf工具
【10月更文挑战第26天】
22 1
|
1月前
|
Web App开发 监控 JavaScript
一些常用的 Vue 性能分析工具
【10月更文挑战第2天】
75 1
|
2月前
|
SQL 缓存 关系型数据库
MySQL高级篇——性能分析工具
MySQL的慢查询日志,用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long-query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为 10,意思是运行10秒以上(不含10秒)的语句,认为是超出了我们的最大忍耐时间值。它的主要作用是,帮助我们发现那些执行时间特别长的 SOL 查询,并且有针对性地进行优化,从而提高系统的整体效率。当我们的数据库服务器发生阻塞、运行变慢的时候,检查一下慢查询日志,找到那些慢查询,对解决问题很有帮助。
MySQL高级篇——性能分析工具
|
2月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
456 2
|
2月前
|
监控 IDE Java
【Java性能调优新工具】JDK 22性能分析器:深度剖析,优化无死角!
【9月更文挑战第9天】JDK 22中的性能分析器为Java应用的性能调优提供了强大的支持。通过深度集成、全面监控、精细化分析和灵活报告生成等核心优势,性能分析器帮助开发者实现了对应用性能的全面掌控和深度优化。在未来的Java开发过程中,我们期待性能分析器能够继续发挥重要作用,为Java应用的性能提升贡献更多力量。