이 프로젝트의 가장 큰 목적은 리눅스 커널 Contribution 을 하기위한 큰 장벽을 허무는데 있습니다.
git 을 이용해서 수정한 내용에 대해 패치를 만들고 그것을 메일링 리스트에 전송하거나, github 에 pull request 를 보내는 것을 학습하여 리눅스 커널이 개발되는 과정을 학습합니다.
해커톤이 끝난 이후에도 지속적으로 perf 툴의 개발 진행상황에 관심을 가지고 지속적인 contribution 을 할 수 있기를 희망합니다.
최종 성과
2016 Koss Hackathon 을 진행하며 많은 것을 배웠습니다.
먼저 오픈소스를 관리하기 쉽고 협업에 많은 도움이 되는 Github 저장소를 다루는 것에 대해 배우게 되었다. Github의 사용법을 학습하고 Hackathon 프로젝트 뿐만 아니라 개인적으로 진행하던 프로젝트도 Github로 관리할 수 있게 되었다. 또한 linux kernel 내부에 구현되어있는 perf 라는 유용한 툴에 대해 알게 되었으며 소스를 살펴보며 어떠한 흐름으로 perf가 실행되는지 학습하였다. perf의 기본적인 동작들을 알아보며 아이디어를 생각하게 되었고 프로그램의 성능을 단순히 출력해주는 기존의 것에 비교 성능을 출력 할 수 있는 아이디어도 추가하여 구현을 시도해보았다. 구현의 완성은 하지 못하였지만 좋은 경험이 되었다. 마지막으로 perf를 사용하는데 있어 Tip을 만들어 메인테이너에게 PATCH Mail를 보내고 답변을 받기도 하였다. 오픈소스를 다루는데 있어 가장 중요한 Github의 처음부터 고급수준까지 학습하였다는 것에 가장 큰 의미를 두고 싶다. 혼자 시도하였다면 막막하고 무엇을 해야 할지 몰랐을 것이다. 오픈소스의 진입장벽을 부수는데 많은 도움을 주신 멘토님과 함께 협동하여 좋은 결과를 만들어낸 팀원들에게 감사하다.
매일 미션 진행
13개의 미션 모두 완료
Github 사용 연습
멘토님 git-training 학습 및 복습 (Taeung/git-training)
진행 중 프로젝트를 Github에 올려 관리 (NB3025/openflow)
NB3025/openflow
Branch
Commit
Perf 소스 리딩
tools/perf/perf.c
tools/perf/builtin-stat.c
[ 아이디어 관련하여 perf stat record, report, perf diff 흐름을 알기 위해 builtin-stat.c, builtin-diff.c 소스 리딩 ]
[ cmd_reprot 에서 perf.data를 읽는 과정, 앞의 공백은 함수 호출]
perf_session__new()
perf_session__process_events()
__perf_session__process_events()
perf_session__process_event()
perf_session__process_user_event()
case PERF_RECORD_STAT:
return tool->stat_round()
Goal
최종 성과
2016 Koss Hackathon 을 진행하며 많은 것을 배웠습니다. 먼저 오픈소스를 관리하기 쉽고 협업에 많은 도움이 되는 Github 저장소를 다루는 것에 대해 배우게 되었다. Github의 사용법을 학습하고 Hackathon 프로젝트 뿐만 아니라 개인적으로 진행하던 프로젝트도 Github로 관리할 수 있게 되었다. 또한 linux kernel 내부에 구현되어있는 perf 라는 유용한 툴에 대해 알게 되었으며 소스를 살펴보며 어떠한 흐름으로 perf가 실행되는지 학습하였다. perf의 기본적인 동작들을 알아보며 아이디어를 생각하게 되었고 프로그램의 성능을 단순히 출력해주는 기존의 것에 비교 성능을 출력 할 수 있는 아이디어도 추가하여 구현을 시도해보았다. 구현의 완성은 하지 못하였지만 좋은 경험이 되었다. 마지막으로 perf를 사용하는데 있어 Tip을 만들어 메인테이너에게 PATCH Mail를 보내고 답변을 받기도 하였다. 오픈소스를 다루는데 있어 가장 중요한 Github의 처음부터 고급수준까지 학습하였다는 것에 가장 큰 의미를 두고 싶다. 혼자 시도하였다면 막막하고 무엇을 해야 할지 몰랐을 것이다. 오픈소스의 진입장벽을 부수는데 많은 도움을 주신 멘토님과 함께 협동하여 좋은 결과를 만들어낸 팀원들에게 감사하다.
매일 미션 진행
Github 사용 연습
멘토님 git-training 학습 및 복습 (Taeung/git-training)
진행 중 프로젝트를 Github에 올려 관리 (NB3025/openflow)
Perf 소스 리딩
tools/perf/perf.c
tools/perf/builtin-stat.c
tools/perf/builtin-diff.c
활동결과
제안 아이디어
perf stat 의 결과를 비교하고 싶을 때 subcommand diff를 추가하여 두 개의 결과를 비교하기 쉽도록 출력
-perf stat diff 출력 내용
PATCH
[ perf의 Documentation/tips.txt에 실제 적용 가능한 팁을 추가하여 PATCH 메일 전송 및 답변 완료]