10.2. 使用 pminfo 工具显示可用性能指标的信息


pminfo 工具显示有关可用性能指标的信息。以下示例显示了您可以使用这个工具显示的不同 GFS2 指标。

10.2.1. 检查每个文件系统目前存在的 glock 结构数

GFS2 glock 指标可让您了解当前挂载的 GFS2 文件系统的 glock 结构数及其锁定状态。在 GFS2 中,glock 是一个数据结构,它将合并 DLM 并缓存到单个状态机器。每个 glock 都有一个与单个 DLM 锁定的 1:1 映射,为锁定状态提供缓存,使得在单个节点中进行的重复操作不必重复调用 DLM,从而减少不必要的网络流量。

以下 pminfo 命令按其锁定模式显示每个挂载的 GFS2 文件系统的 glocks 数列表。

# pminfo -f gfs2.glocks

gfs2.glocks.total
    inst [0 or "afc_cluster:data"] value 43680
    inst [1 or "afc_cluster:bin"] value 2091

gfs2.glocks.shared
    inst [0 or "afc_cluster:data"] value 25
    inst [1 or "afc_cluster:bin"] value 25

gfs2.glocks.unlocked
    inst [0 or "afc_cluster:data"] value 43652
    inst [1 or "afc_cluster:bin"] value 2063

gfs2.glocks.deferred
    inst [0 or "afc_cluster:data"] value 0
    inst [1 or "afc_cluster:bin"] value 0

gfs2.glocks.exclusive
    inst [0 or "afc_cluster:data"] value 3
    inst [1 or "afc_cluster:bin"] value 3

10.2.2. 根据类型检查每个文件系统目前存在的 glock 结构数

GFS2 glstats 指标给出了每种 glock 类型的计数,这些 glock 每个 ystem 文件都存在,它们通常属于内节点(inode 和 metadata)或者资源组(资源组元数据)类型。

以下 pminfo 命令显示每个挂载的 GFS2 文件系统中的每种 Glock 类型的数目。

# pminfo -f gfs2.glstats

gfs2.glstats.total
    inst [0 or "afc_cluster:data"] value 43680
    inst [1 or "afc_cluster:bin"] value 2091

gfs2.glstats.trans
    inst [0 or "afc_cluster:data"] value 3
    inst [1 or "afc_cluster:bin"] value 3

gfs2.glstats.inode
    inst [0 or "afc_cluster:data"] value 17
    inst [1 or "afc_cluster:bin"] value 17

gfs2.glstats.rgrp
    inst [0 or "afc_cluster:data"] value 43642
    inst [1 or "afc_cluster:bin"] value 2053

gfs2.glstats.meta
    inst [0 or "afc_cluster:data"] value 1
    inst [1 or "afc_cluster:bin"] value 1

gfs2.glstats.iopen
    inst [0 or "afc_cluster:data"] value 16
    inst [1 or "afc_cluster:bin"] value 16

gfs2.glstats.flock
    inst [0 or "afc_cluster:data"] value 0
    inst [1 or "afc_cluster:bin"] value 0

gfs2.glstats.quota
    inst [0 or "afc_cluster:data"] value 0
    inst [1 or "afc_cluster:bin"] value 0

gfs2.glstats.journal
    inst [0 or "afc_cluster:data"] value 1
    inst [1 or "afc_cluster:bin"] value 1

10.2.3. 检查处于等待状态的 glock 结构数量

最重要的拥有者标志是 H(holder:表示赋予请求的锁定)和 W(wait:等待请求完成时设置)。这些标记分别在赋予锁定请求和锁定请求队列中设置。

以下 pminfo 命令显示每个挂载的 GFS2 文件系统的 Wait(W)拥有者标签的 glocks 数。

# pminfo -f gfs2.holders.flags.wait

gfs2.holders.flags.wait
    inst [0 or "afc_cluster:data"] value 0
    inst [1 or "afc_cluster:bin"] value 0

如果您看到在资源组锁定中排队了大量等待的请求,,那么可能有很多原因。一个原因可能是,在文件系统中,相对于资源组有大量的节点。另一个可能的原因是,文件系统可能接近完全被使用(平均来讲,需要较长的搜索时间)可以通过添加更多存储并使用 gfs2_grow 命令来扩展文件系统来提高这种情况。

10.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
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.