36.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)
매뉴얼 페이지를 참조하십시오.
opennoop를 사용하여 명령에서 열리는 파일을 추적할 수 있습니다.
하나의 터미널에서
opensnoop
프로그램을 실행합니다.# /usr/share/bcc/tools/opensnoop -n uname
위의 명령은
uname
명령 프로세스에서만 여는 파일의 출력을 출력합니다.다른 터미널에서 다음을 입력합니다.
$ uname
위의 명령은 특정 파일을 열고 다음 단계에서 캡처됩니다.
실행 중인
터미널
은 다음과 유사한 출력을 보여줍니다.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)
매뉴얼 페이지를 참조하십시오.
BIOStop를 사용하여 디스크의 I/O 작업 검사
하나의
터미널에서 BIOS
프로그램을 실행합니다.# /usr/share/bcc/tools/biotop 30
명령을 사용하면 디스크에서 I/O 작업을 수행하는 최상위 프로세스를 모니터링할 수 있습니다. 인수를 사용하면 명령이 30초 요약을 생성합니다.
참고인수를 제공하지 않으면 기본적으로 출력 화면이 1초마다 새로 고쳐집니다.
다른 터미널에서 다음을 입력합니다. 예를 들면 다음과 같습니다.
# dd if=/dev/vda of=/dev/zero
위의 명령은 로컬 하드 디스크 장치에서 콘텐츠를 읽고 출력을
/dev/zero
파일에 씁니다. 이 단계는BIOS
를 설명하기 위해 특정 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 파일 시스템이 읽기, 쓰기, 열기 또는 동기화(
fsync
) 작업을 수행하는 데 사용하는 시간을 측정합니다.1
인수는 프로그램이 1ms보다 느린 작업만 표시하도록 합니다.참고인수가 제공되지 않으면
xfsslower
는 기본적으로 10ms보다 느린 작업을 표시합니다.다른 터미널에서 다음을 입력합니다.
$ vim text
위의 명령은 ovs 편집기에 텍스트 파일을 생성하여 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
)- Read
- Write
- Sync
- OFF_KB
- KB의 파일 오프셋입니다. (0)
- 파일 이름
- 읽기, 쓰기 또는 동기화되는 파일입니다.
xfsslower
에 대한 세부 정보, 예제 및 옵션을 보려면 /usr/share/bcc/tools/doc/xfsslower_example.txt
파일을 참조하십시오.
fsync
에 대한 자세한 내용은 fsync(2)
매뉴얼 페이지를 참조하십시오.