从这些数字中可以预测出,现在该机器在正常使用时的响应能力非常低,对于这些简单任务来说基本上还可以使用,但是会非常频繁地访问磁盘,我肯定不喜欢使用它作为自己的主要机器。可以看到应用程序需要的内存总量大约是 170MB,但内存中只装入了 72MB,因此 98MB 被转移到交换空间。这有助于解释系统响应能力降低的原因!
下一组测试,我决定使用 Xubuntu,这是与 Ubuntu 有关项目的发行套件。这个发行版与 Ubuntu 非常类似,但使用了 Xfce 4.4 Beta 2 DE,而不是 GNOME。与更为流行的 GNOME 和 KDE 项目不同(它们强调的是实现最佳功能),Xfce 被设计成轻量级的,因此有望更好地满足过期硬件的要求。我们将使用这个发行版执行与 Ubuntu 相同的测试。
在清单 5 中可以看出基本 DE 大约少使用了 25MB 的应用程序内存,并且缓冲区和缓存所使用的内存显著少于 Ubuntu(这可能意味着文件操作较少)。
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)。
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 时的基本使用水平。这次这个内存有限的系统表现良好,没有使用交换空间。
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 好一些)。
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 的基本使用水平。
kubuntu # free
total used free shared buffers cached
Mem: 255988 244736 11252 0 7612 160008
-/+ buffers/cache: 77116 178872
Swap: 746980 0 746980
|
步骤 2:选择适当的应用程序
选定了发行版之后,接下来的事情是选择要使用的应用程序组合。不同应用程序的内存需求可能差异很大;有时需要在规模和功能之间进行权衡,但是在另外一些情况下,即使功能相同的应用程序对内存的需求也可能存在巨大差异。
为了度量本文的内存使用情况,我们将使用 exmap 工具。该工具比 ps 或 top 更精确,因为它考虑了多个应用程序使用的共享库。例如,如果两个应用程序使用了相同的共享库,各占 1MB 内存,ps 会显示这两个应用程序均额外使用了 1MB 内存,exmap 则能更准确地显示每个应用程序都只使用了 500 KB 内存。这种精确性对于评价 KDE 和 GNOME 之类的桌面环境非常重要,因为在这些情况下应用程序之间会大量使用共享库。
对于在下面几部分讨论的每个应用程序,我测量了 exmap 所生成的 resident 和 effective resident 值。resident 值表示进程使用的物理内存总量,包括其他进程使用的共享库;该值通常与 ps 或 top 输出的值相同。effective resident 值是将共享库占用的内存平均分配给各个共享进程得到的;从指定进程所消耗的系统内存角度来看,该值更加精确。
还需要注意,在确定进程的全部内存开销时,还应该考虑 mapped 和 effective mapped 的值,它是进程中位于交换空间中的那些部分。mapped 值与 resident 值类似,但是它针对交换空间中的页面,而不是物理内存中的页面。因此要查看不考虑共享库时的数据,可以将 resident 和 mapped 值加在一起;要查看考虑对共享库时的数据,就需要将 effective resident 和 effective mapped 值加在一起。在制作该表时,并没有 记录这些值,这是因为对于我们的测试来说,交换空间中并没有什么进程,因此,对于这些列,exmap 命令输出结果的值均为 0。
Web 浏览器
对于表 1 中的各个浏览器,均启动了这个程序,并打开了 developerWorks 主页,然后等待它们全部显示出来。结果如表 1 所示。
表 1. Web 浏览器的内存使用情况比较
| 应用程序 | Effective resident 内存(KB) | Resident 内存(KB) |
|---|---|---|
| Firefox | 27708 | 35068 |
| Opera | 20477 | 27816 |
| Konqueror | 13479 | 29748 |
| Dillo | 2776 | 6888 |
| Lynx | 1101 | 1540 |
从该表可以看出,这些浏览器的内存使用情况存在很大差异,内存需求最高的浏览器(Firefox)使用的内存比需求最低的浏览器(Lynx)多了大约 27 倍。这并不是非常公平的比较,因为 Lynx 并不能实现同样的功能(举例来说,它甚至不能显示图形),但这说明,可以根据需求极大地降低内存的使用情况。尽管表 1 中列出的前 3 个浏览器的功能与第一个浏览器的功能多少有些相同,但 Opera 使用的内存大约只有 Firefox 的 2/3,Konqueror 使用的内存比 Firefox 少一半。
![]() |

