23장. OProfile
OProfile 은 oprofile 패키지에서 제공하는 낮은 오버헤드의 시스템 전체 성능 모니터링 툴입니다. 시스템의 프로세서의 성능 모니터링 하드웨어를 사용하여 메모리가 참조되는 경우, 두 번째 수준 캐시 요청 수 및 수신된 하드웨어 인터럽트 수와 같이 시스템의 커널 및 실행 파일에 대한 정보를 검색합니다. 또한 OProfile 은 JVM(Java Virtual Machine)에서 실행되는 애플리케이션을 프로파일링할 수 있습니다.
다음은 OProfile:에서 제공하는 도구의 목록입니다.
- ophelp
- 시스템 프로세서에 대한 사용 가능한 이벤트를 각 이벤트에 대한 간략한 설명과 함께 표시합니다.
- operf
기본 프로파일링 툴입니다.
operf
툴에서는 시스템의 성능 모니터링 하드웨어를 사용하여 OProfile 을 다른 툴과 함께 작동할 수 있는 Linux 성능 이벤트 하위 시스템을 사용합니다.이전에 사용된
opcontrol
툴과 달리 초기 설정은 필요하지 않으며--system-wide
옵션을 사용하지 않는 경우 루트 권한 없이 사용할 수 있습니다.
- ocount
- 절대 이벤트 발생 횟수를 계산하는 툴입니다. 프로세스당, CPU당 또는 스레드당 전체 시스템의 이벤트를 계산할 수 있습니다.
- opimport
- 샘플 데이터베이스 파일을 외부 바이너리 형식에서 시스템의 네이티브 형식으로 변환합니다. 다른 아키텍처의 샘플 데이터베이스를 분석할 때만 이 옵션을 사용합니다.
- opannotate
- 디버깅 기호를 사용하여 애플리케이션을 컴파일하는 경우 실행 파일에 대한 주석이 달린 소스를 생성합니다.
- opreport
- 기록된 성능 데이터를 읽고 프로필 사양에 지정된 대로 요약을 생성합니다. 다른 프로필 사양을 사용하여 동일한 프로필 데이터에서 다른 보고서를 생성할 수 있습니다.
23.1. OProfile 사용 링크 복사링크가 클립보드에 복사되었습니다!
operf
는 프로파일링 데이터를 수집하는 데 권장되는 도구입니다. 툴에는 초기 구성이 필요하지 않으며 모든 옵션이 명령줄에 전달됩니다. 레거시 opcontrol
도구와 달리 operf
는 root
권한 없이 실행할 수 있습니다. operf 도구를 사용하는 방법에 대한 자세한 내용은 시스템 관리자 가이드의 operf
사용 장을 참조하십시오.
예 23.1. ocount 사용
다음 예제에서는 sleep
유틸리티를 실행하는 동안 ocount
로 이벤트 양을 계산하는 방법을 보여줍니다.
이벤트는 프로세서 구현에 따라 다릅니다. Perf _event_paranoid
옵션을 설정하거나 개수를 사용자 공간 이벤트로만 제한해야 할 수 있습니다.
예 23.2. 기본 operf usage
다음 예에서 operf
도구는 ls -l ~
명령에서 프로파일링 데이터를 수집하는 데 사용됩니다.
ls
명령에 대한 디버깅 정보를 설치합니다.debuginfo-install -y coreutils
# debuginfo-install -y coreutils
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프로파일링을 실행합니다.
operf ls -l ~
$ operf ls -l ~ Profiling done.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 수집된 데이터를 분석합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
예 23.3. operf to Profile a Java Program에 사용
다음 예에서 operf
도구는 Java (JIT) 프로그램에서 프로파일링 데이터를 수집하는 데 사용되며 opreport
도구는 기호별 데이터를 출력하는 데 사용됩니다.
이 예제에 사용된 데모 Java 프로그램을 설치합니다. 이 패키지는 선택적 채널에 포함된 java-1.8.0-openjdk-demo 패키지의 일부입니다. Optional 채널 사용 방법에 대한 지침은 Add the Optional and Supplementary Repositories 에서 참조하십시오. 선택적 채널이 활성화되면 패키지를 설치합니다.
yum install java-1.8.0-openjdk-demo
# yum install java-1.8.0-openjdk-demo
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OProfile 의 oprofile-jit 패키지를 설치하여 Java 프로그램에서 프로파일링 데이터를 수집할 수 있습니다.
yum install oprofile-jit
# yum install oprofile-jit
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OProfile 데이터 디렉터리를 생성합니다.
mkdir ~/oprofile_data
$ mkdir ~/oprofile_data
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 데모 프로그램을 사용하여 디렉터리로 변경합니다.
cd /usr/lib/jvm/java-1.8.0-openjdk/demo/applets/MoleculeViewer/
$ cd /usr/lib/jvm/java-1.8.0-openjdk/demo/applets/MoleculeViewer/
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 프로파일링을 시작합니다.
operf -d ~/oprofile_data appletviewer \ -J"-agentpath:/usr/lib64/oprofile/libjvmti_oprofile.so" example2.html
$ operf -d ~/oprofile_data appletviewer \ -J"-agentpath:/usr/lib64/oprofile/libjvmti_oprofile.so" example2.html
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 홈 디렉터리로 변경하고 수집된 데이터를 분석합니다.
cd
$ cd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow opreport --symbols --threshold 0.5
$ opreport --symbols --threshold 0.5
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 샘플 출력은 다음과 같을 수 있습니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow