昨天机器跑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):
第二行(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会突然间运行缓慢呢?看来只能另外找原因了。