top

0、系统平均负载

系统平均负载:特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:

1、它没有在等待I/O操作的结果

2、它没有主动进入等待状态(也就是没有调用’wait’)

3、没有被停止(例如:等待终止)

1、进程

进程分为三种状态,

1)阻塞的进程blocked process。当进程阻塞时,进程会等待I/O设备的数据或者系统调用。

2)是可运行的进程runnable process

3)正在运行的进程running process。

进程可运行状态时,它处在一个运行队列run queue中,与其他可运行进程争夺CPU时间。 系统的load是指正在运行running one和准备好运行runnable one的进程的总数。比如现在系统有2个正在运行的进程,3个可运行进程,那么系统的load就是5。load average就是一定时间内的load数量。

进程运行时长为所有处理器内核的处理时间加上线程在队列中等待的时间。

一、VIRT:virtual memory usage 虚拟内存

1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量

二、RES:resident memory usage 常驻内存

1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小

三、SHR:shared memory 共享内存

1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来

四、DATA

1、数据占用的内存。如果top没有显示,按f键可以显示出来。
2、真正的该程序要求的数据空间,是真正在运行中要使用的。

五、top命令详解

    下面详细介绍它的使用方法。
    top - 01:06:48 up  1:22,  1 user,  load average: 0.06, 0.60,  0.48
    Tasks:  29 total,   1 running,  28 sleeping,   0 stopped,   0  zombie
    Cpu(s):  0.3% us,  1.0% sy,  0.0% ni, 98.7% id,  0.0% wa,  0.0%  hi,  0.0% si
    Mem:    191272k total,   173656k used,    17616k free,    22052k  buffers
    Swap:   192772k total,        0k used,   192772k free,   123988k  cached
                
    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM     TIME+  COMMAND
    1379 root      16   0  7976 2456 1980 S  0.7  1.3   0:11.03  sshd
    14704 root      16   0  2128  980  796 R  0.7  0.5   0:02.72 top
    1 root      16   0  1992  632  544 S  0.0  0.3   0:00.90 init
    2 root       34  19     0    0    0 S  0.0  0.0   0:00.00 ksoftirqd/0
    3 root       RT   0     0    0    0 S  0.0  0.0   0:00.00  watchdog/0
     
    统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime  命令的执行结果。其内容如下:
    01:06:48                    当前时间
    up  1:22                    系统运行时间,格式为时:分
    1   user                    当前登录用户数
    load average: 0.06, 0.60, 0.48    系统负载,即任务队列的平均长度。
       三个数值分别为  1分钟、5分钟、15分钟前到现在的平均值。
     
    第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:
    Tasks: 29 total    进程总数
    1 running    正在运行的进程数
    28 sleeping    睡眠的进程数
    0 stopped    停止的进程数
    0 zombie    僵尸进程数
    Cpu(s): 0.3% us    用户空间占用CPU百分比
    1.0% sy            内核空间占用CPU百分比
    0.0% ni            用户进程空间内改变过优先级的进程占用CPU百分比
    98.7% id    空闲CPU百分比
    0.0% wa            等待输入输出的CPU时间百分比
    0.0% hi    
    0.0% si    
     
    最后两行为内存信息。内容如下:
    Mem: 191272k total    物理内存总量
    173656k used            使用的物理内存总量
    17616k free            空闲内存总量
    22052k buffers            用作内核缓存的内存量
    Swap: 192772k total    交换区总量
    0k used                    使用的交换区总量
    192772k free            空闲交换区总量
    123988k cached            缓冲的交换区总量。
                内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,
                该数值即为这些内容已存在于内存中的交换区的大小。
                相应的内存再次被换出时可不必再对交换区写入。
     
    进程信息区统计信息区域的下方显示了各个进程的详细信息。首先来认识一下各列的含义。
    列名    含义
    PID    进程id
    PPID    父进程id
    RUSER    Real user name
    UID    进程所有者的用户id
    USER    进程所有者的用户名
    GROUP    进程所有者的组名
    TTY    启动进程的终端名。不是从终端启动的进程则显示为 ?
    PR    优先级
    NI    nice值。负值表示高优先级,正值表示低优先级
    P    最后使用的CPU,仅在多CPU环境下有意义
    %CPU    上次更新到现在的CPU时间占用百分比
    TIME    进程使用的CPU时间总计,单位秒
    TIME+    进程使用的CPU时间总计,单位1/100秒
    %MEM    进程使用的物理内存百分比
    VIRT    进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
    SWAP    进程使用的虚拟内存中,被换出的大小,单位kb。
    RES    进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
    CODE    可执行代码占用的物理内存大小,单位kb
    DATA    可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
    SHR    共享内存大小,单位kb
    nFLT    页面错误次数
    nDRT    最后一次写入到现在,被修改过的页面数。
    S    进程状态。
                D=不可中断的睡眠状态
                R=运行
                S=睡眠
                T=跟踪/停止
                Z=僵尸进程
    COMMAND    命令名/命令行
    WCHAN    若该进程在睡眠,则显示睡眠中的系统函数名
    Flags    任务标志,参考 sched.h

 

 

 

 参考:https://www.cnblogs.com/zhoug2020/p/6336453.html

原文地址:https://www.cnblogs.com/djx571/p/11136676.html