Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

8.2. 성능 문제 모니터링 및 진단

Red Hat Enterprise Linux 7은 시스템 성능을 모니터링하고 I/O 및 파일 시스템 및 해당 구성과 관련된 성능 문제를 진단하는 데 유용한 여러 툴을 제공합니다. 이 섹션에서는 사용 가능한 툴을 간략하게 설명하고 이를 사용하여 I/O 및 파일 시스템 관련 성능 문제를 모니터링하고 진단하는 방법에 대한 예를 제공합니다.

8.2.1. vmstat를 사용하여 시스템 성능 모니터링

vmstat는 전체 시스템의 프로세스, 메모리, 페이징, 블록 I/O, 인터럽트 및 CPU 활동에 대한 보고서입니다. 관리자가 I/O 하위 시스템이 성능 문제를 담당하는지 여부를 결정하는 데 도움이 될 수 있습니다.
I/O 성능과 가장 관련된 정보는 다음 열에 있습니다.
si
의 스왑 또는 스왑 공간(KB)에서 읽습니다.
so
스왑 공간(KB)에 씁니다.
bi
KB의 블록 또는 쓰기 작업 블록입니다.
bo
KB에서 읽기 작업을 차단하거나 차단합니다.
wa
I/O 작업이 완료될 때까지 대기 중인 대기열의 일부입니다.
스왑 및 스왑 아웃은 스왑 공간과 데이터가 동일한 장치에 있고 메모리 사용량의 표시로 특히 유용합니다.
또한 free, buff 및 캐시 열은 나중 쓰기 빈도를 식별하는 데 도움이 될 수 있습니다. 캐시 값이 갑자기 삭제되고 사용 가능한 값이 증가하면 나중 쓰기 및 페이지 캐시 무효화가 시작되었습니다.
vmstat 를 사용한 분석에 I/O 하위 시스템이 성능이 저하된 것으로 표시되면 관리자가 iostat 를 사용하여 담당 I/O 장치를 확인할 수 있습니다.
vmstatprocps-ng 패키지에서 제공합니다. vmstat 사용에 대한 자세한 내용은 도움말 페이지를 참조하십시오.
$ man vmstat

8.2.2. iostat를 사용하여 I/O 성능 모니터링

iostatsysstat 패키지에서 제공합니다. 시스템의 I/O 장치 로드에 대해 보고합니다. vmstat 를 사용한 분석에 I/O 하위 시스템이 성능이 저하된 것으로 표시되면 iostat 를 사용하여 담당 I/O 장치를 확인할 수 있습니다.
iostat 도움말 페이지에 정의된 매개변수를 사용하여 특정 장치에 iostat 보고서의 출력을 집중할 수 있습니다.
$ man iostat

8.2.2.1. blktrace를 사용한 자세한 I/O 분석

b lktrace 는 I/O 하위 시스템에서 시간을 소비하는 방법에 대한 자세한 정보를 제공합니다. 기능 유틸리티 blkparseblktrace 에서 원시 출력을 읽고 blktrace 에서 기록한 입력 및 출력 작업에 대해 사람이 읽을 수 있는 요약을 생성합니다.
이 툴에 대한 자세한 내용은 blktrace(8)blkparse(1) 도움말 페이지를 참조하십시오.
$ man blktrace
$ man blkparse

8.2.2.2. btt를 사용하여 blktrace 출력 분석

btt 유틸리티는 blktrace 패키지의 일부로 제공됩니다. blktrace 출력을 분석하고 I/O 스택의 각 영역에서 데이터가 소비하는 시간을 표시하여 I/O 하위 시스템에서 병목 현상을 보다 쉽게 파악할 수 있습니다.
blktrace 메커니즘에서 추적하고 btt 에서 분석한 중요한 이벤트 중 일부는 다음과 같습니다.
  • I/O 이벤트 Queuing (Q)
  • 드라이버 이벤트(D)에 I/O의 디스패치
  • I/O 이벤트 완료 (C)
이벤트 조합을 검사하여 I/O 성능 문제와 관련된 요소를 포함하거나 제외할 수 있습니다.
각 I/O 장치의 하위 포트에서 타이밍을 검사하려면 I/O 장치에 대해 캡처된 blktrace 이벤트 사이의 타이밍을 확인합니다. 예를 들어 다음 명령은 대기 시간 아래의 평균으로 스케줄러, 드라이버 및 하드웨어 계층을 포함하는Q2C(커널 I/O 스택)의 하위 부분에서 보낸 총 시간을 보고합니다.
$ iostat -x

[...]
Device:         await r_await w_await
vda             16.75    0.97  162.05
dm-0            30.18    1.13  223.45
dm-1             0.14    0.14    0.00
[...]
장치가 요청(D2C)을 서비스하는 데 시간이 오래 걸리는 경우 장치를 과부하하거나 장치로 전송된 워크로드는 하위 최적일 수 있습니다. Q2G(Q2G)로 디스패치되기 전에 블록 I/O가 오랜 시간 대기 중인 경우 사용 중인 스토리지가 I/O 로드를 제공할 수 없음을 나타낼 수 있습니다. 예를 들어 LUN 큐 전체 조건에 도달하여 I/O가 스토리지 장치로 디스패치되지 않습니다.
인접한 I/O에서의 타이밍을 살펴보면 일부 유형의 병목 상황에 대한 통찰력을 제공할 수 있습니다. 예를 들어, btt 에서 블록 계층(Q2Q)으로 전송되는 요청 사이의 시간 간격이 블록 계층(Q2C)에서 사용된 총 시간보다 크면 I/O 요청과 I/O 하위 시스템 간에 유휴 시간이 성능 문제가 발생하지 않음을 나타냅니다.
인접한 I/O의 Q2C 값을 비교하면 스토리지 서비스 시간의 변동성이 표시될 수 있습니다. 값은 다음 중 하나일 수 있습니다.
  • 작은 범위와 상당히 일치하거나
  • 배포 범위에서 높은 변수이며 가능한 스토리지 장치 측 혼잡 문제를 나타냅니다.
이 툴에 대한 자세한 내용은 btt(1) 도움말 페이지를 참조하십시오.
$ man btt

8.2.2.3. iowatcher를 사용하여 blktrace 출력 분석

iowatcher 툴은 blktrace 출력을 사용하여 시간이 지남에 따라 I/O를 그래프로 표시할 수 있습니다. 디스크 I/O의 논리 블록 주소(LBA), 초당 처리량(MB), 초당 검색 수, 초당 I/O 작업 수에 중점을 둡니다. 이렇게 하면 장치의 1초당 작업 제한에 도달할 시기를 식별하는 데 도움이 될 수 있습니다.
이 툴에 대한 자세한 내용은 iowatcher(1) 도움말 페이지를 참조하십시오.

8.2.3. SystemTap을 사용한 스토리지 모니터링

Red Hat Enterprise Linux 7 SystemTap Beginners 가이드 에는 스토리지 성능 프로파일링 및 모니터링에 유용한 몇 가지 샘플 스크립트가 포함되어 있습니다.
다음 SystemTap 예제 스크립트는 스토리지 성능과 관련이 있으며 스토리지 또는 파일 시스템 성능 문제를 진단하는 데 유용할 수 있습니다. 기본적으로 /usr/share/doc/systemtap-client/examples/io 디렉터리에 설치됩니다.
disktop.stp
5초마다 디스크 읽기/쓰기 상태를 확인하고 해당 기간 동안 상위 10개의 항목을 출력합니다.
iotime.stp
읽기 및 쓰기 작업에 소요되는 시간 및 읽기 및 쓰기 바이트 수를 출력합니다.
traceio.stp
1초마다 관찰되는 누적 I/O 트래픽을 기반으로 상위 10개의 실행 파일을 출력합니다.
traceio2.stp
실행 가능한 이름과 프로세스 ID를 지정된 장치에 읽기 및 쓰기로 출력합니다.
inodewatch.stp
지정된 메이저/마이너 장치의 지정된 inode에 읽기 또는 쓰기가 발생할 때마다 실행 가능한 이름과 프로세스 ID를 출력합니다.
inodewatch2.stp
속성이 지정된 메이저/마이너 장치의 지정된 inode에서 변경될 때마다 실행 가능한 이름, 프로세스 식별자 및 속성을 출력합니다.