以文本方式查看主题

-  广东服务器技术论坛(IBM、HP、DELL、联想)  (http://gzhuize.com/bbs/index.asp)
--  IBM服务器论坛专区  (http://gzhuize.com/bbs/list.asp?boardid=3)
----  谁动了我的内存  (http://gzhuize.com/bbs/dispbbs.asp?boardid=3&id=2570)

--  作者:admin
--  发布时间:2011-4-17 20:58:08
--  谁动了我的内存
随着企业业务增长,老的服务器会需要扩内存。有的机器扩完内存后,在BIOS里面识别正常,在操作系统下却会少几百M,有的干脆认不到。这到底是怎么回事,是内存条单位换算的原因,或者是硬件不兼容引起的,还是别的其他原因?真可是小小内存,大有文章,下面咋们就聊聊到底是怎么回事。

        操作系统对物理内存的支持,会受到诸如硬件限制、操作系统的版本、驱动程序等方面的综合影响。我们这里以WINDOWS  Server和X3650服务器为例,打开X3650的HMM会看到这么一段描述:

        红色框里的文字说:“服务器最多支持48GB的内存”,那么是不是说我们在机器上安装多大内存,操作系统里就能识别多大?当然不一定,还要看操作系统的支持。MSDN网站的Memory Limits for Windows Releases文章对不同Windows版本、以及同一个版本的不同SKU的限制进行介绍。例如,32位Windows Server 2003标准版仅支持4GB,而32位Windows Server 2003数据中心版支持64GB。类似的,64位Windows Server 2008标准版支持32GB,而64位32位Windows Server 2008数据中心版支持2TB。那么我们得出结论Windows  Server内存的支持跟软硬件平台相关。

        这里再引自咋们论坛里一个很火的讨论贴,是由“艺人”老大写的连载之一“坏了一部分的内存?”,里面谈到有台X3650服务器的内存从2GB升到4GB后,在WIN2003  32位简体中文企业版里只显示3GB多这样子。按上面的结论,我们到“Memory Limits for Windows Releases”文章里一查,细心的哥们马上会问:“这个SKU版本的WIN2003能支持64 GB内存,那为什么显示还会有偏差?”那么,我们再看表格上面这段描述:

红色框里的文字说:“对于超过4G内存的32位Win2003系统要确认启用PAE”。
注:PAE是Intel x86 Pentium Pro处理器引入了一种称为物理地址扩展(PAE,Physical Address Extension)的内存映射模式。简单说就是可以映射到超过4G的物理内存。有兴趣的哥们自己可以去GOOGLE下。


        后来“艺人”在启用了PAE后,在系统里终于显示出来4GB。事情到这里似乎有答案了,但是事实真是这样吗?PAE是为了访问超过4GB的物理内存而开启的,你这里只有4GB内存,似乎也不用开启PAE?但是开启后,马上能看到4GB的内存了,明显这是有效果的。那究竟是什么原因导致内存有误差呢?“艺人”也在思考:

        答案是我们平常所说物理地址映射不仅仅包含物理内存,还有设备内存。这里的误差就是设备内存占据的物理地址。开启PAE后,由于操作系统能寻址大于4GB的地址空间,设备内存与物理内存的地址空间就不用冲突,就能显示出来了。

        最后补充下,Win2003在 SP1后默认启用PAE,也就是开启大内存支持。一般上述情况只会在WIN2003不带SP1和WIN2000系统中出现。第一次在论坛里发贴,文章中难免有错误,希望各位兄弟斧正,谢谢!