Linux的高效内存利用

Posted by Harid六月 - 9 - 2010 Leave comments

Linux系统的内存利用率能达到99%,这是Windows系统想都不敢想 的,Windows系统只是想方设法让内存使用率低点,好让你又要运行其它软件时能有空间放。而在Linux下,我用free命令查了一下,发现,系统 把内存作为缓存使用了。譬如我现在的内存状态,程序使用了23%,缓存使用了52%。我的是Fedora系统,在Gnome的上方面板中可以添加一程序, 叫“系统监视器”,这个可以在上面直观地看到,不信的话就用free命令看下内存使用,再看下X-window下的“系统监视器”比较一下,X- window下的“系统监视器”在“应用程序”->“系统工具”里,我们会发现二者不同,那是因为后者只显示程序占用率。

我意识到我们很多人以前的对系统性能评价的标准似乎有点问题。内存使用率越低越好吗?CPU使用率越低越好吗?观念这个东西啊,翻过来再看一下。

内存是半导体电路,存取速度非常快,是少数能勉强跟上CPU速度的硬件,虽然现在的电脑里一 般有二级缓存,甚至去年年底出的有的都有三级缓存,但是那些Cache终究很小。Linux能充分利用内存资源,在速度上自然就不用说了。

为什么呢?既然有此好处,为什么Windows不这样干?应该是算法问题了,Linux的内存调度算法相当高明,这是Windows无法媲 美的。不得不承认,微软里有很多的大牛,但是世界范围的程序高手更多,人多力量大,集思广益,Linux的内存调度算法从而显然更好!有人说那你 Linux下内存使用那么多,你想再运行一个软件怎么办??呵呵,好像Linux总是能及时地分配好内存资源,在用的过程中,发现内存总有(当 然,你内存只有512MB或者你运行了一大堆的大软件或者你运行的软件里面算法不好使得堆栈等数据结构大量出现从而耗尽内存,那没办法),这在Windows下几乎是不可能的!

去年放假时,江苏几家公司联合办了个比赛,当然要求很多,我记得的其中有一点,是要求软件运行时,能将数据库动态载入内存。数据库若 是能载入内存,那用户访问速度则快多了。但是数据库一般都很大,要将它载入内存,呵呵 ,这可不是一件容易的事,容易的话那些公司也就不会搞这个比赛了,他们给的奖金是最高60000啊!大赛对象不限,也说明他们对这项技术的渴求。这从侧面也 说明了内存的充分利用是今后的大势所趋。因为很显然,现在的内存越来越便宜(当然,去年下半年又涨了,但是和以前相比,现在的电脑内存大了,相对便宜了, 而且以后肯定会更便宜)。对于我们个人用户可能感觉不深刻,但是如果是一台服务器,那改善则不是一点一点了!!!随着现在很多的EDA工具的出现,教育的发展,以及站在前人的研究的基础上,我们有理由相信以后的半导体电路会设计得越来越好!那时就不是个梦了!

注意下图上部面板上的小黄色方框!看不清的话看下图:

memory01
memory02

free 命令显示我的2GB内存只剩下312MB了:

memory3

而系统监视器显示只用了463MB:

memory04

   声明:本文采用 BY-NC-SA 协议进行授权 | 星期九
   原创文章转载请注明:转自《Linux的高效内存利用

  1. 刚开始的时候,我怕内存不够用,经常用 /proc/sys/vm/drop_caches 这个文件来释放系统缓存
    时间久了就觉得是我多虑了

    • @lazywen, 不过,经常用到90%也不是件好事,自己确实可以适当的回收一下内存。貌似也可以用 sync 命令来做这件事情。


分享按钮