10.2. pminfo 툴을 사용하여 사용 가능한 성능 지표에 대한 정보 표시
pminfo
툴은 사용 가능한 성능 지표에 대한 정보를 표시합니다. 다음 예제에서는 이 툴을 사용하여 표시할 수 있는 다양한 GFS2 지표를 보여줍니다.
10.2.1. 파일 시스템별로 현재 존재하는 glock 구조 수 검사
GFS2 glock 메트릭은 마운트된 각 GFS2 파일 시스템 및 해당 잠금 상태에 대해 현재 코어 수에 대한 glock 구조 수에 대한 통찰력을 제공합니다. GFS2에서 glock은 DLM을 결합하고 단일 상태 시스템으로 캐싱하는 데이터 구조입니다. 각 glock은 단일 DLM 잠금을 사용하는 1:1 매핑을 제공하며, 잠금 상태에 대한 캐싱을 제공하므로 단일 노드에서 수행되는 반복적인 작업이 DLM을 반복적으로 호출할 필요가 없으므로 불필요한 네트워크 트래픽을 줄일 수 있습니다.
다음 pminfo
명령은 마운트된 GFS2 파일 시스템당 glock 수 목록을 잠금 모드로 표시합니다.
# 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 메트릭은 각 파일 ystem에 대해 존재하는 각 glock의 수를 제공하며, 이러한 지표는 일반적으로 inode(inode 및 metadata) 또는 리소스 그룹(resource group 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) holder 플래그와 함께 glock 수 목록을 표시합니다.
# 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의 사용 가능한 각 지표와 사용에 대해 설명하는 "완료 지표 목록" 테이블에는 각 제어 추적점 및 사용법에 대해 설명합니다. 각 제어 추적 지점의 영향에 대한 설명 및 사용 가능한 옵션은 pminfo
의 도움말을 통해 사용할 수도 있습니다.
GFS2는 메트릭을 파일 시스템에 대한 승격 요청 수를 계산합니다. 이러한 요청은 첫 번째 시도에서 발생한 요청 수와 초기 승격 요청 후 부여된 "기타" 요청으로 구분됩니다. "기타" 승격이 증가하여 처음으로 승격되는 경우 파일 경합에 문제가 있음을 나타낼 수 있습니다.
승격 요청 지표와 같은 GFS2 데모 요청 메트릭은 파일 시스템에서 발생하는 데모 요청 수를 계산합니다. 그러나 이는 현재 노드에서 제공된 요청과 시스템의 다른 노드에서 가져온 요청 간에도 분할됩니다. 원격 노드의 많은 데모 요청은 지정된 리소스 그룹에 대한 두 노드 간의 경합을 나타낼 수 있습니다.
pminfo
툴은 사용 가능한 성능 지표에 대한 정보를 표시합니다. 다음 절차에서는 마운트된 각 GFS2 파일 시스템의 Wait (W) holder 플래그와 함께 glock 수 목록을 표시합니다. 다음 pminfo
명령은 마운트된 각 GFS2 파일 시스템의 Wait (W) holder 플래그와 함께 glock 수 목록을 표시합니다.
# 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