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 장치를 확인할 수 있습니다.
vmstat 는 procps-ng 패키지에서 제공합니다. vmstat 사용에 대한 자세한 내용은 도움말 페이지를 참조하십시오.
man vmstat
$ man vmstat
8.2.2. iostat를 사용하여 I/O 성능 모니터링 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
iostat 은 sysstat 패키지에서 제공합니다. 시스템의 I/O 장치 로드에 대해 보고합니다. vmstat 를 사용한 분석에 I/O 하위 시스템이 성능이 저하된 것으로 표시되면 iostat 를 사용하여 담당 I/O 장치를 확인할 수 있습니다.
iostat 도움말 페이지에 정의된 매개변수를 사용하여 특정 장치에 iostat 보고서의 출력을 집중할 수 있습니다.
man iostat
$ man iostat
8.2.2.1. blktrace를 사용한 자세한 I/O 분석 링크 복사링크가 클립보드에 복사되었습니다!
링크 복사링크가 클립보드에 복사되었습니다!
b lktrace 는 I/O 하위 시스템에서 시간을 소비하는 방법에 대한 자세한 정보를 제공합니다. 기능 유틸리티 blkparse 는 blktrace 에서 원시 출력을 읽고 blktrace 에서 기록한 입력 및 출력 작업에 대해 사람이 읽을 수 있는 요약을 생성합니다.
이 툴에 대한 자세한 내용은 blktrace(8) 및 blkparse(1) 도움말 페이지를 참조하십시오.
man blktrace
$ man blktrace
man blkparse
$ 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 스택)의 하위 부분에서 보낸 총 시간을 보고합니다.
장치가 요청(
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
$ 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에서 변경될 때마다 실행 가능한 이름, 프로세스 식별자 및 속성을 출력합니다.