42.2. 선택한 bcc-tools를 성능 분석에 사용
BPF Compiler Collection(BCC) 라이브러리의 사전 생성된 특정 프로그램을 사용하여 이벤트별로 시스템 성능을 효율적이고 안전하게 분석합니다. BCC 라이브러리에서 미리 생성된 프로그램 집합은 추가 프로그램 생성의 예제 역할을 할 수 있습니다.
사전 요구 사항
- 설치된 bcc-tools 패키지
- 루트 권한
execsnoop를 사용하여 시스템 프로세스 검사
하나의 터미널에서
execsnoop
프로그램을 실행합니다.# /usr/share/bcc/tools/execsnoop
다른 터미널에서 다음을 실행합니다. 예를 들면 다음과 같습니다.
$ ls /usr/share/bcc/tools/doc/
위의 경우
ls
명령의 수명이 짧은 프로세스가 생성됩니다.execsnoop
를 실행하는 터미널에는 다음과 유사한 출력이 표시됩니다.PCOMM PID PPID RET ARGS ls 8382 8287 0 /usr/bin/ls --color=auto /usr/share/bcc/tools/doc/ ...
execsnoop
프로그램은 시스템 리소스를 사용하는 각 새 프로세스의 출력 행을 인쇄합니다.ls
와 같이 매우 빨리 실행되는 프로그램의 프로세스도 감지하며 대부분의 모니터링 툴은 등록되지 않았습니다.execsnoop
출력에는 다음 필드가 표시됩니다.- PCOMM
-
상위 프로세스 이름입니다. (
ls
) - PID
-
프로세스 ID입니다. (
8382
) - PPID
-
상위 프로세스 ID입니다. (
8287
) - RET
-
프로그램 코드를 새 프로세스로 로드하는
exec()
시스템 호출(0)
의 반환 값입니다. - ARGS
- 시작된 프로그램의 인수와 관련된 위치입니다.
execsnoop
에 대한 자세한 내용, 예제 및 옵션을 보려면 /usr/share/bcc/tools/doc/execsnoop_example.txt
파일을 참조하십시오.
exec()
에 대한 자세한 내용은 exec(3)
도움말 페이지를 참조하십시오.
opensnoop를 사용하여 명령이 여는 파일을 추적합니다.
하나의 터미널에서
opensnoop
프로그램을 실행합니다.# /usr/share/bcc/tools/opensnoop -n uname
위의 출력은
uname
명령의 프로세스에 의해서만 열려 있는 파일의 출력을 인쇄합니다.다른 터미널에서 다음을 입력합니다.
$ uname
위의 명령은 다음 단계에서 캡처된 특정 파일을 엽니다.
opensnoop를
실행하는 터미널에는 다음과 유사한 출력이 표시됩니다.PID COMM FD ERR PATH 8596 uname 3 0 /etc/ld.so.cache 8596 uname 3 0 /lib64/libc.so.6 8596 uname 3 0 /usr/lib/locale/locale-archive ...
opensnoop
프로그램은 전체 시스템에서open()
시스템 호출을 감시하고, 그 과정에서uname
이 열려고 시도한 각 파일의 출력을 출력합니다.opensnoop
출력에는 다음 필드가 표시됩니다.- PID
-
프로세스 ID입니다. (
8596
) - COMM
-
프로세스 이름입니다. (
uname
) - FD
-
파일 설명자 -
open()
이 열려 있는 파일을 참조하기 위해 반환하는 값입니다. (3
) - ERR
- 모든 오류.
- PATH
-
open()
가 열려는 파일의 위치입니다.
명령이 존재하지 않는 파일을 읽으려고 하면
FD
열은-1
을 반환하고ERR
열은 관련 오류에 해당하는 값을 출력합니다. 그 결과opensnoop
는 제대로 작동하지 않는 애플리케이션을 식별하는 데 도움이 될 수 있습니다.
opensnoop
에 대한 자세한 내용, 예제 및 옵션을 보려면 /usr/share/bcc/tools/doc/opensnoop_example.txt
파일을 참조하십시오.
open()
에 대한 자세한 내용은 open(2)
매뉴얼 페이지를 참조하십시오.
biotop을 사용하여 디스크의 I/O 작업 검사
하나의
터미널에서 BIOS
프로그램을 실행합니다.# /usr/share/bcc/tools/biotop 30
명령을 사용하면 디스크에서 I/O 작업을 수행하는 최상위 프로세스를 모니터링할 수 있습니다. 인수를 사용하면 명령이 30초 요약을 생성할 수 있습니다.
참고인수를 제공하지 않으면 기본적으로 출력 화면이 1초마다 새로 고쳐집니다.
다른 터미널에서 다음을 입력합니다. 예를 들면 다음과 같습니다.
# dd if=/dev/vda of=/dev/zero
위의 명령은 로컬 하드 디스크 장치에서 콘텐츠를 읽고
/dev/zero
파일에 출력을 씁니다. 이 단계에서는biotop
을 설명하는 특정 I/O 트래픽을 생성합니다.biotop
을 실행하는 터미널은 다음과 유사한 출력을 보여줍니다.PID COMM D MAJ MIN DISK I/O Kbytes AVGms 9568 dd R 252 0 vda 16294 14440636.0 3.69 48 kswapd0 W 252 0 vda 1763 120696.0 1.65 7571 gnome-shell R 252 0 vda 834 83612.0 0.33 1891 gnome-shell R 252 0 vda 1379 19792.0 0.15 7515 Xorg R 252 0 vda 280 9940.0 0.28 7579 llvmpipe-1 R 252 0 vda 228 6928.0 0.19 9515 gnome-control-c R 252 0 vda 62 6444.0 0.43 8112 gnome-terminal- R 252 0 vda 67 2572.0 1.54 7807 gnome-software R 252 0 vda 31 2336.0 0.73 9578 awk R 252 0 vda 17 2228.0 0.66 7578 llvmpipe-0 R 252 0 vda 156 2204.0 0.07 9581 pgrep R 252 0 vda 58 1748.0 0.42 7531 InputThread R 252 0 vda 30 1200.0 0.48 7504 gdbus R 252 0 vda 3 1164.0 0.30 1983 llvmpipe-1 R 252 0 vda 39 724.0 0.08 1982 llvmpipe-0 R 252 0 vda 36 652.0 0.06 ...
biotop
출력에는 다음 필드가 표시됩니다.- PID
-
프로세스 ID입니다. (
9568
) - COMM
-
프로세스 이름입니다. (
dd
) - DISK
-
읽기 작업을 수행하는 디스크입니다. (
vda
) - I/O
- 수행된 읽기 작업 수입니다. (16294)
- kbytes
- 읽기 작업에서 도달한 K바이트 수입니다. (14,440,636)
- AVGms
- 평균 읽기 작업의 I/O 시간입니다. (3.69)
biotop
에 대한 자세한 내용, 예제 및 옵션을 보려면 /usr/share/bcc/tools/doc/biotop_example.txt
파일을 참조하십시오.
dd
에 대한 자세한 내용은 dd(1)
도움말 페이지를 참조하십시오.
예기치 않게 느린 파일 시스템 작업 노출을 위해 xfsslower 사용
하나의 터미널에서
xfsslower
프로그램을 실행합니다.# /usr/share/bcc/tools/xfsslower 1
위의 명령은 XFS 파일 시스템이 읽기, 쓰기, 열기 또는 동기화(f
sync
) 작업을 수행하는 데 소비하는 시간을 측정합니다.1
인수를 사용하면 프로그램이 1ms보다 느린 작업만 표시합니다.참고인수를 지정하지 않으면 기본적으로
xfsslower
는 10ms보다 느리게 작업을 표시합니다.다른 터미널에서 다음을 입력합니다.
$ vim text
위의 명령은
vim
편집기에서 텍스트 파일을 생성하여 XFS 파일 시스템과의 특정 상호 작용을 시작합니다.xfsslower를
실행하는 터미널에는 이전 단계에서 파일을 저장할 때 유사한 내용이 표시됩니다.TIME COMM PID T BYTES OFF_KB LAT(ms) FILENAME 13:07:14 b'bash' 4754 R 256 0 7.11 b'vim' 13:07:14 b'vim' 4754 R 832 0 4.03 b'libgpm.so.2.1.0' 13:07:14 b'vim' 4754 R 32 20 1.04 b'libgpm.so.2.1.0' 13:07:14 b'vim' 4754 R 1982 0 2.30 b'vimrc' 13:07:14 b'vim' 4754 R 1393 0 2.52 b'getscriptPlugin.vim' 13:07:45 b'vim' 4754 S 0 0 6.71 b'text' 13:07:45 b'pool' 2588 R 16 0 5.58 b'text' ...
위의 각 행은 파일 시스템에서 특정 임계값보다 더 많은 시간이 걸리는 작업을 나타냅니다.
xfsslower
는 예기치 않게 느린 작업을 수행할 수 있는 가능한 파일 시스템 문제를 노출하는 데 효과적입니다.xfsslower
출력에는 다음 필드가 표시됩니다.- COMM
-
프로세스 이름입니다. (
b'bash'
) - T
작업 유형입니다. (
R
)- 읽기
- w rite
- s ync
- OFF_KB
- KB의 파일 오프셋입니다. (0)
- 파일 이름
- 읽기, 쓰기 또는 동기화되는 파일입니다.
xfsslower
에 대한 자세한 내용, 예제 및 옵션을 보려면 /usr/share/bcc/tools/doc/xfsslower_example.txt
파일을 참조하십시오.
fsync
에 대한 자세한 내용은 fsync(2)
매뉴얼 페이지를 참조하십시오.