CHAPTER 3 第二日上帝说:“储存与计算要分开。”便产生了内存
本章要点
◆ 内存技术
◆ 交换区和AIX如何管理内存
◆ 内存泄漏
◆ 内存管理参数
◆ 内存优化
只有正在计算的信息(指令和数据)才被调入CPU执行,没有用到的信息就保存在内存中。内存具有较快的速度,比磁盘快许多但没有CPU快;内存具有较大的容量,比CPU和Cache大,但没有磁盘大;另外内存是掉电就丢数据的储存媒介。如果没有成本方面的考虑,可能不会有内存这个概念,甚至不会有磁盘/硬盘存储。设计者直接会把这个功能集成到CPU中。但在CPU中增加大容量存储成本实在是太高了,设计也更加复杂,而且不同的应用不仅要求不同数量的CPU,对CPU和内存之间的比例也不同(例如ERP类应用通常需要1:3~4,数据库大概1:2~3,普通网络服务类1:1~1.5,比例单位为1CPU对多少GB内存)。因此就要通过独立的内存芯片,实现数据的临时保存。当然,为了永久保存数据,还需要额外的硬盘之类的介质。为了弥补高速CPU与相对低速的内存之间的速度“鸿沟”,Cache被引入到CPU和内存之间,作为一个速度、容量处于中间状态的过渡区。
3.1 内存芯片
出于降低成本的考虑,现在pSeries使用的内存一般都非常标准,可以使用市场上出售的PC内存。但由于内存的种类太多,经常容易出现兼容性问题。有5个方面会导致内存不可用。
(1)片脚。片脚样式不对肯定插不进去,所以这一点最好检查。
(2)芯片类型。内存芯片有很多类型,ECC,EDO,DDR,SDRAM,是否支持“Chip Killer”技术等,这些标准一般会在内存芯片(条)上有标记,或者查找关于此种类内存的说明。
(3)主频。芯片支持的频率如果不匹配,有时即使自检可以通过,但很容易死机。通常超频问题较大(总线频率高于芯片标准),降频问题会少很多,但并不是说一定不出问题。
(4)配置要求。一些机型要求成对插入内存片,而另一些可能需要4片甚至8片一组,对于具体的槽位、大小容量组合都有特殊的要求。中、高端的IBM小型机都需要偶数对的内存芯片(条),这是“Chip Killer”技术的要求,以达到对校验实现类似RAID的效果,基于此要求,同组芯片(条)要求具有完全相同的物理特征,包括支持的主频,如果内存质量很差,两条芯片某些参数不一致,启动自检就会失败。
(5)Memory Book或专用内存板。除了低端的小型机,内存是直接插到系统板上(与普通PC相同)之外,内存都装在一个叫做Memory Book的盒子里,盒子通过接口再插到系统板上。有一些内存条尽管裸露,但也要求安放在专用的内存板上再插到系统板。详细请参考服务手册(Service Guide)中的内存要求(如表3-1所示)。
表3-1 几款低端小型机的内存要求
在以下网址可以查询RS/6000系列(较旧)的机器之间的内存兼容情况:
http://www.riscanalysis.com/notes/pci%20memory.pdf
通过www.google.com搜索引擎也可以查到一些非IBM生产的“兼容内存”。当然,如果使用了这些“兼容”内存(包括其他未经IBM认证许可的任何第三方产品),IBM将不再为这台机器的维护提供支持。
ChipKiller内存技术
在小型机中,内存通常都是具有错误检验的ECC内存(Error Checking and Correcting),此类内存能够检测并更正一位错误,但只能检测(不能更正)同时发生两位数据错误。由于有错误检验,它极大地提高了系统的可靠性,而且已经成为小型机、服务器的标准配置。为了提高内存的吞吐性能,通常小型机会同时读取一片内存条上的多字节(一般是8位)数据以提高性能。通过1位的ECC校验位,可以发现数据错误,但是由于ECC只能更正一位错误,所以如果是芯片问题,会有多处错误同时发生(在此内存条中),系统发现了数据有故障,却无法恢复,系统就会停机,以便避免数据混乱(什么都不做比错误地做事情影响更小)。但是系统挂起会导致内存中尚未写入到磁盘中的数据丢失,通常会有几兆字节最新更新数据丢失。
为了避免这种情况发生,IBM设计了一种内存配置技术(即ChipKiller技术,如图3-1所示),采用类似于磁盘RAID技术对内存进行保护,当读数据的时候,不是一次从一条内存上读取多位数据,而是同时从多条内存上读取,这样即使一条内存故障,也会被发现并更正。采用ChipKiller技术的内存条芯片排列如图3-2所示(包括标准的8位内存芯片及校验芯片)。这种方式大大提高了内存的可靠性,曾被用于火星登录使用的计算机。现在ChipKiller内存技术已经被普遍应用于所有IBM小型机和大部分PC服务器。
图3-1 登月的ChipKiller技术(摘自IBM网站)
这种内存设计方式也要求内存要以一对、4条、甚至8条一组进行装载,而且一组内存中各项参数(读取速度等)必须严格相同,否则会引起严重的性能问题。这些苛刻要求,对于攒小型机是很大的一个障碍,当不同的内存条放到一起的时候,即使“样子差不多”,但是由于是不同“批次”生产,工艺不同,特性参数不同,普通情况下单条使用,完全没有问题,而在ChipKiller技术下,瑕疵尽现,很可能不可用(对于商业服务器,严格的事前检查总比运行时候忽然停机更好)。但这对我们却是坏消息——在小型机上安装内存的时候,需要根据要求组合内存,并且一组内存型号必须严格相同。
图3-2 采用ChipKiller技术的内存条芯片排列