Linux操作系统对虚拟内存的限制

文章作者 100test 发表时间 2007:10:19 12:18:11
来源 100Test.Com百考试题网


  一、关于2G虚拟内存限制的说明

  1. 早期的linux对虚拟内存的限制

  linux2.2以前的内核,支持最大128M的Linux swap分区或文件。Linux swap的分区或文件总数不超过16个。

  所以在linux2.2以前,可用的最大虚拟内存为128M*8=1G.

  2. Linux2.2.x对虚拟内存的限制

  Linux2.2.x支持最大2G的Linux swap分区或文件。Linux swap的分区或文件总数不超过8个。

  所以在Linux2.2.x,可用的最大虚拟内存为 2G*8=16G

  3. Linux2.4.x对虚拟内存的限制

  Linux2.4.10之前支持最大2G的Linux swap分区或文件。Linux swap的分区或文件总数不超过8个。

  所以在 Linux2.4.10之前,可用的最大虚拟内存为 2G*8=16G

  Linux2.4.10(含)之后支持最大2G的Linux swap分区或文件。Linux swap的分区或文件总数不超过32个。

  所以在 Linux2.4.10之后,可用的最大虚拟内存为 2G*32=64G

  Linux2.4.x在内存管理策略上,就如Windows98向Windows2000转变一样,在内存和交换区中保存了更多的脏页,而不是及时回收内存,以此提高系统的效率。(见Widnows核心编程第18章的论述)。

  此外,如果你有超过1块磁盘,并且分别在不同的磁盘上建立了swap,那么linux会按照raid 0的方式来使用这些交换分区。

  二、多少虚拟内存较好?

  1. Linux 2.2.x(含)及以前

  传统的2倍虚拟内存的观点是有效的。建议按照此方法进行分配。

  2. Linux 2.4.x(含)及以后

  在考虑合适的硬盘费用的情况下,对虚拟内存的需求是多多益善。

  Linus明确的指出,即使是512M内存,也可以分配高达40G的交换区,以提高系统的性能。Zlatko 在向Linus提出性能的质疑后,自己进行了验证。Zlatko通过实验表明:大交换区策略没有增加磁盘I/O的费用。

  三、实例

  一台IBM x365服务器,配置4G内存。

  1. 交换区最小不低于4G

  建立两个各为2G的交换区,做为基础的4G交换分区

  2. 建立8个2G的交换文件,做为扩展的交换分区

  这样总的交换分区大概在20G左右,如果硬盘更大,可以增加最多。

  题外话:关于Windows中的虚拟内存使用

  自Windows2000开始,微软也改变了内存使用策略。他们会尽可能较迟的回收内存。因此,我个人相信大的交换区,对于Windows2000以上的系统也是更有效率的。

  附:Linus的谈话录

  在下面的讨论中,清楚的说明了Linux2.4版本比它以前的版本需要更多的交换区。Rik val Riel提醒说:“2.4(内核) 在交换区缓存中,保持了更多的脏页,所以对于相同的程序,你需要更多的内存来运行它……”。他问Linus Torvalds,“这是一些东西,我们需要保持,或者我们将告诉用户,将要运行在某一种模式,当交换区被释放,当我们在一些非共享区进行交换时?”Linus回答:“我乐于看见用文档说明这点,并且将它保持下去。我痛恨两种不公平的行为方式。它总是建议”两倍于内存(的交换区大小)“,尽管在历史上被告知,”Linux 实际上不需要那样多“,我们在linux2.4.x中,把这种观点真正的抛弃了。

  如果你有512M内存,你可以要求40G的交换区,他们在今天已经变得非常便宜。

  Zlatko Calusic 担心,更大的交换区会降低性能,因为磁盘需要更多的时间进行搜索,以找到数据。他问Linus,是否确认这种现象不会发生,Linus回答:“我不 _确认_,众所周知,无论如何,我只确认一件事情,即页面缓冲的粘着性,能够使许多事情变得简化,并且使此前不可能的一些事情变得可能。”但是在最近,他补充道:“粘着建起可能会使我们的IO更为分散”。

  Zlatko进行了一些测试,并没有发现2.4.0版本的内存管理策略有什么问题。他说道:“我发现新内核在某些环境下,会申请4倍的交换空间。这或许是,也或许不是问题,它仍然保持可见。



相关文章


Linux操作系统对虚拟内存的限制
让Linux操作系统支持FAT格式的磁盘分区
Linux操作系统下配置D 服务器的方法介绍
LinuxRPM的五种基本操作
教你构建高性能的Linux双效防火墙
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛