Menu Close

9.2.4. 使用基于内核追踪点的指标检查文件系统操作延迟

GFS2 PMDA 支持从 GFS2 内核追踪点收集指标数据。默认情况下,禁用了对这些指标的读取。当收集指标时,激活这些指标会打开 GFS2 内核跟踪点来填充指标值。当启用了这些内核追踪点指标数据时,这可能会对性能吞吐量产生小的影响。

PCP 提供了 pmstore 工具,它允许您根据指标值修改 PMDA 设置。gfs2.control.* 指标允许切换 GFS2 内核追踪点。以下示例使用 pmstore 命令启用所有 GFS2 内核追踪点。

# pmstore gfs2.control.tracepoints.all 1
gfs2.control.tracepoints.all old value=0 new value=1

当运行这个命令时,PMDA 会切换 debugfs 文件系统中的所有 GFS2 追踪点。PCP 中 GFS2 可用指标的完整列表中的"完整指标列表"表说明了每个控制追踪点及其用法,也可以通过 pminfo 中的 帮助切换了解每个控制追踪点及其可用选项的影响。

GFS2 提升指标计算文件系统中提升请求的数量。这些请求由首次尝试和"其他"在初始提升请求后授予的请求数量分隔。第一次提升的时间减少"其他人"的提升可指示文件争用问题。

GFS2 降级请求指标(如提升请求指标)统计文件系统中的降级请求数。但是,这些也被分隔为来自当前节点的请求和来自系统中其他节点的请求。来自远程节点的大量降级请求可能会表示给定资源组在两个节点间出现竞争。

pminfo 工具显示有关可用性能指标的信息。这个过程显示每个挂载的 GFS2 文件系统的 Wait(W)拥有者标签的 glocks 数。以下 pminfo 命令显示每个挂载的 GFS2 文件系统的 Wait(W)拥有者标签的 glocks 数。

# pminfo -f gfs2.latency.grant.all gfs2.latency.demote.all

gfs2.latency.grant.all
    inst [0 or "afc_cluster:data"] value 0
    inst [1 or "afc_cluster:bin"] value 0

gfs2.latency.demote.all
    inst [0 or "afc_cluster:data"] value 0
    inst [1 or "afc_cluster:bin"] value 0

做好的做法是,在工作负载运行时没有问题的情况下观察一般的值,因此当这些值不在正常的范围内时,可以注意到性能的变化。

例如,您可能会看到等待完成的提升请求数量的变化,而不是在第一次请求时就可以完成。您可以从以下命令的输出结果中看到相关的信息。

# pminfo -f gfs2.latency.grant.all gfs2.latency.demote.all

gfs2.tracepoints.promote.other.null_lock
     inst [0 or "afc_cluster:data"] value 0
     inst [1 or "afc_cluster:bin"] value 0

gfs2.tracepoints.promote.other.concurrent_read
     inst [0 or "afc_cluster:data"] value 0
     inst [1 or "afc_cluster:bin"] value 0

gfs2.tracepoints.promote.other.concurrent_write
     inst [0 or "afc_cluster:data"] value 0
     inst [1 or "afc_cluster:bin"] value 0

gfs2.tracepoints.promote.other.protected_read
     inst [0 or "afc_cluster:data"] value 0
     inst [1 or "afc_cluster:bin"] value 0

gfs2.tracepoints.promote.other.protected_write
     inst [0 or "afc_cluster:data"] value 0
     inst [1 or "afc_cluster:bin"] value 0

gfs2.tracepoints.promote.other.exclusive
     inst [0 or "afc_cluster:data"] value 0
     inst [1 or "afc_cluster:bin"] value 0

以下命令的输出允许您确定远程降级请求的大幅增加(特别是如果来自其他集群节点)。

# pminfo -f gfs2.tracepoints.demote_rq.requested

gfs2.tracepoints.demote_rq.requested.remote
     inst [0 or "afc_cluster:data"] value 0
     inst [1 or "afc_cluster:bin"] value 0

gfs2.tracepoints.demote_rq.requested.local
     inst [0 or "afc_cluster:data"] value 0
     inst [1 or "afc_cluster:bin"] value 0

以下命令的输出可能会显示,出现无法解释的日志清除数量的增加。

# pminfo -f gfs2.tracepoints.log_flush.total]

gfs2.tracepoints.log_flush.total
     inst [0 or "afc_cluster:data"] value 0
     inst [1 or "afc_cluster:bin"] value 0