리눅스 시스템모니터링 성능 측정도구 - perf 소개와 사용법



    perf란? 리눅스 명령어 중의 하나이며 리눅스 커널 프로젝트에서 관리되는 성능측정 도구이며,

    리눅스의 특정 프로그램이나 시스템 전체를 분석할수 있습니다.


    예로 어느 프로그램의 어느 함수가 CPU가 많이 사용하는지, 어느 코드 부분이 메모리를 할당을 얼마나 하는지 등을 어셈블리 및 소스 코드 레벨로 파악할 수 잇고 시스템의 page-fault, context-switch, cache-misses 등이 몇번이나 일어났는지를 파악할 수 있습니다.

    또한 특정 커널 함수가 불리는지와 얼마나 불리지는도 파악할 수 있습니다.




     

     Perf 리눅스기반 성능측정 도구 특징과 효과


    Perf의 특징


    - 특정 프로그램 또는 시스템 전체 성능 분석

    - 각종 CPU에서 지원하는 PMU 기능제어

    - 각종 이벤트(cpu-cycles, cache-misses등) 정보수집

    - 수집된 성능분석 정보 기반 통계 view 제공(TUI, GUI등등)

    - 어셈블리 또는 소스코드 단위 overhead분석

    - Kernel API(얼마나 불러지는 지) Tacing 기능



    Perf의 효과


    - 복잡, 다양해지는 각 커널 버전에 맞춰 성능분석

    - 커널 또는 프로그램 속도 저하없이 성능 분석

    - 각종 최신 CPU(x86, ARM, SPARC, etc...)에도 이용가능

    - 커널, 시스템의 과의 호환성 문제 및 성능저하 원인 분석이 용이




     

     Perf 설치



    PERF 설치 확인

    [root@web ~]# rpm -qa | grep perf
    perf-2.6.32-642.15.1.el6.x86_64
    


    PERF 설치하기

    [root@web ~]# yum -y install perf
    


     

     Perf 사용법



    이벤트 발생 횟수 세기


    명령어 : perf stat pwd

    [root@web /]# perf stat ls
    bin  boot  data  dev  etc  home  lib  lib64  lost+found  media	mnt  opt  proc	root  sbin  selinux  srv  sys  tmp  usr  var
    
     Performance counter stats for 'ls':
    
              0.720093      task-clock (msec)         #    0.743 CPUs utilized          
                     0      context-switches          #    0.000 K/sec                  
                     0      cpu-migrations            #    0.000 K/sec                  
                   261      page-faults               #    0.362 M/sec                  
             cycles                   
             stalled-cycles-frontend  
             stalled-cycles-backend   
             instructions             
             branches                 
             branch-misses            
    
           0.000969577 seconds time elapsed
    

    위의 명령어는 ls라는 명령 몇번이나 이벤트를 발생시키는지의 확인입니다.


    Posted by 서버이야기