3.2.8 虚拟存储器性能影响因素

在虚拟存储器(Virtual Memory)的设计与运行中,性能的高低主要通过有效访问时间(Effective Access Time, EAT)来衡量。由于物理内存与磁盘(辅存)之间的访问速度存在数量级上的差异,任何微小的缺页率变动都会对系统性能产生巨大影响。

以下是影响虚拟存储器性能的几个关键因素:


1. 缺页率(Page Fault Rate, p)

这是最核心的因素。有效访问时间的计算公式通常表示为:

EAT = (1 – p) \times \text{内存访问时间} + p \times \text{缺页处理时间}

  • 内存访问时间: 通常在纳秒(ns)级别。
  • 缺页处理时间: 涉及磁盘 I/O,通常在毫秒(ms)级别(约 10^6 ns)。
  • 结论: 即使缺页率 p 只有 0.1%,有效访问时间也可能比正常的内存访问慢上百倍。因此,减少缺页次数是提升性能的首要任务。

2. 磁盘 I/O 速度

当发生缺页中断时,操作系统必须从磁盘读取页面。磁盘的寻道时间、旋转延迟和数据传输率直接决定了“缺页处理时间”的长短。

  • 使用 SSD(固态硬盘)NVMe 代替机械硬盘(HDD)能显著缩短缺页处理时间,从而提升虚拟存储器的整体性能。

3. 页面置换算法(Page Replacement Algorithm)

置换算法决定了当内存满时,哪一个页面被换出。

  • 理想状态: 换出未来最长时间不被使用的页面(OPT 算法)。
  • 现实策略:LRU(最近最少使用) 这种较好利用局部性原理的算法,其缺页率通常远低于 FIFO(先进先出) 算法。算法的效率直接影响了 p 的值。

4. 程序的局部性(Program Locality)

虚拟存储器之所以有效,完全基于局部性原理

  • 时间局部性: 如果一个信息项正在被访问,那么在近期它很可能还会被访问。
  • 空间局部性: 在不久的将来,程序很可能访问与当前访问地址相近的内存单元。如果编写的程序局部性差(例如大跨度地遍历二维数组),会导致频繁的缺页中断,产生抖动(Thrashing)现象。

5. 页面大小(Page Size)

页面大小的设计是一种权衡(Trade-off):

  • 较小的页面: 减少了内部碎片,且局部性捕获更精确,但会导致页表过大,增加查表开销。
  • 较大的页面: 减少了页表条目和磁盘 I/O 次数(一次读更多),但可能增加内部碎片,并调入大量不必要的数据。

6. 分配给进程的物理块数(Resident Set Size)

根据工作集模型,如果分配给进程的物理块数少于其运行所需的工作集大小,缺页率会陡然上升。

  • 抖动现象: 当系统由于内存不足频繁地进行页面换入换出,导致 CPU 大部分时间在等待磁盘 I/O 而非执行指令时,性能会彻底崩溃。

总结表

因素对性能的影响优化方向
缺页率 (p)决定性影响提高局部性,优化算法
磁盘速度影响单次缺页耗时使用高速存储介质(SSD)
置换算法影响缺页频率采用 LRU 或其变体
物理块数影响常驻集大小合理控制多道程序度,防止抖动

发表评论