Linux性能分析——TOP命令详解

1、Top命令介绍

Linux系统中,Top命令主要用于实时运行系统的监控,包括Linux内核管理的进程或者线程的资源占用情况。

这个命令对所有正在运行的进程和系统负荷提供不断更新的概览信息,包括系统负载、CPU利用分布情况、内存使用、每个进程的内容使用情况等信息。

2、Top命令使用

Top的命令介绍如下:

top -hv|-bcHiOSs -d secs -n max -u|U user -p pid -o fld -w [cols]

常用的Top指令有:

top:启动top命令
top -c:显示完整的命令行
top -b:以批处理模式显示程序信息
top -S:以累积模式显示程序信息
top -n 2:表示更新两次后终止更新显示
top -d 3:设置信息更新周期为3秒
top -p 139:显示进程号为139的进程信息,CPU、内存占用率等
top -n 10:显示更新十次后退出

除此之外,在top进程运行过程中,两个最重要的功能是查看帮助(h 或 ?)和退出(q 或 Ctrl+C)。

3、Top信息详解

top展示界面由从上到下3部分组成

  1. 概览区域
  2. 表头
  3. 任务区域
  4. 还有一个输入/消息行,位于概览区域和表头之间。

image-20230811143742616

3.1 概览区详解

top - 14:46:08 up  5:46,  1 user,  load average: 0.00, 0.00, 0.00
  • 程序或者窗口的名称:top
  • 当前时间和系统的启动时间:14:46:08 up 5:46
  • 总共的用户数量:1 user
  • 过去1、5和15分钟的系统平均负载:load average: 0.00, 0.00, 0.00
Tasks: 290 total,   1 running, 212 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

这两行显示了任务数量和CPU状态

  • 第一行该信息对Task进行分类,包括running、sleeping、stopped、zombie四类,显示了系统中正在运行的任务的状态统计信息。具体来说,这里有291个任务总数,其中有1个任务正在运行,212个任务正在睡眠,0个任务已停止,0个任务为僵尸进程。
  • 第二行显示CPU的状态百分比
    • %Cpu(s): CPU使用率的统计信息。
    • us (user): 用户空间进程占用CPU的时间百分比。
    • sy (system): 内核空间进程占用CPU的时间百分比。
    • ni (nice): 用户进程以优先级调整过的占用CPU的时间百分比(通常不会有这个值)。
    • id (idle): CPU空闲的时间百分比。
    • wa (IO-wait): CPU等待I/O操作的时间百分比。
    • hi (hardware interrupt): CPU处理硬件中断的时间百分比。
    • si (software interrupt): CPU处理软件中断的时间百分比。
    • st: 被虚拟化环境偷取的时间百分比(通常不会有这个值)。
KiB Mem :  3994720 total,   525876 free,   595492 used,  2873352 buff/cache
KiB Swap:  2097148 total,  2096624 free,      524 used.  3114400 avail Mem

这两行表示内存的使用情况

  • 第一行表示物理内存,分为total、 free、 used 、 buff/cache
  • 第二行表示虚拟内存,分为total、free、used、avail

默认单位是KiB,使用按键E可以切换为MiB、GiB、TiB、PiB、EiB

KiB = kibibyte = 1024 bytes
MiB = mebibyte = 1024 KiB = 1,048,576 bytes
GiB = gibibyte = 1024 MiB = 1,073,741,824 bytes
TiB = tebibyte = 1024 GiB = 1,099,511,627,776 bytes
PiB = pebibyte = 1024 TiB = 1,125,899,906,842,624 bytes
EiB = exbibyte = 1024 PiB = 1,152,921,504,606,846,976 bytes

更多干货可见:高级工程师聚集地,助力大家更上一层楼!

3.2 任务区

任务区是按照列的形式来显示的,并且有多个字段可以用来查看进程的状态信息。

3.2.1 任务字段介绍

  • %CPU: CPU Usage,自上次屏幕更新以来任务占用的CPU时间份额,表示为总CPU时间的百分比。

  • %MEM: Memory Usage,进程使用的物理内存百分比

  • CODE:Code Size,可执行代码占用的物理内存量

  • COMMAND:Command Name or Command Line,用于显示输入的命令行或者程序名称

  • PID:Process Id,任务独立的ID,即进程ID

  • PPID:Parent Process Id,父进程ID

  • UID:User Id,任务所有者的用户ID

  • USER:User Name,用户名

  • RUSER:Real User Name,实际的用户名

  • TTY:Controlling Tty,控制终端名称

  • TIME:CPU TIME,该任务CPU总共运行的时间

  • TIME+:同TIME,其粒度更细

  • OOMa:Out of Memory Adjustment Factor,内存溢出调整机制,这个字段会被增加到当前内存溢出分数中,来决定什么任务会被杀掉,范围是-1000到+1000。

  • OOMs:Out of Memory Score,内存溢出分数,这个字段是用来选择当内存耗尽时杀掉的任务,范围是0到+1000。0的意思是绝不杀掉,1000的意思是总是杀掉。

  • S:Process Status,表示进程状态信息

    • D: 不可中断休眠
    • I:空闲
    • R:运行中
    • S:休眠
    • T:被任务控制信号停止
    • t:在跟踪期间被调试器停止
    • Z:僵尸

相关属性有很多,可以使用man top查看,这里先列举这些。

3.2.2 字段管理

我们输入top后,默认只显示一部分属性信息,我们可以自行管理想要的属性信息。

我们输入F或者f,进入字段管理功能,用于选择想要的字段信息

按键 功能
↑、↓ 光标上下移动选择
空格、d 切换
s 设置为排序依据字段
a、w 在4种窗口中切换:1.默认,2.任务,3.内存,4.用户
Esc键、q 退出当前窗口

4、交互命令详解

top的功能很多,基本能够查看进程的各种状态信息,其中还有一些交互式的命令,方便我们更好的查看系统状态。

在top主界面中,我们输入下面的命令

命令 功能
h、? 帮助信息查看,涵盖所有的快捷键
空格、回车按键 手动刷新界面信息
q、ESC按键 退出
B 粗体显示功能
d、s 改变间隔时间
E、e 切换内存显示的单位,从KiB到EiB
g 然后输入1-4其中一个数字,选择哪种窗口(1.默认,2.任务,3.内存,4.用户)
H 进程、线程显示切换
k 输入PID信息,杀掉一个任务
Z 改变配色

上面介绍了一些比较常见的交互式命令,还有更多需要你去探索哦!

Linux性能分析——TOP命令详解

1、Top命令介绍

Linux系统中,Top命令主要用于实时运行系统的监控,包括Linux内核管理的进程或者线程的资源占用情况。

这个命令对所有正在运行的进程和系统负荷提供不断更新的概览信息,包括系统负载、CPU利用分布情况、内存使用、每个进程的内容使用情况等信息。

2、Top命令使用

Top的命令介绍如下:

top -hv|-bcHiOSs -d secs -n max -u|U user -p pid -o fld -w [cols]

常用的Top指令有:

top:启动top命令
top -c:显示完整的命令行
top -b:以批处理模式显示程序信息
top -S:以累积模式显示程序信息
top -n 2:表示更新两次后终止更新显示
top -d 3:设置信息更新周期为3秒
top -p 139:显示进程号为139的进程信息,CPU、内存占用率等
top -n 10:显示更新十次后退出

除此之外,在top进程运行过程中,两个最重要的功能是查看帮助(h 或 ?)和退出(q 或 Ctrl+C)。

3、Top信息详解

top展示界面由从上到下3部分组成

  1. 概览区域
  2. 表头
  3. 任务区域
  4. 还有一个输入/消息行,位于概览区域和表头之间。

image-20230811143742616

3.1 概览区详解

top - 14:46:08 up  5:46,  1 user,  load average: 0.00, 0.00, 0.00
  • 程序或者窗口的名称:top
  • 当前时间和系统的启动时间:14:46:08 up 5:46
  • 总共的用户数量:1 user
  • 过去1、5和15分钟的系统平均负载:load average: 0.00, 0.00, 0.00
Tasks: 290 total,   1 running, 212 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.1 sy,  0.0 ni, 99.9 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

这两行显示了任务数量和CPU状态

  • 第一行该信息对Task进行分类,包括running、sleeping、stopped、zombie四类,显示了系统中正在运行的任务的状态统计信息。具体来说,这里有291个任务总数,其中有1个任务正在运行,212个任务正在睡眠,0个任务已停止,0个任务为僵尸进程。
  • 第二行显示CPU的状态百分比
    • %Cpu(s): CPU使用率的统计信息。
    • us (user): 用户空间进程占用CPU的时间百分比。
    • sy (system): 内核空间进程占用CPU的时间百分比。
    • ni (nice): 用户进程以优先级调整过的占用CPU的时间百分比(通常不会有这个值)。
    • id (idle): CPU空闲的时间百分比。
    • wa (IO-wait): CPU等待I/O操作的时间百分比。
    • hi (hardware interrupt): CPU处理硬件中断的时间百分比。
    • si (software interrupt): CPU处理软件中断的时间百分比。
    • st: 被虚拟化环境偷取的时间百分比(通常不会有这个值)。
KiB Mem :  3994720 total,   525876 free,   595492 used,  2873352 buff/cache
KiB Swap:  2097148 total,  2096624 free,      524 used.  3114400 avail Mem

这两行表示内存的使用情况

  • 第一行表示物理内存,分为total、 free、 used 、 buff/cache
  • 第二行表示虚拟内存,分为total、free、used、avail

默认单位是KiB,使用按键E可以切换为MiB、GiB、TiB、PiB、EiB

KiB = kibibyte = 1024 bytes
MiB = mebibyte = 1024 KiB = 1,048,576 bytes
GiB = gibibyte = 1024 MiB = 1,073,741,824 bytes
TiB = tebibyte = 1024 GiB = 1,099,511,627,776 bytes
PiB = pebibyte = 1024 TiB = 1,125,899,906,842,624 bytes
EiB = exbibyte = 1024 PiB = 1,152,921,504,606,846,976 bytes

更多干货可见:高级工程师聚集地,助力大家更上一层楼!

3.2 任务区

任务区是按照列的形式来显示的,并且有多个字段可以用来查看进程的状态信息。

3.2.1 任务字段介绍

  • %CPU: CPU Usage,自上次屏幕更新以来任务占用的CPU时间份额,表示为总CPU时间的百分比。

  • %MEM: Memory Usage,进程使用的物理内存百分比

  • CODE:Code Size,可执行代码占用的物理内存量

  • COMMAND:Command Name or Command Line,用于显示输入的命令行或者程序名称

  • PID:Process Id,任务独立的ID,即进程ID

  • PPID:Parent Process Id,父进程ID

  • UID:User Id,任务所有者的用户ID

  • USER:User Name,用户名

  • RUSER:Real User Name,实际的用户名

  • TTY:Controlling Tty,控制终端名称

  • TIME:CPU TIME,该任务CPU总共运行的时间

  • TIME+:同TIME,其粒度更细

  • OOMa:Out of Memory Adjustment Factor,内存溢出调整机制,这个字段会被增加到当前内存溢出分数中,来决定什么任务会被杀掉,范围是-1000到+1000。

  • OOMs:Out of Memory Score,内存溢出分数,这个字段是用来选择当内存耗尽时杀掉的任务,范围是0到+1000。0的意思是绝不杀掉,1000的意思是总是杀掉。

  • S:Process Status,表示进程状态信息

    • D: 不可中断休眠
    • I:空闲
    • R:运行中
    • S:休眠
    • T:被任务控制信号停止
    • t:在跟踪期间被调试器停止
    • Z:僵尸

相关属性有很多,可以使用man top查看,这里先列举这些。

3.2.2 字段管理

我们输入top后,默认只显示一部分属性信息,我们可以自行管理想要的属性信息。

我们输入F或者f,进入字段管理功能,用于选择想要的字段信息

按键 功能
↑、↓ 光标上下移动选择
空格、d 切换
s 设置为排序依据字段
a、w 在4种窗口中切换:1.默认,2.任务,3.内存,4.用户
Esc键、q 退出当前窗口

4、交互命令详解

top的功能很多,基本能够查看进程的各种状态信息,其中还有一些交互式的命令,方便我们更好的查看系统状态。

在top主界面中,我们输入下面的命令

命令 功能
h、? 帮助信息查看,涵盖所有的快捷键
空格、回车按键 手动刷新界面信息
q、ESC按键 退出
B 粗体显示功能
d、s 改变间隔时间
E、e 切换内存显示的单位,从KiB到EiB
g 然后输入1-4其中一个数字,选择哪种窗口(1.默认,2.任务,3.内存,4.用户)
H 进程、线程显示切换
k 输入PID信息,杀掉一个任务
Z 改变配色

上面介绍了一些比较常见的交互式命令,还有更多需要你去探索哦!

img

Linux性能分析——TOP命令详解的更多相关文章

  1. Linux下top命令详解

    Linux下top命令详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不断刷 ...

  2. Linux上的free命令详解、swap机制

    Linux上的free命令详解   解释一下Linux上free命令的输出. 下面是free的运行结果,一共有4行.为了方便说明,我加上了列号.这样可以把free的输出看成一个二维数组FO(Free ...

  3. LINUX经常使用的命令详解

    LINUX经常使用的命令详解 源地址:http://blog.itpub.net/29065182/viewspace-1189162/ 1.man 对你熟悉或不熟悉的命令提供帮助解释  eg:man ...

  4. Top 命令详解

    Top 命令详解 先感受一下top命令的执行结果吧!哈哈-- top - 17:32:34 up 3 days, 8:04, 5 users, load average: 0.09, 0.12, 0. ...

  5. Linux CAT与ECHO命令详解 <<EOF EOF

    Linux CAT与ECHO命令详解 cat命令是Linux下的一个文本输出命令,通常是用于观看某个文件的内容的: cat主要有三大功能: .一次显示整个文件. $ cat filename .从键盘 ...

  6. [r]Ubuntu Linux系统下apt-get命令详解

    Ubuntu Linux系统下apt-get命令详解(via|via) 常用的APT命令参数: apt-cache search package 搜索包 apt-cache show package ...

  7. Linux CAT与ECHO命令详解

    Linux CAT与ECHO命令详解 cat命令是Linux下的一个文本输出命令,通常是用于观看某个文件的内容的: cat主要有三大功能: 1.一次显示整个文件. $ cat filename 2.从 ...

  8. (转)Linux: dirname、basename命令详解

    Linux: dirname.basename命令详解 原文:http://blog.sina.com.cn/s/blog_3f63916f010143vo.html 一.dirname指令 1.功能 ...

  9. Linux 性能分析 工具命令

    背景知识:具备背景知识是分析性能问题时需要了解的.比如硬件 cache:再比如操作系统内核.应用程序的行为细节往往是和这些东西互相牵扯的,这些底层的东西会以意想不到的方式影响应用程序的性能,比如某些程 ...

  10. Linux下面的yum命令详解

    yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器.基於RPM包管理,能够从指定的服务器自动下载RP ...

随机推荐

  1. 华企盾DSC邮件服务器测试连接提示Bad login or password(账号密码错误)

    解决方法:出现该提示说明账号和密码有一个填错了,注意:这里的密码不是邮箱本身的密码,是授权码,具体可以在邮箱设置中查看,而且必须开启smtp服务才能正常使用.

  2. 万界星空科技五金家具企业MES案例介绍

    五金家具行业MES解决方案 MES系统如何与家具企业生产相匹配?相较于其它大多数工业软件,MES系统无疑是受企业欢迎的软件之一.MES系统处于制造生产企业信息化的核心领域,有着承上启下的作用.那MES ...

  3. 自定义md-loader来简单高效的维护组件文档

    个人觉得,组件库最难的不是开发,而是使用,怎么才能让组内同事都用起来,这才是关键 背景 虽然现在开源的组件库很多,但每个项目里还是或多或少都会有人封装出一些项目内通用的基础组件.业务组件 我参与过多个 ...

  4. JVM优化:如何进行JVM调优,JVM调优参数有哪些

    Java虚拟机(JVM)是Java应用运行的核心环境.JVM的性能优化对于提高应用性能.减少资源消耗和提升系统稳定性至关重要.本文将深入探讨JVM的调优方法和相关参数,以帮助开发者和系统管理员有效地优 ...

  5. k8s卷管理-2

    目录 k8s卷管理-2 pv和pvc pv pv的定义 pvc pvc的定义 pv和pvc的绑定关系 手动指定pv与pvc绑定 pod使用pvc pod挂载pvc 访问模式的区别 k8s卷管理-2 之 ...

  6. K8S系列一:概念入门

    K8S系列一:概念入门 写在前面 本文组织方式: K8S的架构.作用和目的.需要首先对K8S整体有所了解. K8S是什么? 为什么是K8S? K8S怎么做? K8S的重要概念,即K8S的API对象.要 ...

  7. cookie的一些知识点总结

    一.cookie的种类 sessionID 这个ID是会话性的,只要关闭了当前浏览器,这个ID会消失,需要调用getSessoin重新获取一个新的session 会话性cookie 这个cookie也 ...

  8. 科技抗疫,少年可期,为这群有AI的天使开发者疯狂打call

    摘要:2020年初新冠突发,在这场抗疫的战斗中,让我们深刻体会到,疫情与每一个人息息相关.有这样一群来自华中科技大学的师生项目团队,他们利用AI技术,助力全球抗疫,他们是怎么做的呢?让我们一起来看看吧 ...

  9. 数据库运维家中常备:上限约400MB/s,比COPY等工具还好用的数据利器

    摘要:随着数据仓库业务的发展,GDS使用场景日益增多,这就要求GDS仍要不断迭代,充分深入挖掘用户需求,提高产品化程度. 1. GDS定位 GDS是GaussDB(DWS)提供的一个数据导入导出工具, ...

  10. 2天完成17TB数据量迁移,华为云数据库是如何做的?

    摘要:童年时候,我们会对着墙上挂着的中国地图,来认识一处处山川河流和城市人文.如今,数字化时代下,传统的地图已经不能满足人们的需求,如何获取各种丰富的地理内容和实时动态信息成为现代人普遍的地理信息诉求 ...