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

[김선영] 프로젝트 최종 보고서 #173

Open seonyoungkims opened 8 years ago

seonyoungkims commented 8 years ago

성과

오픈소스 사용법 배우기 실제로 활용하여 적용해보기 linux-perf에 대해서 공부 perf의 소스코드를 분석 소스 코드를 수정하여 pull-request 보내기 patch 파일 maintainer에게 보냄

perf 성능 분석

perf는 리눅스 기반의 성능측정 도구입니다. Events가 언제, 얼마나, 어떻게 발생되었는가를 측정합니다. 커널 및 프로그램의 감속을 최소화하고 프로그래밍 언어에 종속적이지 않다는 장점을 갖고 있습니다. 실제로 perf를 실습해보며 경험해보는 시간을 가졌습니다.

perf

Git에 대해 배우기

git init, git branch, git add, git commit, git push 등 git의 기본 원리를 이해하고 사용하는 방법을 배웠습니다. 처음엔 git의 원리가 이해가 잘 되지 않았고, 왜 이런 구조를 사용하는지에 대해 의문이 많았습니다. 그러나 설명을 듣고 실제로 사용하여보니 이 구성이 개발자들이 서로 '협업'하며 개발하기에 최적화된 환경이라는 것을 느꼈습니다.

개인적으로 멘토님이 소개시켜주신 https://try.github.io/levels/1/challenges/1 http://learnbranch.urigit.com/ 사이트가 많이 도움이 되었던 것 같습니다.

또한 따로 git에 대해 공부하였는데, https://rogerdudler.github.io/git-guide/index.ko.html http://www.internetmap.kr/1558 http://www.educloud.co.kr/archives/3660 위의 사이트들도 git에 대해 잘 설명해둔 것 같습니다. 맨 마지막 사이트는 제 멘토이신 송태웅 멘토님 강의 영상도 있었는데, 개막식 때 듣긴 했지만 영상을 다시 돌려보며 공부 하였습니다.

git을 이해하는데 가장 어려웠던 점은 add, commit, push 까의 과정과 rebase에 대한 것이었던 것 같습니다. git 저장소에 파일을 추가하여도 add를 실행하여 추가해주어야 한다는 것과, commit과 push 의 차이점을 이해하는 것이 어려웠습니다. 하지만 백문이 불여인견이란 말이 있다시피 실제로 적용하며 연습해보니 단지 설명을 듣기만 하는 것보다 훨씬 이해가 빨랐던 것 같습니다. 아래는 pull-request에 대해 연습한 사진입니다.

pull-request

tips 에 추가하기

perf 안의 tools/perf/Documentation 에 있는 tips에 tip을 추가하는 것을 배웠습니다. 저는 perf report -s srcline 라는 명령어에 대한 tip을 추가하였습니다. perf report -s srcline이라는 명령어는 소스 파일과 넘버를 오버헤드 순으로 보여줍니다. 그러나 기존에 tip에 있던 내용은 debuginfo가 있으면 시도해보라는, 개발자적인 설명만이 있어서 user 입장에서는 이해하기 어렵겠다는 생각이 들었습니다. 그래서 Show source files and line numbers in sequence of overhead, try 라는 tip을 추가하였습니다.

tip

이것을 패치파일로 만들어 메일로 보냈고 후에, Arnaldo로부터 답변을 받아 Order by the overhead of source file name and line number 로 수정하였습니다.

tips

실제로 patch 을 보내고 적용하기

위에 설명한 tips의 수정분을 pull-request로 보내고, 패치 파일을 만들어 maintainer에게 보냈습니다.

tip pull-request 1 pull-request 첫번째

그 후, Arnaldo에게 답변을 받아 tip의 내용을 고치고 다시 패치 파일을 만들어 보냈습니다. arnaldo Arnaldo의 답변

tip pull-request 2 pull-request 두번째

patch 패치 메일

모든 미션 완료!

milestone

마치며

학교에서 오픈소스에 대한 강의를 여러 번 들은 경험이 있어서 좀 더 깊게 배워보고자 참여하게 되었습니다. 실제로 git에 대해 배워보니 혼자 공부했으면 많이 어렵고 힘들었을 거란 생각이 듭니다. 개막식 때 강연에서 들었던 것처럼, 혼자했다면 커다란 벽을 앞에 둔 것 같은 기분을 느꼈을 것 같습니다.

하지만 이번에 좋은 기회를 접하여 git에 대해 많이 배웠고, 경험해보는데 도움을 받았습니다. git의 의미에 대해서도 깨우치게 되었습니다. 학교 프로그래밍 과제는 주로 혼자 코딩을 하고, 버그를 잡다보니 남과 함께 협업하는 일이 드물었습니다. 하지만 이번 프로젝트를 통해 git을 이용하다보니, git에서 많은 개발자들이 서로 도와서 개발을 하고 있다는 것을 알게 되었고, 그 사실이 신기하기도 했고 멋있어 보였습니다. git과 더불어 리눅스와 리눅스 퍼프, 리눅스의 구성 등 의외의 수확도 많이 얻었습니다.

또 제가 프로젝트 처음에 참여할 때 실력이 많이 부족했는데 좋은 멘토님과 팀원들을 만나 정말 많이 배워갑니다. 리눅스 퍼프 프로젝트가 사실 제 1지망이 아닌 2지망 프로젝트인데, 이 프로젝트에 들어오게 되어 정말 감사하다는 생각이 듭니다 :)

프로젝트를 진행하시고 저희를 가르치느라 고생하신 송태웅 멘토님께 정말 감사드립니다. 그리고 제가 몰라서 허둥댈 때마다 옆에서 도와주신 팀원들도 감사드립니다. 이 행사를 기획하시고, 준비하신 분들께도 많은 감사드립니다. 앞으로 기회가 된다면 다시 만날 수 있기를 바라며 글을 마치겠습니다 :)