• Linux Top 详细介绍,包含task排序


    Linux Top

    当我们在终端输入 top 命令时,会弹出一个变化的页面,打印出当前系统的大量重要指标,以及很多进程当前的运行情况:
    在这里插入图片描述

    可以看到,top 命令主要是两部分,第一部分为 头部指标,打印的是当前系统级别指标;第二部分为 进程任务监控,打印各个进程的当前运行情况。

    头部指标

    我们从上往下,逐行进行介绍。

    top

    这一行与 uptime 命令的输出极其相似:

    在这里插入图片描述

    打印的参数意义为:

    • 21:18:48 当前系统时间。
    • up 4:40 当前系统已经连续运行的时间。
    • 4 users 当前登陆的用户数量。
    • load average: 0.00, 0.01, 0.05 当前的平均负载: 5/10/15 分钟的平均负载。

    其中 load average 是每 5 秒钟检查一次活跃的进程数,然后按照特定的算法计算的得出。使用
    这 个 负 载 数 ÷ 逻 辑 C P U 个 数 > 1 这个负载数 ÷ 逻辑CPU个数 > 1 ÷CPU>1

    说明系统已经在超负荷运转了。

    这一行在 top 页面时,可以通过 l 进行开关。

    Task

    这行标识系统当前运行的进程有多少,多少个正在运行,有多少个在休眠,有多少个是 stopped 状态, 僵尸状态有多少个。

    在这里插入图片描述

    %Cpu

    这行标识当前 CPU 的负载情况,显示的是百分比单位。

    在这里插入图片描述

    • us

    运行用户进程(未调整优先级)所占用的 cpu 时间,如果这个数很大,那么说明当前瓶颈很可能在 cpu 上,程序大多数为计算密集型。

    • sy

    运行内核进程所占用的 cpu 时间。如果这个数较大,一般说明服务器资源较小,或出现其他问题。

    • ni

    us 相同,都是运行用户进程所占用的 cpu 时间,如果这个数很大,但他是调整优先级的进程。

    • wa

    用于等待 io 完成的 cpu 时间,如果这个值很大,说明程序大多数为 io 密集型。这时候可能 cpu 也会比较繁忙,因为一直在切换上下文。

    • hi

    处理硬件中断的 cpu 时间。

    • si

    处理软件中断的 cpu 时间。

    • st

    虚拟机 hypervisor 占用的 cpu 时间,如果当前处于一个 hypervisor 下的 vm,这个 hypervisor 其实也是要消耗一部分 cpu 处理时间的。

    top 命令界面,使用 t 进行切换,可以转换 %cpu 和 tasks 这两行的表达显示。

    KiB Mem & KiB SWap

    这两行标示的是内存的使用情况,类似于 free 命令的结果,但有区别:

    在这里插入图片描述

    free # free 命令结果
    在这里插入图片描述

    类似于 task 和 %Cpu 行,使用 m 可以切换 Kib Mem 和 KiB Swap 行的表示方式。

    Kib Mem 指标
    • Mem total

    物理内存总量。

    • Mem free

    内存空间空闲总量。

    • Mem used

    使用中的内存总量。

    • Mem buff/cache

    内存中缓存的占用,如果开了关系型数据库,一般此类会占用较多。

    Kib Swap 指标
    • Swap total

    交换分区总量。

    • Swap used

    交换分区占用量。

    • Swap free

    交换分区空闲总量。

    • Swap avial Mem

    交换分区中缓冲的总量。

    理解

    如果用 windows 的内存管理来看待这些指标是不行的,windows 是每个程序使用多少,占用多少;但 linux 有内存管理的特殊性,不能单单只看 free 这一项来认为我们内存空间只有这么多了。

    Mem 中内存总量 used 指的是现在系统内核控制的内存大小,而 free 是内核认为还未纳入其管控的数量(如果你现在是虚拟机就知道我们给虚拟机 16G mem,并不是立马就占用了 16G。)。而 used 代表控制的内存大小,并不是当前程序正在使用的,而最多只能表示使用过,在使用后 used 并不会变为 free,所以理论上 free 只会越来越少,并不能通过这一个指标来判断当前服务器内存已经不足。

    但我们总是想看到当前系统还剩余多少内存可以给新开的程序使用,这里有个简易的公式:

    f r e e + b u f f e r s + c a c h e d   = a v a i l a b l e free + buffers + cached ~= available free+buffers+cached =available

    而对于 Swap 空间,如果 Swap空间大小一直在不停变化,说明内核在不断在 Mem 和 Swap 两个空间中交换数据,说明 Mem 空间已经无法满足,Swap 中已经开始占用,系统内存真正不够用了!

    进程任务监控

    监控此时此刻系统中运行的任务情况:

    • PID 进程id,代表进程的唯一标识(那个该死的屁ID)

    • USER 该进程所有者的实际用户名

    • PR 进程的优先级,如果是字母rt标识这些进程处于实时优先级 rt_priority

    这个值是最终的优先级标识,越大,优先级越高。

    • NI nice值,-20~20,越小优先级越高,用户最大设置为19.

    这个值,设置后linux自己调度计算出最终优先级PR

    • VIRT 进程使用的虚拟内存总量,单位为kb,计算公式为:

    S W A P + R E S = V I R T SWAP+RES=VIRT SWAP+RES=VIRT

    • RES 进程使用(还未被换出的)物理内存大小,单位kb,计算公式为:
      R E S = C O D E + D A T A RES=CODE+DATA RES=CODE+DATA

    • S 当前进程状态

    • D 不可中断的睡眠状态

    • R 运行

    • S 睡眠

    • T 跟踪/停止

    • Z 僵尸进程

    • %CPU 占用的 cpu 百分比

    • %MEM 占用的 mem 百分比

    • TIME+ 运行时间

    • COMMAND 进程名称

    如果想看具体的进程路径或者启动命令,可以按 c 进行切换。( ls -ltr /proc/$PID/exe)

    单位都可以通过 e 进行切换:

    在这里插入图片描述

    排序

    默认排序是按照当前 CPU 排序,然后按照 PID 进行排序,我们更多的时候是希望自定义各类排序。我们可以在 top 命令期间按下:

    P 以 cpu 占据时间百分比进行排序。

    M 以 mem 占据时间百分比进行排序。

    T 以积累占用 cpu 时间进行排序。

    当然,我们还可以通过其他办法进行排序,比如:bx 也是博主经常使用的方式。

    在这里插入图片描述

    然后可以使用 shift+<shift+> 进行左右移动,按照 head 头进行降序排序。

    其中 b 为高亮,x 为选中排序。

    进程控制界面

    top 命令界面,按下 f 能够进入进程控制页面。

    在这个页面中,使用 空格 或者 d 能切换是否需要显示。

    使用 s 来选择以那一列进行排序,

    使用 进行命令选择。

    q 退出到之前的页面。

    在这里插入图片描述

    帮助文档页面

    top 命令页面,按下 h 可以进入帮助文档页面,里面详细的说明了各种使用参数:
    在这里插入图片描述### 管理进程

    杀死进程

    k 可以给对应 pid 一个 kill -9 信号,用来杀死进程。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t4UI6YiD-1669301427531)(static/boxcni80uVzIZ54Cdcy8Kb4ORnf.png)]

    nice 赋值

    r 命令可以重新给一个 nice 值,进行优先级排序

    退出

    q 或者 ctrl+c

  • 相关阅读:
    K8S MetalLB工作原理详解:地址分配、广播模式(Layer2模式、BGP模式)、工作過程
    业务流程管理BPM到底有什么用
    【知识网络分析】研究机构合作网络(co-investigator institution)
    JVM优化案例实战-手动模拟Young GC
    micro-app 研究-提前准备
    复制控制 copy control(非平凡的类)
    VP视频结构化框架
    Day05-docker-compose与私有仓库
    【STM32】DMA(直接存储器访问)
    任务执行大数据量与高并发方案
  • 原文地址:https://blog.csdn.net/qq_36610426/article/details/128028560