首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

大内存时代虚拟内存现在还有用吗(2)

大内存时代虚拟内存现在还有用吗(2)

 3. 物理内存充足时分页文件工作吗          虽然实测结果表明分页文件对于目前的大内存系统仍然有提高性能的作用,但我敢说,很多网友肯定还有另外一个疑虑——分页文件到底和物理内存是个啥关系?频繁的硬盘读写难道真不会拖累系统运行么?
       

          图5 AIDA64检测图


          要回答这个问题其实也很简单,只要借助一款第三方软件——AIDA64就可以了。上图是硬件检测软件AIDA64对笔者电脑的检测,可以看到当前电脑的 存储系统是由4GB物理内存、4GB分页文件共同组成,其中物理内存+分页文件的总和被AIDA64称作交换区(Windows称“虚拟内存”)。那么当 一款程序启动时,它究竟会首先使用物理内存?还是按照整个虚拟内存的概念同步使用呢?
          这里需要说明的是,微软有关虚拟内存的定义是与 AIDA64不同的,它是将物理内存+分页文件视为一个虚拟内存(相当于AIDA64中的“交换区”),而AIDA64则是将物理内存+交换区视为虚拟内 存。说实话AIDA64的这种划分比较令人费解,因为将一个现实数值(物理内存)与一个虚拟数值(交换区)合并原本就没有什么实际意义。因此这里我们主要 还是以微软定义为准。
          最终答案非常明显,就是当物理内存用尽后,Windows才会启用分页文件。如果你不信,不妨也像我一样打开 AIDA64(软件支持实时更新,可以很直观地看到各个数值的变化),然后随意启动几款程序,观察一下“页面文件”的数值变化。你会发现随着程序启动,物 理内存和交换区数值都在持续变化,唯独页面文件却始终保持着0MB。
          换句话说,在物理内存可以满足当前需要时,Windows并不会弃用高速内存而选用速度更慢的硬盘文件(分页文件),因此我们丝毫不必担心开启分页文件会影响系统整体性能,除非是你的物理内存真的无法满足系统需要。
          4. 分页文件如何设置才合理
          那么又一个问题来了,如果说分页文件在现今的Windows中仍然有利无弊的话,那么我们究竟是应该让Windows自行管理,还是给它设定一个具体的数值呢?
          有关这个问题,笔者曾经和一位微软工程师聊过,双方的焦点在于,分页文件是一项很古老的设置,最初是将其设定为一个可变量,官方推荐是物理内存的1.5倍(即你在系统→分页文件设置框内看到的推荐值)。
          但要注意的是,这条规则的设计背景是在数十年前,那时的内存普遍只有几十兆(服务器也不过如此)。但时至今日,当物理内存已经跨入GB时代,甚至个别用户已经用上16GB以上的超大内存,再去一昧照搬从前的标准显然并不适合。
       

          图6 系统托管真的合理么?


          依然还是开头图书馆的例子,现在的情形可以变更为馆藏容量未变(10000本),但每人每次的可借阅数升级为15本(即物理内存变大了),相应门口小书 架的图书量也增加为500本(分页文件按比例扩大)。那么问题来了,如果说50本的小书架可以帮我们提高效率的话,那么500本书架所消耗的时间又是多 少?如果碰巧这500本中仍然没有你想要的,需要重新进入图书馆(10000本)里继续查找的话,系统效率不慢才怪。
          回到现实版中来, 小书架容量的暴增其实就相当于分页文件扩张(比如16GB内存按微软标准计算就是16GB~24GB),那么在现行机械硬盘的读取速度下(这里不考虑随机 读取与线性读取区别),若想遍历一遍16GB或者24GB空间所花费的时间,恐怕也是相当大的。换句话说,如此一来分页文件非但没有提高系统性能,反而真 的会成为系统性能的拖累!
          为了更好地说明结果,我们仍然通过PCMark 7进行了一次基准测试。与先前测试略有不同的是,此次主要是对分页文件的大小进行了调整,根据测试机内存划分为“系统托管(实测为4GB)”、 “512MB”、“2GB”、“4GB”几档,当然也没忘增加了一个大容量“12GB”。
       

          图7 不同分页文件大小对于系统性能的影响


          最终结果一目了然,随着分页文件的增长,系统评分开始成比例提高,到达4GB时几乎出现了此次评测最好的成绩。但当笔者人为将其升至12GB时,整体评分又有了明显下降,从而最终佐证了我们先前的推测。
          虽然上述测试已经大体推算出一个分页大小,但我们并不建议所有用户都采用这一设置。原因就是每个人的硬件配置各有不同,大锅饭式设置并不一定适合每一个 人。考虑到分页文件大小可能对性能的影响,我们建议在用户内存不超4GB的情况下,可以选择由Windows自行托管,而当用户内存高于4GB,则应使用 手工设置的方法,将分页文件限定在一个范围之内(建议不超6GB),这样既可保证系统正常的吞吐需求,也不至于因分页文件过大而拖累系统速度!
          此外对于动手能力较强的网友,也可自行通过“性能监视器”(perfmon.msc)添加一个“Paging File Usage”来统计自己电脑中分页文件的实际利用率,借此精确计算出自己的电脑究竟适合多大的分页文件。只不过考虑到该步骤操作较为繁琐,这里就不单独介 绍了。
          写在最后
          事实上就像Windows中的很多组件一样,虚拟内存并不像大家 想象得那样简单,除了众所周知的补充内存功能外(实际上现在这个用途已经很少会用到了),它还承担着提高物理内存命中率及稳定性的作用。甚至某些时 候,Windows的一些核心功能也会用上虚拟内存(如SuperPrefetch、内存转储等)。
          此外个别第三方软件(如 Photoshop、3Dmax等)也是虚拟内存的忠实拥护者,强行关闭很可能导致运行出错或崩溃。当然考虑到硬盘开销及整体运行效能,用户最好根据自身 条件对分页文件大小进行限定,尽量不要让分页文件过于庞大。总之在这个问题上,并没有什么一定之规,更多的是需要使用者灵活处理。
       

          图8 这个提示真的不是忽悠你的


          附:几个小问题的解答:
          1. 分页文件移至别的分区是否可提高性能?
          根据微软的设计,操作系统允许同时建立多个分页文件,而且Windows会很智能地从中挑选出性能最高的进行读取。但要注意的是这个设计只针对于多块硬 盘,比如你的Windows装在硬盘1,而分页文件设在硬盘2,那么由于操作系统可以同时从两块硬盘上读取数据(一块读取操作系统,一块读取分页文件), 最终结果就是Windows的效率大增。但如果用户只有一块硬盘,将分页文件由C盘转移至其他分区,理论上并不会有明显改进,除非是你的C盘空间过于紧 张!
          2. 设固定大小可否减少硬盘碎片?
          有人认为Windows默认的可变大 小,常常是导致分页文件出现碎片的主要原因,这个问题我们需要从另一个角度考虑。正如大家已知的,分页文件的一个重要特性是作为内存补充使用(虽然这种情 况目前已经很少,但不排除完全没有),因此当你偶然遇到一个极耗内存程序时,还是有可能将虚拟内存耗尽并导致最终崩溃。那么此时如果使用的是默认可变内 存,相当于给了Windows一次腾挪辗转的机会,也许崩溃就不会发生。
          当然这里要特别说一句的是,如果你的虚拟内存大小合理,一般情况下是不会导致Windows随意调整分页文件大小的,而这样的话产生磁盘碎片的机率也就不是很多了。
继承事业,薪火相传
返回列表