顺序读性能调整

VMM 的顺序预读功能可增强顺序访问大文件的程序的性能。

顺序页预读 中描述了 VMM 顺序预读功能。

下面的插图展示了典型的预读的情况。

图 1。 顺序预读示例。 该图显示了一排块,它们模拟一个分段磁道的文件页号。 这些块段按 0,1 到 3,4 到 7,8 到 15 以及 16 到 23 编号。 顺序预读的步骤可以在 紧接着插图后的文本中找到。
顺序预读的示例

在这个示例中,minpgahead 的值为 2, maxpgahead 的值为 8(缺省值)。 程序顺序处理文件。 仅显示对预读机制具有重要意义的数据引用,由 A 到 F 指定。 步骤顺序为:

A
第一次文件访问读取文件的第一页(第 0 页)。 在这个时候,VMM 并不知道这次访问 是随机还是顺序访问。
B
当程序访问下一页(第 1 页)的首字节而不存在对文件其他页的插入访问时,VMM 推断出 该程序正在进行顺序访问。 于是将页提前量设为 minpgahead (2) 并且 调度读取额外的页(第二、三页)。 这样步骤 B 总共读取了 3 页。
C
当程序访问预读的第一页(第 2 页)的首字节时,VMM 将页提前量加倍到 4 并且调度读取 第 4 到 7 页。
D
当程序访问前次预读的第一页(第 4 页)的首字节时,VMM 将页提前量加倍到 8 并且 调度读取第 8 到 15 页。
E
当程序访问前次预读的第一页(第 8 页)的首字节时,VMM 决定将页提前量设为 maxpgahead 并且调度读取第 16 到 23 页。
F
VMM 在程序访问前一组预读页的首字节的情况下继续预读 maxpgahead 页直到文件结尾。

一旦程序偏离了顺序访问模式并且不按次序访问了文件中的一页,顺序预读就会终止。 当 VMM 检测到程序恢复顺序访问后,页提前量便会恢复到 minpgahead 页。

可以在 ioo 命令中使用选项 -r-R 来更改 minpgaheadmaxpgahead 值。 如果您打算改变这些值,请记住:

  • 该值必须是集合:0、1、2、4、8、16 等中的一个。 使用其他值可能会对性能或功能造成不利影响。
    • 由于 VMM 的加倍算法,该值应该是 2 的幂。
    • 大于 16 的 maxpgahead 值(预读量大于 64 KB)会超出某些磁盘设备 驱动程序的能力。 在这种情况下,预读的大小会保持在 64 KB。
    • 更大的 maxpgahead 值可用于条带状逻辑卷的顺序性能显得至关重要的系统中。
  • minpgaheadmaxpgahead 的值都为 0 能有效消除此机制。 这会给性能带来负面影响。 但是,在 I/O 随机的一些情况下,这可能也有用处,这时 I/O 的大小会使预读算法生效。
  • 对于非条带状文件系统,当 maxpgahead 值为 8 或 16 时,其顺序 I/O 性能 会达到可能的最大值。
  • 预读值从 minpgahead 增加到 maxpgahead 的过程很快,以至于 对于大多数文件大小而言,增大 minpgahead 并无益处。
  • 可以针对 JFS 和增强型 JFS 分别调整顺序预读功能。 JFS 预读页可以通过 minpgaheadmaxpgahead 进行调整,而 j2_minPageReadAheadj2_maxPageReadAhead 用于增强型 JFS。