33장. I/O 및 파일 시스템 성능에 영향을 주는 요인
스토리지 및 파일 시스템 성능에 대한 적절한 설정은 스토리지 목적에 따라 크게 달라집니다.
I/O 및 파일 시스템 성능은 다음 요인의 영향을 받을 수 있습니다.
- 데이터 쓰기 또는 읽기 패턴
- 순차적 또는 임의
- 버퍼링 또는 직접 IO
- 기본 표시와 데이터 정렬
- 블록 크기
- 파일 시스템 크기
- 저널 크기 및 위치
- 액세스 시간 기록
- 데이터 신뢰성 보장
- 데이터 사전 가져오기
- 디스크 공간 사전 할당
- 파일 조각화
- 리소스 경합
33.1. I/O 및 파일 시스템 문제 모니터링 및 진단 툴
Red Hat Enterprise Linux 8에서 시스템 성능을 모니터링하고 I/O, 파일 시스템 및 해당 구성과 관련된 성능 문제를 진단하는 데 사용할 수 있는 툴은 다음과 같습니다.
-
vmstat
툴은 전체 시스템에서 프로세스, 메모리, 페이징, 블록 I/O, 인터럽트 및 CPU 활동에 대해 보고합니다. 이는 관리자가 I/O 하위 시스템이 성능 문제를 책임지고 있는지 여부를 결정하는 데 도움이 될 수 있습니다.vmstat
를 사용한 분석에서 I/O 하위 시스템에서 성능이 저하된 것으로 표시되면 관리자가iostat
도구를 사용하여 담당 I/O 장치를 확인할 수 있습니다. -
iostat
는 시스템의 I/O 장치 부하를 보고합니다.sysstat
패키지에서 제공합니다. -
blktrace
는 I/O 하위 시스템에서 시간을 소비하는 방법에 대한 자세한 정보를 제공합니다. 병행 유틸리티blkparse
는 blktrace의 원시 출력을 읽고blktrace
에서 기록한 입력 및 출력 작업의 요약을 사람이 읽을 수 있습니다.
BTT는
데이터가 I/O 스택의 각 영역에 소비되는 시간을 표시하여 I/O 하위 시스템에서 병목 현상을 더 쉽게 식별할 수 있도록 합니다. 이 유틸리티는blktrace
출력을 분석하고blktrace
패키지의 일부로 제공됩니다.blktrace
메커니즘에서 추적하고btt
에 의해 분석되는 몇 가지 중요한 이벤트는 다음과 같습니다.-
I/O 이벤트(Q
)
의 대기열 -
I/O를 드라이버 이벤트(D
)
로 디스패치 -
I/O 이벤트 완료(C
)
-
I/O 이벤트(Q
-
iowatcher
는blktrace
출력을 사용하여 시간 경과에 따라 I/O를 그래프로 표시할 수 있습니다. 디스크 I/O의 논리 블록 주소(LBA), 초당 메가바이트 단위 처리량, 초당 검색 수, 초당 I/O 작업 수에 중점을 둡니다. 그러면 장치의 1초당 한도에 도달하는 시기를 식별하는 데 도움이 됩니다. BCC(BPF Compiler Collection)는
eBPF
(extended Berkeley Packet Filter) 프로그램을 쉽게 생성할 수 있는 라이브러리입니다.eBPF
프로그램은 디스크 I/O, TCP 연결 및 프로세스 생성과 같은 이벤트에서 트리거됩니다. BCC 툴은/usr/share/bcc/tools/
디렉토리에 설치됩니다. 다음bcc-tools
는 성능을 분석하는 데 도움이 됩니다.-
biolatency
는 히스토그램의 블록 장치 I/O(디스크 I/O)의 대기 시간을 요약합니다. 이를 통해 장치 캐시 적중 및 캐시 누락에 대한 두 가지 모드와 대기 시간 이전 모드를 포함하여 배포를 연구할 수 있습니다. -
biosnoop
는 발급 프로세스 ID 및 I/O 대기 시간과 함께 각 I/O 이벤트를 표시하는 기본 블록 I/O 추적 툴입니다. 이 툴을 사용하여 디스크 I/O 성능 문제를 조사할 수 있습니다. -
biotop
은 커널의 블록 i/o 작업에 사용됩니다. -
filelife
도구는stat()
syscall을 추적합니다. -
fileslower
는 느린 동기 파일 읽기 및 쓰기를 추적합니다. -
filetop
는 파일 읽기 및 프로세스별 쓰기를 표시합니다. ext4slower
,nfsslower
및xfsslower
는 파일 시스템 작업이 특정 임계값보다 느리게 표시하는 도구이며 기본값은10ms
입니다.자세한 내용은 BPF Compiler Collection을 사용하여 시스템 성능 분석 에서 참조하십시오.
-
-
bpftace
는 성능 문제를 분석하는 데 사용되는eBPF
의 추적 언어입니다. 또한 시스템 관찰을 위해 BCC와 같은 추적 유틸리티를 제공하므로 I/O 성능 문제를 조사하는 데 유용합니다. 다음
SystemTap
스크립트는 스토리지 또는 파일 시스템 성능 문제를 진단하는 데 유용할 수 있습니다.-
disktop.stp
: 5초마다 디스크를 읽거나 쓰는 상태를 확인하고 해당 기간 동안 상위 10개 항목을 출력합니다. -
iotime.stp
: 읽기 및 쓰기 작업에 사용된 시간과 읽기 및 작성된 바이트 수를 표시합니다. -
traceio.stp
: 1초마다 관찰된 누적 I/O 트래픽을 기반으로 상위 10개의 실행 파일을 인쇄합니다. -
traceio2.stp
: 실행 가능한 이름과 프로세스 식별자를 지정된 장치에 대한 읽기 및 쓰기로 인쇄합니다. -
Inodewatch.stp
: 지정된 주 또는 부 장치의 지정된 inode에 읽기 또는 쓰기가 발생할 때마다 실행 파일 이름 및 프로세스 식별자를 인쇄합니다. -
inodewatch2.stp
: 지정된 주 또는 부 장치의 지정된 inode에서 속성이 변경될 때마다 실행 파일 이름, 프로세스 식별자 및 속성을 출력합니다.
-
추가 리소스
-
vmstat(8)
,iostat(1)
,blktrace(8)
, blktrace(8) ,blkparse(1)
,btt(1)
,bpftrace
,iowatcher(1)
도움말 페이지 - BPF Compiler Collection을 사용하여 시스템 성능 분석