Oracle® ZFS Storage Appliance 分析指南,发行版 2013.1.5.0

退出打印视图

更新时间: 2016 年 2 月
 
 

详细信息

元数据

元数据示例:

  • 文件系统块指针

  • 目录信息

  • 重复数据删除表

  • ZFS uberblock

预取

预取是用于提高流读取工作负荷的性能的一种机制。它将分析 I/O 活动以识别顺序读取,并可以提前发出额外的读取,以使得在应用程序请求数据前,该数据已在高速缓存中。预取在 ARC 之前发生(通过访问 ARC 实现),当尝试了解 ARC 活动时,请牢记这一点。例如,如果看到:

表 11  预取类型
类型
说明
prefetched data missess(预取的数据未命中)
预取识别了一个顺序工作负荷,并通过为该数据执行 ARC 访问来请求提前将数据缓存到 ARC 中。该数据尚未在高速缓存中,因此这是 "miss"(未命中),将从磁盘中读取数据。这是正常情况,是预取从磁盘填充 ARC 的方式。
prefeteched data hits(预取的数据命中)
预取识别了一个顺序工作负荷,并通过为该数据执行 ARC 访问来请求提前将数据缓存到 ARC 中。事实上,该数据已经在 ARC 中,因此这些访问将以 "hits"(命中)状态返回(因此实际上无需预取 ARC 访问)。如果以顺序方式重复读取缓存的数据,将会发生此情况。

数据被预取后,应用程序可以通过其自己的 ARC 访问来请求该数据。请注意,大小可能不同:执行预取时 I/O 大小可能为 128 KB,而应用程序读取时 I/O 大小可能为 8 KB。例如,以下信息看起来好像没有直接关系:

  • Data hits: 368(数据命中:368)

  • Prefetch data misses: 23(预取数据未命中:23)

但实际情况可能是:如果预取使用 128 KB 大小的 I/O 进行请求,则 23 x128 = 2944 KB。如果应用程序使用 8 KB 大小的 I/O 进行请求,则 368 x 8 = 2944 KB。