天天看点

top命令使用 内存

VIRT:virtual memory usage。Virtual这个词很神,一般解释是:virtual adj.虚的, 实质的, [物]有效的, 事实上的。到底是虚的还是实的?让Google给Define之后,将就明白一点,就是这东西还是非物质的,但是有效果的,不发生在真实世界的,发生在软件世界的等等。这个内存使用就是一个应用占有的地址空间,只是要应用程序要求的,就全算在这里,而不管它真的用了没有。写程序怕出错,又不在乎占用的时候,多开点内存也是很正常的。

RES:resident memory usage。常驻内存。这个值就是该应用程序真的使用的内存,但还有两个小问题,一是有些东西可能放在交换盘上了(SWAP),二是有些内存可能是共享的。

SHR:shared memory。共享内存。就是说这一块内存空间有可能也被其他应用程序使用着;而Virt - Shr似乎就是这个程序所要求的并且没有共享的内存空间。

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

最近使用top命令进行系统cpu和memory的监控,发现top的命令还是很强大的

# top

top - 05:47:41 up  3:03,  2 users,  load average: 1.24, 1.39, 1.26

Tasks:  67 total,   1 running,  66 sleeping,   0 stopped,   0 zombie

Cpu(s):  0.7%us,  0.7%sy,  0.0%ni, 98.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Mem:    506444k total,   380180k used,   126264k free,    37408k buffers

Swap:        0k total,        0k used,        0k free,   204136k cached

    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

 3695 root      25   0 94544  73m 2548 S  0.0 14.9   0:20.74 scand

top 的全屏对话模式可分为3部分:系统信息栏、命令输入栏、进程列表栏。

第一部分 -- 最上部的 系统信息栏 :

  第一行:top - 05:47:41 up  3:03,  2 users,  load average: 1.24, 1.39, 1.26

    “05:47:41”:为系统当前时刻,date查看。

    “up  3:03”:为系统启动后到现在的运作时间,时间格式为时:分。

    “2 users”:为当前登录到系统的用户,更确切的说是登录到用户的终端数 -- 同一个用户同一时间对系统多个终端的连接将被视为多个用户连接到系统,这里的用户数也将表现为终端的数目;

    “load average: 1.24, 1.39, 1.26”:系统负载 ,即任务队列的平均长度,后面的三个值分别为1分钟前、5分钟前、15分钟前到现在的平均数。

   第二行:Tasks:  67 total,   1 running,  66 sleeping,   0 stopped,   0 zombie

        “67 total”:进程总数

        “1 running”:正在运行的进程数 

        “28 sleeping”:睡眠的进程数 

        “0 stopped”:停止的进程数 

        “0 zombie”:僵尸进程数

   第三行:Cpu(s):  0.7%us,  0.7%sy,  0.0%ni, 98.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

        “0.7% us”:用户进程占用CPU百分比

        “0.7% sy”:内核进程占用CPU百分比 

        “0.0% ni”:用户进程空间内改变过优先级的进程占用CPU百分比 

        “98.7% id”:空闲CPU百分比 

        “0.0% wa”:等待输入输出的CPU时间百分比 

        “0.0% hi”:硬件中断请求时间    

        “0.0% si”:软终端请求时间

   第四行:Mem:    506444k total,   380180k used,   126264k free,    37408k buffers

        “506444k total”:物理内存总量

        “380180k used”:使用的物理内存总量

        “126264k free”:空闲内存总量

        “37408k buffers”:用作内核缓存的内存量

   第五行:Swap:        0k total,        0k used,        0k free,   204136k cached

        “0k total”:交换区总量

        “0k used”:使用的交换区总量

        “0k free”:空闲交换区总量

        “204136k cached”:缓冲的交换区总量

第二部分 -- 中间部分的内部命令提示栏(Swap所在行和PID所在行中间的空行):

  top 运行中可以通过 top 的内部命令对进程的显示方式进行交互式控制。内部命令如下表:

          <空格> -  立刻刷新

      s - 改变画面更新频率

      l - 关闭或开启第一部分第一行 top 信息的表示

      t - 关闭或开启第一部分第二行 Tasks 和第三行 Cpus 信息的表示

      m - 关闭或开启第一部分第四行 Mem 和 第五行 Swap 信息的表示

          c - 切换显示命令名称和完整命令行

      N - 以 PID 的大小的顺序排列表示进程列表

      P - 以 CPU 占用率大小的顺序排列进程列表

      M - 以内存占用率大小的顺序排列进程列表

          T - 根据时间、累计时间排序

          W - 将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法

      h - 显示帮助

      n - 设置在进程列表所显示进程的数量

      q - 退出 top

第三部分 -- 进程列表栏:

    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND

      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 

  默认情况下仅显示比较重要的  PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND  列。可以通过

下面的快捷键来更改显示内容。更改显示内容通过 f 键可以选择显示的内容。按 f 键之后会显示列的列表,按 a-z  即可显示或隐藏对应的列,最后按回车键确定。按 o 键可以改变列的显示顺序。按小写的 a-z 可以将相应的列向右移动,而大写的 A-Z  可以将相应的列向左移动。最后按回车键确定。按大写的 F 或 O 键,然后按 a-z 可以将进程按照相应的列进行排序。而大写的 R 键可以将当前的排序倒转。

继续阅读