内存利用率

内存不是作为单个组件(例如,CPU 或磁盘)管理的,而是作为称为的小型组件的集合进行管理。

根据操作系统的不同,内存中典型页的大小范围可从 1 到 8 千字节。内存 64 兆字节、页大小为 2 千字节的计算机包含的页大约有 32,000 页。

当操作系统需要为进程使用分配内存时,它将清除内存中所有可找到的未使用的页。如果不存在可用页,内存管理系统就必须选择其他进程仍在使用但短期内最不可能使用的页。需要 CPU 周期来选择这些页。定位此类页的过程称为页扫描。需要页扫描时,CPU 利用率将提高。

内存管理系统通常使用最久未使用算法来选择可复制到磁盘、然后再释放以用于其他进程的页。CPU 已识别出可分拨的页时,通过将这些页中原有的数据复制到专用的磁盘中来换出原来的页图像。存储页映象的磁盘或磁盘分区称为交换磁盘、交换空间交换区域。这种调页活动需要 CPU 周期及 I/O 操作。

最后,复制到交换磁盘的页映象必须被送回来,供需要它们的进程使用。如果可用页仍然很少,就必须换出更多的页以腾出空间。由于内存随不断增加的需求和调页活动而增加,这种活动将最终导致 CPU 几乎完全被调页活动所占用。这种条件下的系统称为系统颠簸。 当计算机处于系统颠簸状态时,所有有用的工作都会停止。

为了避免系统颠簸,一些操作系统在调页活动超过特定阈值后使用更近似的内存管理算法。此算法称为交换。 当内存管理系统使用交换算法时,它一次分拨构成整个进程映象的所有页,而不是一次分拨一页。

每次交换操作都将释放更多的内存。但是,随着交换的继续,每个交换出去的进程必须再次被读入,这将极大地增加到交换设备的磁盘 I/O 以及用于进程间切换的时间。随后性能会受限于数据从交换磁盘传输回内存的速度。交换是系统严重过载的现象,并且会影响吞吐量。

许多系统都提供调页活动的有关信息,其中包括执行的页扫描次数、发送到(换出)内存中的页数、以及从内存中带回(换入)的页数:

虽然估计内存服务时间的原则与资源利用率和性能中描述的一样,但是可以使用不同的公式(与对其他系统组件所用公式不同)来估计内存利用率对性能的影响。

您可以使用以下公式来计算给定的 CPU 利用率级别和调页速率的预期调页延迟:
PD= (C/(1-U)) * R * T
PD
是调页延迟。
C
是事务的 CPU 服务时间。
U
是 CPU 利用率(用小数表示)。
R
是页面换出速率。
T
是交换设备的服务时间。

随着调页增加,CPU 利用率也会增加,并且这些增加混合在一起。如果调页的速率为每秒 10 页,占 CPU 利用率的 5%,那么调页的速率增加到每秒 20 页时,CPU 利用率可能也会再增加 5%。进一步增加调页将导致 CPU 利用率急剧增加,直到 CPU 请求的预期服务时间不可接受为止。