kosslab-kr / linux-perf

:rocket: perf contribution (mirrored from git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git)
Other
16 stars 8 forks source link

[장소진] 개발환경 구성문서 #183

Open JangSoJin opened 7 years ago

JangSoJin commented 7 years ago

😀 개발 및 테스트 환경 구성

  1. Linux 환경 (필요한 경우 VirtualBox 이용가능), vi

  2. git 개발 환경 구성

    • sudo apt-get install git
  3. perf 다운 (커널소스 받기)

    • git clone [GitHub](git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git -b perf/core)
    • cd tip/tools/perf
    • sudo apt-get install -y libdw-dev libelf-dev libnewt-dev libunwind8-dev elfutils libaudit-dev libperl-dev libnuma-dev binutils-dev flex bison libpython2.7-dev asciidoc liblzma-dev libiberty- dev libgtk2.0-dev libssl-dev
    • make

😀 컴파일 / 실행 테스트

  1. hello.c (cat hello.c를 통해 source 확인가능)
    
    #include <stdio.h>

int bar(int b){ printf(“bar %d\n”,b); return b; }

int foo(int a){ printf(“foo %d\n”,a); return bar(a+1); }

void main(int arg, char *argv[]){ printf(“hello %d\n”,foo(arg)); }



2. pg옵션으로 컴파일 `gcc -pg -o [실행Object명] [C프로그램]` (여기서는  gcc -pg -o hello hello.c가 된다.)

3. perf record 명령어를 통해 perf.data 에 event 수집
`(sudo) perf record ./hello`

![image](https://user-images.githubusercontent.com/18066248/31751699-cb650b96-b4c1-11e7-84ba-7e12ead36504.png)

4. 각각의 성능 분석 (sample이 모아져야 실행이 가능하다.)
`(sudo) perf report `

![image](https://user-images.githubusercontent.com/18066248/31751705-d2450a4c-b4c1-11e7-9323-f7a194fcb54b.png)

5. (선택) 비교 분석이 가능하다
`perf diff perf.data_1 perf.data_2 --sort=srcline`