Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[장소진] 프로젝트 소개 문서 #181

Open
JangSoJin opened this issue Oct 14, 2017 · 0 comments
Open

[장소진] 프로젝트 소개 문서 #181

JangSoJin opened this issue Oct 14, 2017 · 0 comments

Comments

@JangSoJin
Copy link

JangSoJin commented Oct 14, 2017

perf

  • 성능측정도구

    • Linux 명령어 중의 하나, profiler tool.
  • uftrace와 마찬가지로, C/C++을 사용

  • 아래의 그림과 같이 성능측정 가능

perf 의 중요 특징

  • 어느 함수가 CPU를 많이 잡아 먹는지?
  • 어느 코드부분이 메모리 할당을 얼마나 하는지?
  • 특정 커널 함수가 불려지는지? 혹은 얼마나 호출되는지?
  • Cache misses 가 어느 코드부분 때문에 발생하는지?
  • 대상 프로그램이 시스템콜을 어떤것을 얼마나 호출했는지?

perf 실행방법

  1. 작성한 C 프로그램 source (cat [c 프로그램 파일] 하면 source를 cmd 창에서 확인할 수 있다.)
    hello.c
#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));
}
  1. -pg 옵션을 통한 컴파일
    gcc -pg -o hello hello.c

  2. perf event 수집
    (sudo) perf record ./hello

image

  1. perf 성능분석
    (sudo) perf report

image

  1. CLOC 를 통한 총 라인수
    cloc ./

image

  1. 폴더 나뉜 구조 상세 파악
    ls

image
image

  • 디렉토리 (tip 디렉토리 위치에서) 구조 (perf 제외 하위 디렉토리 생략)
.
├── accounting
├── arch
├── build
├── cgroup
├── firewire
├── gpio
├── hv
├── iio
├── include
├── kvm
├── laptop
├── leds
├── lib
├── Makefile
├── net
├── nfsd
├── objtool
├── pci
├── pcmcia
├── perf
│   ├── arch
│   ├── bench
│   ├── Build
│   ├── builtin-annotate.c
│   ├── builtin-annotate.o
│   ├── builtin-bench.c
│   ├── builtin-bench.o
│   ├── builtin-buildid-cache.c
│   ├── builtin-buildid-cache.o
│   ├── builtin-buildid-list.c
│   ├── builtin-buildid-list.o
│   ├── builtin-c2c.c
│   ├── builtin-c2c.o
│   ├── builtin-config.c
│   ├── builtin-config.o
│   ├── builtin-data.c
│   ├── builtin-data.o
│   ├── builtin-diff.c
│   ├── builtin-diff.o
│   ├── builtin-evlist.c
│   ├── builtin-evlist.o
│   ├── builtin-ftrace.c
│   ├── builtin-ftrace.o
│   ├── builtin.h
│   ├── builtin-help.c
│   ├── builtin-help.o
│   ├── builtin-inject.c
│   ├── builtin-inject.o
│   ├── builtin-kallsyms.c
│   ├── builtin-kallsyms.o
│   ├── builtin-kmem.c
│   ├── builtin-kmem.o
│   ├── builtin-kvm.c
│   ├── builtin-kvm.o
│   ├── builtin-list.c
│   ├── builtin-list.o
│   ├── builtin-lock.c
│   ├── builtin-lock.o
│   ├── builtin-mem.c
│   ├── builtin-mem.o
│   ├── builtin-probe.c
│   ├── builtin-probe.o
│   ├── builtin-record.c
│   ├── builtin-record.o
│   ├── builtin-report.c
│   ├── builtin-report.o
│   ├── builtin-sched.c
│   ├── builtin-sched.o
│   ├── builtin-script.c
│   ├── builtin-script.o
│   ├── builtin-stat.c
│   ├── builtin-stat.o
│   ├── builtin-timechart.c
│   ├── builtin-timechart.o
│   ├── builtin-top.c
│   ├── builtin-top.o
│   ├── builtin-trace.c
│   ├── builtin-trace.o
│   ├── builtin-version.c
│   ├── builtin-version.o
│   ├── check-headers.sh
│   ├── command-list.txt
│   ├── common-cmds.h
│   ├── CREDITS
│   ├── design.txt
│   ├── Documentation
│   ├── FEATURE-DUMP
│   ├── gtk-in.o
│   ├── jvmti
│   ├── libperf.a
│   ├── libperf-gtk.so
│   ├── libperf-in.o
│   ├── Makefile
│   ├── Makefile.config
│   ├── Makefile.perf
│   ├── MANIFEST
│   ├── perf
│   ├── perf-archive
│   ├── perf-archive.sh
│   ├── perf.c
│   ├── perf-completion.sh
│   ├── perf.h
│   ├── perf-in.o
│   ├── perf.o
│   ├── perf-read-vdso.c
│   ├── perf-sys.h
│   ├── PERF-VERSION-FILE
│   ├── perf-with-kcore
│   ├── perf-with-kcore.sh
│   ├── pmu-events
│   ├── python
│   ├── python_ext_build
│   ├── scripts
│   ├── tests
│   ├── trace
│   ├── ui
│   └── util
├── power
├── scripts
├── spi
├── testing
├── thermal
├── time
├── usb
├── virtio
└── vm

99 directories, 187 files
 
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant