25.2. Perf 사용


프로그램 실행의 통계 또는 샘플을 수집하기 위해 기본 PCL 인프라를 사용하는 것은 상대적으로 간단합니다. 이 섹션에서는 전체 통계 및 샘플링의 간단한 예를 제공합니다.

make 및 해당 하위 항목에 대한 통계를 수집하려면 다음 명령을 사용합니다.

# perf stat -- make all

perf 명령은 다양한 하드웨어 및 소프트웨어 카운터를 수집합니다. 그런 다음 다음 정보를 출력합니다.

Performance counter stats for 'make all':

  244011.782059  task-clock-msecs         #      0.925 CPUs
          53328  context-switches         #      0.000 M/sec
            515  CPU-migrations           #      0.000 M/sec
        1843121  page-faults              #      0.008 M/sec
   789702529782  cycles                   #   3236.330 M/sec
  1050912611378  instructions             #      1.331 IPC
   275538938708  branches                 #   1129.203 M/sec
     2888756216  branch-misses            #      1.048 %
     4343060367  cache-references         #     17.799 M/sec
      428257037  cache-misses             #      1.755 M/sec

  263.779192511  seconds time elapsed

perf 도구는 또한 샘플을 기록할 수 있습니다. 예를 들어 make 명령과 해당 하위 항목에 대한 데이터를 기록하려면 다음을 사용합니다.

# perf record -- make all

이렇게 하면 샘플이 저장되는 파일과 수집된 샘플 수가 출력됩니다.

[ perf record: Woken up 42 times to write data ]
[ perf record: Captured and wrote 9.753 MB perf.data (~426109 samples) ]

PCL(Linux용 성능 counter) 도구는 OProfile과 충돌

OProfile과 PCP for Linux (PCL) 모두 동일한 하드웨어 성능 모니터링 장치 (PMU)를 사용합니다. PCL perf 명령을 사용하려는 동안 OProfile이 실행 중인 경우 OProfile을 시작할 때 다음과 같은 오류 메시지가 발생합니다.

Error: open_counter returned with 16 (Device or resource busy). /usr/bin/dmesg may provide additional information.

Fatal: Not all events could be opened.

perf 명령을 사용하려면 먼저 OProfile을 종료합니다.

# opcontrol --deinit

그런 다음 perf.data 를 분석하여 샘플의 상대적 빈도를 확인할 수 있습니다. 보고서 출력에는 샘플에 대한 명령, 오브젝트 및 기능이 포함됩니다. perf 보고서를 사용하여 perf.data 분석을 출력합니다. 예를 들어 다음 명령은 가장 많은 시간을 사용하는 실행 파일에 대한 보고서를 생성합니다.

# perf report --sort=comm

결과 출력:

# Samples: 1083783860000
#
# Overhead          Command
# ........  ...............
#
    48.19%         xsltproc
    44.48%        pdfxmltex
     6.01%             make
     0.95%             perl
     0.17%       kernel-doc
     0.05%          xmllint
     0.05%              cc1
     0.03%               cp
     0.01%            xmlto
     0.01%               sh
     0.01%          docproc
     0.01%               ld
     0.01%              gcc
     0.00%               rm
     0.00%              sed
     0.00%   git-diff-files
     0.00%             bash
     0.00%   git-diff-index

왼쪽의 열에는 샘플의 상대적 양이 표시되어 있습니다. 이 출력은 xsltproc 및cabundle xmltex에서 대부분의 시간을 소비한다는 것을 보여줍니다. 완료하는 데 걸리는 시간을 줄이려면 xsltproc 및 rhcos xmltex 에 집중하십시오. xsltproc 에서 실행한 함수를 나열하려면 다음을 실행합니다.

# perf report -n --comm=xsltproc

이 경우 다음을 생성합니다.

comm: xsltproc
# Samples: 472520675377
#
# Overhead  Samples                    Shared Object  Symbol
# ........ ..........  .............................  ......
#
    45.54%215179861044  libxml2.so.2.7.6               [.] xmlXPathCmpNodesExt
    11.63%54959620202  libxml2.so.2.7.6               [.] xmlXPathNodeSetAdd__internal_alias
     8.60%40634845107  libxml2.so.2.7.6               [.] xmlXPathCompOpEval
     4.63%21864091080  libxml2.so.2.7.6               [.] xmlXPathReleaseObject
     2.73%12919672281  libxml2.so.2.7.6               [.] xmlXPathNodeSetSort__internal_alias
     2.60%12271959697  libxml2.so.2.7.6               [.] valuePop
     2.41%11379910918  libxml2.so.2.7.6               [.] xmlXPathIsNaN__internal_alias
     2.19%10340901937  libxml2.so.2.7.6               [.] valuePush__internal_alias
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.