美文网首页Linux
Linux18.2_top命令详解

Linux18.2_top命令详解

作者: Y大宽 | 来源:发表于2019-05-29 20:04 被阅读7次

    关于ps命令的用法,见Linux_18下查看进程的启动和运行时间。虽然ps在收集系统上的进程信息很有用,但也有不足之处:它只能显示某个特定时间点的饿信息,如果想观察频繁换进换出的内存的运行趋势,ps就有点力不从心了。
    top命令和ps相似,可以实时显示进程信息。

    top - 18:56:37 up 23:03,  1 user,  load average: 296.20, 296.00, 302.87
    Tasks: 764 total,   1 running, 590 sleeping,   0 stopped,   0 zombie
    %Cpu(s): 14.1 us,  1.5 sy,  0.0 ni,  0.0 id, 83.2 wa,  0.0 hi,  1.1 si,  0.0 st
    KiB Mem : 65885076 total,   402748 free, 65326388 used,   155940 buff/cache
    KiB Swap:  2097148 total,      340 free,  2096808 used.    13324 avail Mem 
    
       PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND                                                                                 
     27687 pc        20   0 3240472 215596      0 S   3.3  0.3   7:14.96 java                                                                                    
     30658 pc        20   0 3173908 222532      0 S   3.3  0.3   8:13.48 java                                                                                    
     31401 pc        20   0 3240472 213156      0 S   3.3  0.3   7:34.65 java                                                                                    
     32428 pc        20   0 3307036 214048      0 S   3.3  0.3   9:56.77 java                                                                                    
     24691 pc        20   0 3373600 211868      0 S   2.8  0.3  10:11.30 java                                                                                    
     25199 pc        20   0 3373600 211508      0 S   2.8  0.3   5:15.19 java                                                                                    
     27693 pc        20   0 3240472 215908      0 S   2.8  0.3   7:06.08 java                                                                                    
     28596 pc        20   0 3173908 222992      0 S   2.8  0.3   8:51.75 java                                                                                    
     28842 pc        20   0 3307036 221788      0 S   2.8  0.3   7:00.92 java                                                                                    
     29396 pc        20   0 3307036 220716      0 S   2.8  0.3  10:03.62 java                                                                                    
     29761 pc        20   0 3307036 215060      0 S   2.8  0.3   5:42.24 java                                                                                    
     29773 pc        20   0 3307036 213004      0 S   2.8  0.3   4:55.32 java                                                                                    
     30576 pc        20   0 3173908 224252      0 S   2.8  0.3   7:07.25 java                                                                                    
     30824 pc        20   0 3173908 224200      0 S   2.8  0.3   8:20.90 java                                                                                    
     30933 pc        20   0 3240472 214660      0 S   2.8  0.3   6:35.04 java                                                                                    
     31062 pc        20   0 3307036 214744      0 S   2.8  0.3   8:29.36 java                                                                                    
     31120 pc        20   0 3307036 223212      0 S   2.8  0.3   9:35.15 java  
    

    解释如下:

    第一部分 显示系统概况

    第一行 系统的负载程度

    依次为:当前时间,系统的运行时间,登录的用户数,系统的平均负载,具体到本例

    18:56:37:当前系统时间
    up 23:03:系统已经运行的时间
    1 user:当前有1个用户登录系统
    load average: 296.20, 296.00, 302.87:最近1,5,15min的平均负载情况

    其中平均负载有3个值:最近1分钟的,最近5分钟的,最近15分钟的平均负载。值越大说明系统的负载越高。因为进程可能会有短期的突发性活动,一分钟高负载也正常,但如果近15分钟都很高,可能系统有问题。

    如何定义高负载?

    • 究竟什么程度才是高负载?这个值取决于系统的硬件配置以及系统上通常运行的程序。对于某个系统来说是高负载而对另外一个系统可能正常。
    • 通常,负载值超过2,就说明系统比较繁忙了

    第二行 进程概要信息

    top输出中,将进程叫任务(task),依次为:
    总任务数,运行,休眠,停止,僵化(的任务)

    Tasks: 763 total, 1 running, 590 sleeping, 0 stopped, 0 zombie
    总共763个任务,1个正在运行,590个在休眠,0个停止,0个僵尸
    僵化是进程完成了,但父进程没有响应。

    第三行 CPU概要

    依次为
    **用户,系统,运行,空闲,等待

    %Cpu(s): 14.1 us, 1.5 sy, 0.0 ni, 0.0 id, 83.2 wa, 0.0 hi, 1.1 si, 0.0 st
    14.1 us:用户空间占用CPU的百分比。
    1.5 sy:内核空间占用CPU的百分比。
    0.0 ni:改变过优先级的进程占用CPU的百分比
    0.0 id:空闲CPU百分比
    83.2 wa:IO等待占用CPU的百分比
    0.0 hi: 硬中断(Hardware IRQ)占用CPU的百分比
    1.1 si:软中断(Software Interrupts)占用CPU的百分比

    第四行 内存状态

    总共有多少内存,空闲多少,当前用了多少,缓存的内存量

    65885076 total :物理内存总量(64GB)
    406368 free:空闲的内存(40M)
    65322228 used使用中的内存
    156480 buff/cache缓存的内存

    第五行 swap交换分区信息,和第四行解释一致

    备注:

    • 第四行中使用中的内存总量(used)指的是现在系统内核控制的内存数,空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心。
    • 如果出于习惯去计算可用内存数,这里有个近似的计算公式:第四行的free + 第四行的buffers + 第五行的cached,按这个公式此台服务器的可用内存:18537836k +169884k +3612636k = 22GB左右。
    • 对于内存监控,在top里要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

    第二部分

    显示当前运行中的进程的详细列表,有些列和ps命名的输出类似分别解释如下

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

    相关文章

      网友评论

        本文标题:Linux18.2_top命令详解

        本文链接:https://www.haomeiwen.com/subject/gxgytctx.html