Board logo

标题: 降低 Linux 内存开销(1) [打印本页]

作者: look_w    时间: 2018-5-19 16:04     标题: 降低 Linux 内存开销(1)

Linux 广受追捧的一个优点是它比 Microsoft®  Windows® 的效率更高,因此在不太前沿的硬件上也能很好地执行。对于依然使用 Windows 98 时代的机器的人来说,最新最卓越的软件(特别是安全补丁)已经不再支持这些机器,因此这种性能优势使 Linux 成为颇具吸引力的升级产品。
然而,问题的真相在于虽然 Linux 内核仍然可以配置成合理的大小和效率,但由于新计算机的处理能力大大加强,很多 Linux 桌面环境(例如 KDE 和 GNOME)都增加了许多特性。因此,在较老的硬件上默认安装大多数发行版时,提供的性能都不是一流的。很多现代应用程序也是如此,例如,Firefox 之类的 Web 浏览器和 OpenOffice 之类的办公套件均功能完备,但是尝试在只有 128MB RAM 的机器上运行这些程序,可能会成为非常痛苦的体验!
该怎么办?丢掉所有旧的硬件然后升级?还是安装 1995 年左右的 Linux 发行版?(如果您决定走这条路,我记得使用 Linux-FT 是一种很好的体验。)
不要担心:多年以前,Linux 社区中的人就已经认识到这个问题,Linux 内核和发行版的一大特性(有人喜欢说 这个 伟大特性)在于其能够定制。本文将介绍如何对 Linux 系统进行裁减,以便在小容量的硬件上获得更好的性能。
内存的作用在大多数情况下,桌面操作系统性能的一个最重要因素就是系统可用的内存量。虽然拥有快速的处理器效果不错,但是如果没有足够的物理内存保证一直很好地利用处理器,系统可能会花费大量时间用于在物理内存和交换空间之间的交换数据(这种情况称为 磁盘抖动),而 CPU 的大部分时间都是空闲的。因此对于老式的系统来说,额外添加内存通常是提高性能的最简单方法。然而,有很多原因决定了这种方法不太可能,例如缺少空闲插槽,对于一些系统(尤其是笔记本或基于 RAMBUS 的系统)来说,则是缺少买得起的 RAM,以及不希望在一台过期的系统上花更多钱这个容易理解的心理。
如果无法或不愿意升级 RAM,接下来最好减少系统上的 RAM 需求。本文将展示为 Linux 机器打造内存天堂 5 个简单步骤。
步骤  1:选择正确的桌面环境惟一需要做的重要选择就是要安装的 Linux 发行版和桌面环境(DE)。尽管这是截然不同的选择,但是发行版的选择可能影响 DE 的选择。虽然没有任何东西能够阻挡您在系统上安装软件,例如在 Ubuntu 上安装 Fluxbox;但是您会发现如果简单地使用发行版所附带的默认 DE,一切就会轻松很多。
在本文方案中,目标是寻找面向桌面的简单发行版,以便于新用户使用。我从  Ubuntu 6.10 开始入手,它和 GNOME 2.16 一起推出。
对于基本系统来说,我选择了一台配有 800MHz 处理器和 256MB RAM 的老机器。我将执行了两次测试,一次使用全部 256MB   RAM 正常引导,一次在内核行上附加了 mem=128M,这会强制内核只识别 128MB 物理内存。这样就可以有效地试验 256MB 和 128MB 的机器,而不必实际使用另一台物理机器(也不必反复从机器中插拔内存)。这个内核行选项能够足够近似地模拟 128 MB 的机器的行为;注意,如果真的只有 128MB 内存,可能会遇到其他问题,举例来说,要使用 Ubuntu,必须使用一个不同于普通机器磁盘的安装盘,它是专门为少于 192MB RAM 的机器准备的。
为了了解基本水平的内存使用情况,引导该系统,登录到桌面系统,并启动一个终端(在本文后面的内容中,我将这种设置称为 基本使用水平(base level));然后使用 free 命令来检查系统中的空闲内存量,结果如清单 1 所示。
清单 1.  Ubuntu 在 256MB 机器上的基本使用水平
1
2
3
4
5
ubuntu # free
             total       used       free     shared    buffers     cached
Mem:        255988     231704      24284          0       6432     139292
-/+ buffers/cache:      85980     170008
Swap:       746980          0     746980




第一行说明 256MB RAM 中有 231MB “正在使用”。下一行告诉我们尽管有 231MB 内存正在使用,但是应用程序只使用了其中的 86MB;缓冲区和高速缓存使用了其余的内存。
要评价性能,该清单中最重要的部分是 Swap 一行;它告诉我们当前没有使用任何交换空间,这说明目前没有真正遇到内存问题。系统现在可以全部装入物理内存,而不必借助慢速的基于磁盘的交换空间。
然后,为了了解系统的日常使用情况,启动一个 Web 浏览器(Firefox 2.0),然后用其打开 developerWorks,将即时消息客户机(Gaim)连接到 MSN,并使用文件管理器来浏览文件夹,又在 OpenOffice 中打开一个相当大的 Microsoft Word 格式的文档。(在本文剩余的部分中,将这种设置称为 轻量级使用水平(light usage level)。)
一旦成功加载这些之后, free 命令将如清单 2 所示。
清单 2. Ubuntu 在 256MB 机器上的轻量级使用水平
1
2
3
4
5
ubuntu # free
             total       used       free     shared    buffers     cached
Mem:        255988     252196       3792          0      21276      87500
-/+ buffers/cache:     143420     112568
Swap:       746980      18676     728304




可以看到内存部分稍有变化。现在应用程序使用了 143MB 的物理内存,其余的内存均被缓冲区占用;另外,系统现在使用了 18MB 的交换空间。在这种轻量级的办公任务情况下,系统的可用性通常看起来很不错,但是已经没有太多发展空间了,可能无法进行需要资源更多的操作,例如编辑巨大的数字照片或视频文件,因为系统很快就会在处理时发生停歇。
为了了解系统在只有 128MB 时的执行情况,我重新引导了系统,并在内核行后面附加了 mem=128M 选项,就像前面介绍的一样。在与清单 1 同样的基本使用水平上,使用 128MB RAM 得到的结果如清单 3 所示。
清单 3. Ubuntu 在 128MB 机器上的基本使用水平
1
2
3
4
5
ubuntu # free
             total       used       free     shared    buffers     cached
Mem:        126100     121464       4636          0       1636      37000
-/+ buffers/cache:      82828      43272
Swap:       746980      17924     729056




可以看到现在只使用了 128MB 内存,已经开始使用交换空间了,并且现在实际上还没有开始执行任何操作。
启动同一组应用程序产生的结果如清单 4 所示。
清单 4. Ubuntu 在 128MB 机器上的轻量级使用水平
1
2
3
4
5
ubuntu # free
             total       used       free     shared    buffers     cached
Mem:        126100     123608       2492          0        392      51208
-/+ buffers/cache:      72008      54092
Swap:       746980      98452     648528




从这些数字中可以预测出,现在该机器在正常使用时的响应能力非常低,对于这些简单任务来说基本上还可以使用,但是会非常频繁地访问磁盘,我肯定不喜欢使用它作为自己的主要机器。可以看到应用程序需要的内存总量大约是 170MB,但内存中只装入了 72MB,因此 98MB 被转移到交换空间。这有助于解释系统响应能力降低的原因!
下一组测试,我决定使用 Xubuntu,这是与 Ubuntu 有关项目的发行套件。这个发行版与 Ubuntu 非常类似,但使用了 Xfce 4.4 Beta 2 DE,而不是 GNOME。与更为流行的 GNOME 和 KDE 项目不同(它们强调的是实现最佳功能),Xfce 被设计成轻量级的,因此有望更好地满足过期硬件的要求。我们将使用这个发行版执行与 Ubuntu 相同的测试。
在清单 5 中可以看出基本 DE 大约少使用了 25MB 的应用程序内存,并且缓冲区和缓存所使用的内存显著少于 Ubuntu(这可能意味着文件操作较少)。
清单 5.  Xubuntu 在 256MB 机器上的基本使用水平
1
2
3
4
5
xubuntu # free
             total       used       free     shared    buffers     cached
Mem:        255988     170964      85024          0       6004     104700
-/+ buffers/cache:      60260     195728
Swap:       746980          0     746980




在清单 6 中,再次启动那套测试应用程序(Web 浏览器、IM 客户机和文字处理器)。可以看到对于相同的应用程序组合,所需的内存比 Ubuntu 大约减少了 20MB(其中 126MB 位于物理内存,17MB 位于交换空间,总共是 143 MB;在 Ubuntu 上是 143MB 加 18MB,总共是 161MB)。
清单 6.  Xubuntu 在 256MB 机器上的轻量级使用水平
1
2
3
4
5
xubuntu # free
             total       used       free     shared    buffers     cached
Mem:        255988     252180       3808          0       1972     124008
-/+ buffers/cache:     126200     129788
Swap:       746980      16956     730024




清单 7 给出了只有 128MB RAM 时的基本使用水平。这次这个内存有限的系统表现良好,没有使用交换空间。
清单 7.  Xubuntu 在 128MB 机器上的基本使用水平
1
2
3
4
5
xubuntu # free
             total       used       free     shared    buffers     cached
Mem:        126100     123228       2872          0       4252      60484
-/+ buffers/cache:      58492      67608
Swap:       746980          0     746980




在清单 8 中,再次启动测试应用程序。虽然与 Ubuntu 相比,这个系统的表现更好,但是它依然使用了大量的交换空间,这个机器依然有些缓慢(只稍微比 Ubuntu 好一些)。
清单 8. Xubuntu 在 128MB 机器上的轻量级使用水平
1
2
3
4
5
xubuntu # free
             total       used       free     shared    buffers     cached
Mem:        126100     123980       2120          0        468      56276
-/+ buffers/cache:      67236      58864
Swap:       746980      64516     682464




从这些数字可以看出,Xubuntu 在整个过程中使用的内存通常更少;因此如果您的系统只有 128MB(或更少内存),这可能是较好的选择。
Linux 发行版的一个重要特征是它们通常不需要花费任何费用,因此很容易下载多个发行版,然后逐一试用一段时间,从而确定喜欢使用的发行版,及其在硬件上的执行情况。如果硬件非常有限,可能希望考察一下 Damn Small Linux 之类的发行版,它宣称可以在只有 16MB RAM 的 486DX 处理器的系统上运行。
由于我的 256MB 系统上还有一点可用空间,所以通常喜欢使用 KDE,因此我尝试了 Ubuntu 的另一个派生版本 Kubuntu,它是基于 KDE 的,在内存使用方面大致介于 Xubuntu 和 Ubuntu 之间。作为参考,清单 9 展示了 Kubuntu 的基本使用水平。
清单 9. Kubuntu 在 256MB 机器上的基本使用水平
1
2
3
4
5
kubuntu # free
             total       used       free     shared    buffers     cached
Mem:        255988     244736      11252          0       7612     160008
-/+ buffers/cache:      77116     178872
Swap:       746980          0     746980






欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0