Go to main content

Oracle® ZFS Storage Appliance 分析指南,发行版 OS8.8.0

退出打印视图

更新时间: 2018 年 11 月
 
 

Cache: ARC Accesses(高速缓存:ARC 访问次数)

ARC 是自适应替换高速缓存,并且是用于文件系统和卷数据的 DRAM 内高速缓存。此统计信息显示了对 ARC 的访问次数,并允许监测其使用情况和性能。

何时检查 ARC 访问次数

您可以在分析性能问题时检查 ARC 访问次数,以便了解在 ARC 中缓存当前工作负荷的情况。

ARC 访问次数细分

可用的高速缓存 ARC 访问次数细分包括:

表 14  ARC 访问次数细分
细分
说明
hit/miss(命中/未命中)
ARC 查找的结果。命中/未命中状态如下表所述。
filename(文件名)
从 ARC 请求的文件名。使用此细分可以使用分层结构模式,以便导航到各文件系统目录。
L2ARC eligibility(L2ARC 适用性)
这是在访问 ARC 时所测量的 L2ARC 高速缓存的适用性。大量未命中 ARC 但符合 L2ARC 的访问表明工作负荷可能会受益于 2 级高速缓存设备。
project(项目)
显示了正在访问 ARC 的项目。
share(共享资源)
显示了正在访问 ARC 的共享资源。
LUN
显示了正在访问 ARC 的 LUN。

执行性能影响中所述,将细分(例如按文件名)保持为启用状态可能是开销最高的。

命中/未命中状态包括:

表 15  命中/未命中细分
命中/未命中细分
说明
data hits(数据命中)
数据块位于 ARC DRAM 高速缓存中且返回了该数据块。
data misses(数据未命中)
数据块不在 ARC DRAM 高速缓存中。将从 L2ARC 高速缓存设备(如果存在该设备且数据缓存在其上)或池磁盘中读取该数据。
metadata hits(元数据命中)
元数据块位于 ARC DRAM 高速缓存中且返回了该元数据块。元数据包括引用数据块的盘上文件系统框架。下面列出了其他示例。
metadata misses(元数据未命中)
元数据块不在 ARC DRAM 高速缓存中。将从 L2ARC 高速缓存设备(如果存在该设备且数据缓存在其上)或池磁盘中读取该数据。
prefetched data/metadata hits/misses(预取的数据/元数据命中/未命中)
通过预取机制而不是直接从应用程序请求触发的 ARC 访问。下文中提供了有关预取的更多详细信息。

元数据

元数据示例:

  • 文件系统块指针

  • 目录信息

  • 重复数据删除表

  • ZFS uberblock

预取

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

表 16  预取类型
类型
说明
prefetched data misses(预取的数据未命中)
预取识别了一个顺序工作负荷,并通过为该数据执行 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。

进一步分析

要分析 ARC 未命中情况,请使用 "Cache ARC size"(高速缓存-ARC 大小)检查 ARC 是否已经扩大到使用可用的 DRAM。