41.2. SystemTap을 사용하여 각 파일을 읽거나 쓰는 I/O 시간 추적
the iotime.stp SystemTap 스크립트를 사용하여 각 프로세스가 파일에서 읽거나 쓰는 데 걸리는 시간을 모니터링할 수 있습니다. 이를 통해 시스템에서 로드 속도가 느린 파일을 확인할 수 있습니다.
사전 요구 사항
- Systemtap 설치에 설명된 대로 SystemTap을 설치했습니다.
절차
the iotime.stp 스크립트를 실행합니다.
# stap --example iotime.stp
이 스크립트는 시스템 호출을 열고, 닫히고, 읽고, 파일에 쓸 때마다 추적합니다. 각 파일에서 시스템 호출 액세스에 대해 이 명령은 모든 읽기 또는 쓰기가 완료되는 데 걸리는 마이크로초 수를 계산하고, 바이트 단위로, 파일에서 읽거나 쓰는 데이터의 양을 추적합니다.
출력에는 다음이 포함됩니다.
- 타임스탬프(마이크로초)
- 프로세스 ID 및 프로세스 이름
-
액세스
oriotime
플래그 액세스된 파일
프로세스가 데이터를 읽거나 쓸 수 있는 경우 한 쌍의 액세스 및
iotime
행이 함께 표시되어야 합니다. 액세스 행은 지정된 프로세스가 파일에 액세스하기 시작한 시간을 나타냅니다. 액세스 행의 끝은 읽거나 쓴 데이터의 양을 표시합니다. Theiotime
행은 읽기 또는 쓰기를 수행하기 위해 프로세스가 소요한 시간(마이크로초)을 표시합니다.
the iotime.stp
스크립트의 출력은 다음과 유사합니다.
[...] 825946 3364 (NetworkManager) access /sys/class/net/eth0/carrier read: 8190 write: 0 825955 3364 (NetworkManager) iotime /sys/class/net/eth0/carrier time: 9 [...] 117061 2460 (pcscd) access /dev/bus/usb/003/001 read: 43 write: 0 117065 2460 (pcscd) iotime /dev/bus/usb/003/001 time: 7 [...] 3973737 2886 (sendmail) access /proc/loadavg read: 4096 write: 0 3973744 2886 (sendmail) iotime /proc/loadavg time: 11 [...]