23장. OProfile


OProfileoprofile 패키지에서 제공하는 낮은 오버헤드의 시스템 전체 성능 모니터링 툴입니다. 시스템의 프로세서의 성능 모니터링 하드웨어를 사용하여 메모리가 참조되는 경우, 두 번째 수준 캐시 요청 수 및 수신된 하드웨어 인터럽트 수와 같이 시스템의 커널 및 실행 파일에 대한 정보를 검색합니다. 또한 OProfile 은 JVM(Java Virtual Machine)에서 실행되는 애플리케이션을 프로파일링할 수 있습니다.

다음은 OProfile:에서 제공하는 도구의 목록입니다.

ophelp
시스템 프로세서에 대한 사용 가능한 이벤트를 각 이벤트에 대한 간략한 설명과 함께 표시합니다.
operf

기본 프로파일링 툴입니다. operf 툴에서는 시스템의 성능 모니터링 하드웨어를 사용하여 OProfile 을 다른 툴과 함께 작동할 수 있는 Linux 성능 이벤트 하위 시스템을 사용합니다.

이전에 사용된 opcontrol 툴과 달리 초기 설정은 필요하지 않으며 --system-wide 옵션을 사용하지 않는 경우 루트 권한 없이 사용할 수 있습니다.

ocount
절대 이벤트 발생 횟수를 계산하는 툴입니다. 프로세스당, CPU당 또는 스레드당 전체 시스템의 이벤트를 계산할 수 있습니다.
opimport
샘플 데이터베이스 파일을 외부 바이너리 형식에서 시스템의 네이티브 형식으로 변환합니다. 다른 아키텍처의 샘플 데이터베이스를 분석할 때만 이 옵션을 사용합니다.
opannotate
디버깅 기호를 사용하여 애플리케이션을 컴파일하는 경우 실행 파일에 대한 주석이 달린 소스를 생성합니다.
opreport
기록된 성능 데이터를 읽고 프로필 사양에 지정된 대로 요약을 생성합니다. 다른 프로필 사양을 사용하여 동일한 프로필 데이터에서 다른 보고서를 생성할 수 있습니다.

23.1. OProfile 사용

operf 는 프로파일링 데이터를 수집하는 데 권장되는 도구입니다. 툴에는 초기 구성이 필요하지 않으며 모든 옵션이 명령줄에 전달됩니다. 레거시 opcontrol 도구와 달리 operfroot 권한 없이 실행할 수 있습니다. operf 도구를 사용하는 방법에 대한 자세한 내용은 시스템 관리자 가이드의 operf 사용 장을 참조하십시오.

예 23.1. ocount 사용

다음 예제에서는 sleep 유틸리티를 실행하는 동안 ocount 로 이벤트 양을 계산하는 방법을 보여줍니다.

$ ocount -e INST_RETIRED -- sleep 1

Events were actively counted for 1.0 seconds.
Event counts (actual) for /bin/sleep:
Event Count % time counted
INST_RETIRED 683,011 100.00
참고

이벤트는 프로세서 구현에 따라 다릅니다. Perf _event_paranoid 옵션을 설정하거나 개수를 사용자 공간 이벤트로만 제한해야 할 수 있습니다.

예 23.2. 기본 operf usage

다음 예에서 operf 도구는 ls -l ~ 명령에서 프로파일링 데이터를 수집하는 데 사용됩니다.

  1. ls 명령에 대한 디버깅 정보를 설치합니다.

    # debuginfo-install -y coreutils
  2. 프로파일링을 실행합니다.

    $ operf ls -l ~
    Profiling done.
  3. 수집된 데이터를 분석합니다.

    $ opreport --symbols
    CPU: Intel Skylake microarchitecture, speed 3.4e+06 MHz (estimated)
    Counted cpu_clk_unhalted events () with a unit mask of 0x00 (Core cycles when at least one thread on the physical core is not in halt state) count 100000
    samples % image name symbol name
    161 81.3131 no-vmlinux /no-vmlinux
    3 1.5152 libc-2.17.so get_next_seq
    3 1.5152 libc-2.17.so strcoll_l
    2 1.0101 ld-2.17.so _dl_fixup
    2 1.0101 ld-2.17.so _dl_lookup_symbol_x
    [...]

예 23.3. operf to Profile a Java Program에 사용

다음 예에서 operf 도구는 Java (JIT) 프로그램에서 프로파일링 데이터를 수집하는 데 사용되며 opreport 도구는 기호별 데이터를 출력하는 데 사용됩니다.

  1. 이 예제에 사용된 데모 Java 프로그램을 설치합니다. 이 패키지는 선택적 채널에 포함된 java-1.8.0-openjdk-demo 패키지의 일부입니다. Optional 채널 사용 방법에 대한 지침은 Add the Optional and Supplementary Repositories 에서 참조하십시오. 선택적 채널이 활성화되면 패키지를 설치합니다.

    # yum install java-1.8.0-openjdk-demo
  2. OProfileoprofile-jit 패키지를 설치하여 Java 프로그램에서 프로파일링 데이터를 수집할 수 있습니다.

    # yum install oprofile-jit
  3. OProfile 데이터 디렉터리를 생성합니다.

    $ mkdir ~/oprofile_data
  4. 데모 프로그램을 사용하여 디렉터리로 변경합니다.

    $ cd /usr/lib/jvm/java-1.8.0-openjdk/demo/applets/MoleculeViewer/
  5. 프로파일링을 시작합니다.

    $ operf -d ~/oprofile_data appletviewer \
    -J"-agentpath:/usr/lib64/oprofile/libjvmti_oprofile.so" example2.html
  6. 홈 디렉터리로 변경하고 수집된 데이터를 분석합니다.

    $ cd
    $ opreport --symbols --threshold 0.5

    샘플 출력은 다음과 같을 수 있습니다.

    $ opreport --symbols --threshold 0.5
    Using /home/rkratky/oprofile_data/samples/ for samples directory.
    CPU: Intel Ivy Bridge microarchitecture, speed 3600 MHz (estimated)
    Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a unit mask of 0x00 (No unit mask) count 100000
    samples  %        image name               symbol name
    14270    57.1257  libjvm.so                /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.51-1.b16.el7_1.x86_64/jre/lib/amd64/server/libjvm.so
    3537     14.1593  23719.jo                 Interpreter
    690       2.7622  libc-2.17.so             fgetc
    581       2.3259  libX11.so.6.3.0          /usr/lib64/libX11.so.6.3.0
    364       1.4572  libpthread-2.17.so       pthread_getspecific
    130       0.5204  libfreetype.so.6.10.0    /usr/lib64/libfreetype.so.6.10.0
    128       0.5124  libc-2.17.so             __memset_sse2
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.