리눅스 block I/O 분석
blktrace와 blkparse를 사용하여 리눅스 block I/O 분석
blktrace
리눅스 커널의 Block I/O layer에서 발생하는 block I/O를 추적하는 도구.
blktrace 설치
sudo apt update
sudo apt-get install blktrace
blktrace 사용법
#blktrace -d {관찰하고자 하는 storage device 이름} [-o {출력 파일명}] [-w {관측 시간(초)}] [-a {관측하고자 하는 action}]
blktrace -d /dev/nvme0n1 -o test -w 30
관측하고자 하는 device 이름은 fdisk -l
명령어를 통해서 확인 가능하다.
Block I/O 데이터는 CPU별로 수집된다.
blkparse
blktrace를 통해 수집한 CPU별 block I/O 바이너리 데이터를 지정한 형식으로 파싱하는 도구.
blktrace를 설치할 때 같이 설치되므로 별도의 설치과정은 필요하지 않다.
blkparse 사용법
https://linux.die.net/man/1/blkparse
#blkparse {blktrace 출력파일 이름} -f"{출력 포맷}" -a {파싱하고자 하는 action} -o {출력 파일명}
blkparse test -f "%5T.%5T, %M, %S, %n, %d, %a, %C\n" -o output.txt
- 출력 포맷
- T: 타임 스탬프 (초 단위)
- t: 타임 스탬프 (나노초 단위)
- %5T.%5t: {5자리 s}.{5자리 ns}
- M: Device 번호
- S: 섹터 번호
- n: 요청한 블록 수 (4KB 단위)
- N: 요청한 바이트 수 (byte 단위)
- a: action
- C: 커맨드