存储 频道

NetApp 性能调优:如何不加磁盘提高性能

智能缓存

  PAM 中实施的缓存策略,旨在优化小块随机读取对存储系统的访问。随机读取是指对存储系统磁盘中非邻接数据的读取。此类读取在逻辑位置上并不相邻,因此它们比起进行本地读取较多的工作而言会更难满足,需要更多的磁盘寻道操作和更长的平均读取延迟时间。另外,由于此类读取是随机的(由定义上看),所以根本无法预测所需的下一个块的位置并提前获取。

  相反,连续读取因能够同时读取磁盘中的大量连续数据而经常得到满足。而且,不少算法都能够有效识别连续读取活动并预先读取数据。因此,我们最好是直接从磁盘中读取此类数据,而为可能再次读取的随机访问数据留出可用的读取缓存。

  这正是 PAM 缓存算法试图实现的方式:默认情况下,它们会尝试从连续和(或)低价值的数据中区分出高价值的随机读取数据并将其保留在缓存中,以此避免耗时的磁盘读取过程。

  需要注意的是,PAM 缓存是基于 WAFL 来实现的。因为到了此时,我们已拥有比原来更为充足的数据信息,可对需缓存和可放弃的数据做出更为明智的决定。
为满足各种独特需求,NetApp 还提供了更改缓存行为的性能。PAM 支持以下三种操作模式:

  默认模式,同时缓存数据和元数据。
  元数据模式,仅缓存元数据。
  低优先级模式,可缓存连续读取数据和其它低优先级数据。

默认模式

  默认模式会同时缓存用户数据和元数据,类似于 Data ONTAP 为 WAFL 缓冲区高速缓存实施的缓存策略。对于 NFS 和 CIFS 等文件服务协议,元数据包括了维持文件和目录结构所需的数据。而在 SAN 中,元数据则包括了用于 LUN 数据簿记的少量块。

  此模式最适用于工作集大小不超过 PAM 缓存大小的情况。而且,在有频繁访问的数据热点时也十分有用,可确保这些数据驻留在缓存中。

元数据模式

  在此模式下,只有存储系统元数据才会进行缓存。对于很多随机工作而言,在缓存操作有效的一段时间内很少会重复使用应用程序数据。而元数据则不同,这些工作通常都需要重复使用它们,因此,缓存元数据将有助提高性能。另外,对于无法有效缓存的较大数据集(即活动数据集超出缓存的大小),仅缓存元数据也是一种可行的方法。

低优先级模式

  在低优先级模式下,缓存对象不只是普通的数据和元数据,平时排除在外的低优先级数据也会包含在内。低优先级数据包括大型连续读取数据和最近写入的新增数据。写入数据一般都不会进行缓存,因为总写入工作很可能体积庞大,以致将缓存溢出并导致有用数据流失。此外,由于写入数据通常都不会再次读取(它们一般在执行写入时已经缓存到本地系统上),因此并不适合缓存。

  在一些应用程序中,数据可能需要在写入后的某个滞后时间再次读取以便上游缓存可清除数据,低优先级模式在此时将十分有用。例如,基于 Web 的应用程序会创建新数据并分发 Web 用户可在日后访问的链接,对于此类应用程序,此模式可避免磁盘读取。在某些 Web 应用程序中,我们发现首次读取的滞后时间很长,以致只能从磁盘中获得数据(即使后续数据调用足够频繁,可以使上游缓存处理)。通过将此类磁盘读取变为缓存命中,低优先级模式下的 PAM 会使此类应用程序提速。
此时,您自然想弄明白 PAM 是否有助于缓解工作量以及应采用哪种模式。

0
相关文章