top & free

昨天机器跑vim觉得有点卡,怀疑是机器的内存不够用。一直都使用的原装2G内存。

用top和free察看了一下机器的状况,顺便学习了一下这两个命令的参数。

top

这是我的机器现在的top状况:

从google搜索到的资料整合我自己的情况,如下:

前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:

  • 10:17:55 当前时间
  • up 2:05 系统运行时间,格式为时:分
  • 2 user 当前登录用户数
  • load average: 0.20, 0.47, 0.42 系统负载,即任务队列的平均长度。

第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:

  • Tasks: 163 total 进程总数
  • 1 running 正在运行的进程数
  • 161 sleeping 睡眠的进程数
  • 0 stopped 停止的进程数
  • 1 zombie 僵尸进程数 (不知道是什么进程)
  • Cpu(s)…. 用户空间占用CPU百分比 (剩余很多,看来我的CPU还是挺强劲的)
  • sy 内核空间占用CPU百分比
  • ni 用户进程空间内改变过优先级的进程占用CPU百分比
  • id 空闲CPU百分比
  • wa 等待输入输出的CPU时间百分比

最后两行为内存信息。内容如下:

  • Mem: 1979784k total 物理内存总量
  • 1489180k used 使用的物理内存总量
  • 490604k free 空闲内存总量
  • 69592k buffers 用作内核缓存的内存量
  • Swap: 4200992k total 交换区总量
  • 0k used 使用的交换区总量
  • 4200992k free 空闲交换区总量
  • 686068k 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 任务标志

另外,在top运行状态下按o健(小写的o,不是零),可以选择需要显示的列。大写的O健可以选择排序。

从top上看到,似乎可用的内存非常的少了。但是实际上,linux下的内存计算并不是这样的。我们看看free的结果。

free

这是我的机器当前的free结果:
[code language="powershell"]
[tang@thinktang ~]$ free
total       used      free     shared  buffers  cached
Mem:       1979784  1498156  481628      0     72068   689396
-/+ buffers/cache:   736692  1243092
Swap:      4200992       0      4200992
[/code]

第二行(mem):

  • total:总计物理内存的大小。
  • used:已使用多大。
  • free:可用有多少。
  • Shared:多个进程共享的内存总额。
  • Buffers/cached:磁盘缓存的大小。

第三行(-/+ buffers/cached):

  • used:已使用多大。
  • free:可用有多少。

第二行(mem)的used/free与第三行(-/+ buffers/cache) used/free的区别:

这两个的区别在于使用的角度来看,第二行是从OS的角度来看,因为对于OS,buffers/cached 都是属于被使用,所以他的可用内存是 481628k,已用内存是1498156k,其中包括内核(OS)使用 + Application使用的 + buffers + cached.

第三行所指的是从应用程序角度来看,对于应用程序来说,buffers/cached 是等于可用的,因为buffer/cached是为了提高文件读取的性能,当应用程序需在用到内存的时候,buffer/cached会很快地被回收。
所以从应用程序的角度来说,可用内存 = 系统free memory + buffers + cached.

结论

因此,我的机器这里可用的内存是:1243092=481628+72068+689396,大约是总内存的60%。2G的内存,在现阶段完全够用了。

但是为什么vim会突然间运行缓慢呢?看来只能另外找原因了。

1 comment to top & free

  • [...] 一点折腾 2010/11/10 16:32   没有评论   ArchLinux, Xfce   前段时间提到终端运行速度变慢的情况,一直都没有查出来,后来查看~/.xsession-error,里面有一万多行的内容,而且大多数都和KDE有关。想起之前为了试试KDE下的一些工具,索性安装了完整的KDE,之后使用起来感觉不习惯,又删掉了部分,但是没有仔细的清除。于是便将KDE的所有内容全部删除,包括Qt和所有依赖Qt的程序。似乎一下就好了。现在再也没有遇到使用终端和vim速度变得很慢的情况。也没有仔细的关注到底是些什么错误,反正现在已经好了~不过说起来,KDE下有不少好用的工具,比如照片管理工具digikam,聊天工具skype,视频编辑Kdenlive,还有最近新出的PPS for Linux,都是KDE或依赖Qt的。为啥GTK下的这类工具就这么少呢。。 [...]

Leave a Reply

  

  

  

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Hello world

Hi,我是Tang Bin,finalbug.org是我的个人站点。这里有更多关于我的内容。English readers please click here to learn more about me and this site.

Categories