Daybreakin Things

Posted
Filed under 컴퓨터

앞서 공지한 바와 같이, 10월 1일이부터 8일까지 5박 7일 일정으로 첫 해외 학회 출장을 다녀왔다. 다녀온 학회의 공식 명칭은 9th USENIX Symposium on Operating Systems Design and Implementation (일명 OSDI)이며 10월 4일부터 6일까지 캐나다 밴쿠버에서 열렸다. 컴퓨터 시스템 분야에서는 가장 인정받는 최고의 학회라고 할 수 있겠다. 이번 출장을 통해 아메리카 땅을 처음 밟아볼 수 있었고, 전산의 기원지이자 중심지인 미국의 파워도 실감할 수 있었다. 또 미국 유학 중이신 여러 선배들을 만날 수 있는 좋은 기회이기도 했다.

밴쿠버 인증샷
도착 다음날 오전에 스탠리파크 자전거 대여해서 돌다 찍은 사진. 뒤로 보이는 것이 밴쿠버 다운타운.
Main Conference Room
학회 발표가 이루어진 British Columbia Ballroom. 하루종일 저런 어두컴컴한 방에 있으니 더 졸려운 것 같았다;;
Panoramic View from Hotel
이런 날씨에 좀 돌아다니고 싶었는데 말이지. (자전거 탈 때 흐리다 워크샵 가려고 호텔 올라오니 맑아진 상태)

본격 논문 프레젠테이션이 이뤄지는 technical session은 3일 동안 진행되었으나, 나는 그보다 이틀 앞서 "Diversities in Systems Research"라는 작은 워크샵에 참석하였다. 학문적인 내용이 아니라 '대학원 생활 잘 하는 방법'을 공유하는 워크샵이었는데, 석사 1년차로서 듣기에는 더할나위 없이 좋은 워크샵이었다. '논문은 언제나 떨어지라고 쓰는 것이니(...) 떨어졌다고 해서 펑펑 울고 개인적으로 실망하고 그러지 마라'라는 얘기부터 시작해서, 학회는 social networking이 가장 중요하다는 점도 알려주고, 대학원 공부하는 요령이나 academic job과 industry job의 차이점 등 유용한 내용이 많았다. (물론 미국 기준의 이야기이긴 하지만.) 교수님, 대학원생들, 인텔과 MS에서 온 사람 등등 30명 정도가 가족적인(?) 분위기로 모여서 진행되었고, 특히 나처럼 해외 학회에 처음 가보는 것이라 아는 사람이 아무도 없고 그런 입장에서는 사람들과 친해지고 본격 tech session에서 말 걸 수 있는 사람들을 미리 만들 수 있는 좋은 기회였다. 여기에서 학문적 관점의 문제를 푸는 것도 재미있지만 스타트업에서 일해본 경험으로는 학문적이진 않지만 현실에서는 중요한 여러 문제들이 있고 그걸 푸는 것도 재밌다는 것을 알기 때문에 나는 박사과정을 계속 하는 것이 좋을지 고민된다는 질문을 하였더니, 내가 만든 무언가를 실제로 사람들이 사용하는 것이 가장 보람되다면 industry로, 새로운 아이디어를 제안하고 사람들과 공유하는 것 자체가 즐겁다면 academy로 가라고 명확하게 대답해주더라. (근데 난 둘 다 재밌을 것 같다는 것이...orz) 혹시 둘 다 하고 싶다면 일단 Ph.D를 먼저 따고 나중에 industry로 가는 것이 좋다는 것과, research intern을 반드시 해보라는 조언도 받았다. 참고로, 미국 대학원은 우리나라처럼 석사/박사가 명확하게 분리되기보다는 (학교마다 차이는 있지만) 박사과정을 하면서 중간에 석사 수료를 받을 수 있는 식이었다. 스웨덴 교환학생 때 보면 유럽은 학사+석사를 합쳐 5년에 끝나는 체제였던 것과는 또 다르더라. 또, 연구 동향 세션에서는 MSR/Google/Yahoo 등에서 나오는 논문들처럼 연구용이나 수업용으로 대용량 클러스터를 써보고 싶은데 현실적으로 어렵더라 이런 얘기를 했더니 인텔에서 온 사람이 Amazon이랑 긴밀하게 일하고 있다며 가상화 클러스터의 artifact 문제를 해결하고 더 많은 research community를 끌어들이기 위해 노력하고 있다는 얘기도 해주었다.

이렇게 이틀을 보낸 다음날 본격 학회 일정이 시작되었다. 몇 가지 기억에 남는 발표들만 얘기해보겠다. 위의 워크샵에서 했던 미니 포스터 세션에서 FlexSC라는 걸 들고나와서 몇 가지 질문을 했었는데, 알고보니 그게 첫번째 세션 발표였고 그 사람이 1저자였다; Linux systemcall에서 exception을 이용하지 않고 multithread로 만들겠다는 아이디어였는데, 나중에 사람들과 얘기해보니 다들 비슷한 생각을 하고 있었던 모양이나 이 팀이 시기적절하게 좋은 결과를 낸 것 같다. Linux many core scalability 발표는 나중에 전해들은 이야기인데 원래 linux는 scalable하지 않다는 걸 보이려고 하다가 조금(커널코드 5천줄 정도?) 고쳐보니 생각보다 결과가 잘 나와서 방향을 반대로 바꾼 거라고 한다. 살짝 기대했던 Facebook의 Haystack 발표는 그냥 잘 엔지니어링했다는 것 말고 뭔가 새로운 아이디어가 있거나 한 게 아니라서 실망이었다. 주변에서 태수형의 1저자 발표로 많이 기대했던 selective re-execution은 태수형이 아직 1년차라는 이유로(?) 교수님이 대신 발표를 맡아버려서 아쉽게도 태수형의 발표를 볼 순 없었다. 시스템 침입/침해 사고에 대응하는 방법으로 re-execution이라는 게 있다는 것 자체를 처음 본 것이라 신기했는데 기존 방법은 매우 많은 리소스를 요구하지만 action history graph를 잘 분석해서 적은 리소스로 복구 가능하게 했다는 내용이었다. 대체로, 시스템 분야 발표들을 보니 컴퓨터 성능이 충분히 좋아지니까 기존에 못하던 것들을 약간(수 퍼센트 정도)의 오버헤드를 감수하고라도 더 고차원적이고 새로운 요구를 해결하는 아이디어를 추가하는 느낌, 아니면 기존 구조를 멀티코어 시대에 맞게 고치는 느낌이었다.

또다른 큰 축으로 determinism을 운영체제 수준에서 보장해주겠다는 것이 있었다. 기존 multithreading 모델 자체가 프로그래밍 실수가 잦다(뭐 이쪽 분야에선 수도 없이 나온 이야기이긴 하다)는 점 때문인데, 이들 역시 deterministic하게 만듦으로 인해 발생하는 오버헤드를 어떻게 잘 줄이느냐가 관건인 듯했다. 특히 deterministic execution 보장뿐만 아니라 record & replay를 가능하게 해서 디버깅을 쉽게 한다는 점은 맘에 들었다. (오에스 pintos 플젝할 때 1000번 돌리면 한번 뻑나고 뭐 이런 버그 잡으려면 꼭 필요한 기능이다. ㅋㅋㅋ) 시스템 설정을 자동화하거나 설정 오류를 잘 잡아주겠다는 연구들도 있었는데, 그닥 잘 될 것 같지 않아서 큰 흥미는 없었지만(...) 그만큼 대규모 시스템에서 사람에 의한 설정 실수가 큰 문제가 되고 있고 research interest로 받아들여지고 있다는 것을 알 수 있었다. 얼마 전 Facebook에서도 설정값 잘못된 것을 자동으로 고치려는 내부 시스템들의 오작동이 일파만파 퍼지면서 전체 시스템을 다운시킨 사례가 있었으니 뭐.

데이터센터 쪽 연구들로는 computation과 data를 어떤 캡슐화된 단위로 보고서 클러스터 내에서 어떻게 잘 재배치·재활용할 것인가 하는 것들이었다. 특히 기존의 MapReduce 모델이 가지는 한계를 해결하고자 한 시도들이 몇 개 있었는데, 많은 사람들의 관심을 받은 Google의 Percolator도 그런 것 중 하나였다. 지난 4월부터 구글 검색 인덱스 백엔드에서 MapReduce를 버리고 Percolator로 바꿨다고 하는데, 구체적으로 PageRank를 이걸로 어떻게 구현했는지는 소개되지 않았지만 BigTable에 distributed transaction을 도입해 수십분 단위의 인덱스 갱신 시간을 문서 단위로 매우 빠르게 업데이트할 수 있도록 바꿨다는 것이 골자였다. 아마 트위터 실시간 검색 같은 것도 이걸로 구현한 것일 테다. 그리고 "Active" key-value storage를 구현한 Comet 발표도 재미있었다. memcached를 비롯한 많은 key-value storage는 그저 key/value pair만 왕창 저장할 뿐이지만, 여기에 "active" 개념을 도입해서 각각의 pair object가 이벤트 핸들러와 간단한 코드를 가질 수 있도록 하여 application-specific policy를 구현할 수 있도록 한 것이다. key-value storage의 문제점이라고 생각하고 있었던 부분인데 이렇게 접근하는 방법도 있구나 하고 배울 수 있었다. 마지막날 네트워크 시스템 분야의 rule-based forwarding 발표는 active의 의미를 조금 제한하여 원하는 만큼의 유연함은 확보하되 보안과 속도를 잡는 방법을 택했는데, 10년 전에 나왔지만 여전히 유효한 개념을 담은 논문에게 주는 상을 Active Network 논문이 받은 걸 보면 확실히 아직도, 그리고 앞으로도 계속 이쪽 연구들이 나올 것 같다.

가상화 쪽에서는 TaintDroid와 Turtles 프로젝트가 눈에 띄었다. TaintDroid는 안드로이드 플랫폼의 VM 자체를 고쳐 개별 변수, 파일 등을 모두 추적해서(이걸 얼마나 효율적으로 짰느냐가 강점) 개인의 위치 정보나 IMEI 등이 원하지 않는 시점에 외부로 전송되는 것을 탐지하고 사용자에게 이를 경고로 띄워준다. 앞에서 말한 것처럼 성능 희생을 조금 감수하고라도 고차원적 가치를 제공하기 위한 연구 흐름에 부합한다고 할 수 있겠다. Turtles 프로젝트는 이미 가상화 기능을 제공하는 OS(예: 윈도7의 XP Mode)를 어떻게 가상머신으로 돌리겠느냐 하는 nested virtualization 문제를 다룬 것인데, 아직 CPU 구조 상 지원되지는 않지만 몇가지 방법(multidimensional paging, single-level VMX multiplexing)을 통해 작은(6~8%) 오버헤드로 돌릴 수 있었다는 내용이었다. 그 외에 가상화 환경에서 clock timing을 어떻게 정밀하게 관리할 것이냐 하는 연구도 있었는데 나름 의미있는 작업이긴 하지만 큰 관심이 가지는 않았다.

아무튼, 이번 OSDI에서 발표된 전체 논문을 보려면 이곳을 방문하면 된다.

아침부터 저녁 늦게까지 계속 학회 일정이 이어진 데다 시차적응 문제까지 더해 아주 힘들었지만 승엽이형, 태수형, 민종이형, 상만이형, 박소연 박사님 등 미국 유학 중이신 여러 선배들 및 한국에서 오신 다른 분들도 만나고, 몇몇 발표자(FlexSC 발표한 Livio Soares, Rule-based Forwarding 발표한 Lucian Popa)와는 안면도 쌓을 수 있었다. 이를 테면 아침에 엘레베이터에서 만나 같이 걸어가면서 얘기했다든지 돌아올 때 공항에서 계속 마주쳤다든지. 하지만 여전히 미국 사람들의 빠른 영어와, 이미 서로 알고 있는 사람들의 대화에 끼어들기는 어려웠던지라 좀더 많은 사람들을 못 만난 것은 살짝 아쉽다.

포스터 발표 인증샷

포스터 걸어놓은 모습. 꼬박 한시간 반을 서있어야 했다;

포스터 세션의 경우 내가 포스터 발표를 한 덕에 저녁도 못 먹고(ㅠㅠ) 계속 사람들 와서 질문하는 거 대답해주느라 다른 사람들 포스터들을 거의 못 봐서 좀 아쉽기도 했지만, 내 포스터는 도이치텔레콤의 Rob Sherwood, 유타대학교 Robert Ricci, 인텔의 Mazier Manesa 등 몇몇 사람들이 관심있게 봐주었다. PacketShader가 여전히 임팩트있는 연구임을 확인할 수 있었고(메일로 논문 보내달라는 사람도 있었음), 가장 걱정했던 부분인 실제 라우터에서의 FIB update overhead에 대해 구체적으로 물어본 경우는 다행히(?) 없었다.1 피드백 중에 IPv4는 비교적 간단하게 구현 가능한데 OpenFlow에서는 패킷마다 routing table이 바뀌기 때문에 double buffering 적용이 어렵지 않겠냐는(lock overhead 등) 것이 있어서 이 부분은 내가 OpenFlow를 좀더 공부해봐야 할 것 같다. 포스터 세션 끝나고 정리할 때 한 사람이 안 가고 계속 설명 중이길래 가서 들어봤는데, Yagz Onat Yazr라는 친구가 클라우드 컴퓨팅의 리소스 배분 문제를 설명하고 있었다. 현실의 예를 들어가며 아주 흥분된 목소리로 재미나게(...) 설명해서 이해는 잘 되었는데, 이 친구 말이 논문도 그렇게(!) 쓰고 싶은데 잘 될지 모르겠다는 농담반 진담반(?) 이야길 해서 다들 웃었다. 아무튼 이 친구 설명은 다들 기술적인 내용을 다루고 있고 듣는 사람들도 그런 배경지식이 있는 사람들이라지만 설명 방법을 좀더 고민해볼 필요가 있겠다는 생각이 들게 해주었다. 포스터 세션 전체 발표 목록은 여기 있는데, "Monster poster session"으로 이름을 바꿨을 만큼 많이 뽑았더라.;

한편 한국인 선배들과 만나 이런저런 이야기도 듣고, BoF 세션의 community resource 톡이나 일상에서 내가 보고 느낀 것이나 유럽과의 분위기 비교 등을 통해 느낀 것은, 미국이 컴퓨터 시스템 분야는 단연코 원조이자 선진국이며 연구 규모도 크다는 것, 그리고 전체적으로 모든 것을 체계화·시스템화하려는 경향이 강하다는 것, 그러한 경향 때문에 대다수의 국민들은 조금 멍청(?)해도 잘 살아갈 수 있게 되어 있다는 것. 대신 사람과 사람의 끈끈한 정은 느끼기 힘들다는 것. 또, 우리는 미팅을 할 때 미리 다 논문도 읽고 그러는 것이 좋다고 생각하지만 미국 애들은 발표에 없고 논문에 있는 것이라도 일단 질문하고 본다는 것. 나는 tech session에서 보다가 궁금한 게 있으면 논문을 훑어봤는데 대개 내가 궁금해한 것 정도는 이미 논문에 다 있어서(...그러니 OSDI에 나왔겠지 ㅋㅋ) 질문을 못했는데, 미국 애들은 그런 거 신경 안 쓰고 일단 질문하고 보는 것 같았다. 선배들 말로는 이게 숙독하는 것과 비교해 나름의 일장일단이 있지만 어쨌든 짧은 시간에 효율적으로 공부하는 방법의 하나라면서, 미국 쪽에서 공부하려면 반드시 익숙해져야 하는 것이라고도 한다.

이번 출장 다녀오면서 역시 한국이 인터넷이랑 공항은 잘 되어 있구나 하는 느낌을 지울 수 없었다. 특히 미국 LA에서 환승할 때는 터미널마다, 항공사 카운터마다 시스템이 달라서 나처럼 좀 특이하게 미국 입국 후 다시 해외로 환승하는 경우는 미리 알지 않으면 헤매기 딱 좋게 되어 있었다. 인터넷으로 미리 '톰브래들리 터미널(인터내셔널 전용 터미널)에서 내리고 미국 입국 절차를 밟고 수하물을 찾은 후 터미널 2번으로 이동해야 캐나다행 비행기를 탈 수 있다'는 정보를 알고 갔기에 망정이지, 2번 터미널 찾는 것도 한참 헤맸고(결국 누군가한테 물어봐서 해결) 톰브래들리 터미널에서는 전광판도 시스템이 아예 달라 캐나다행 비행기가 나오지 않았기 때문에 아마 터미널을 바꿔 타야 한다는 걸 아예 모르고 갔으면 정말 비행기 놓쳤을 것이다.2 그래도 캐나다에서 돌아올 때는 밴쿠버 공항에서 미국 입국 절차를 다 밟고 LA에서 수하물 찾지 않고 체크인만 다시 하면 되었기 때문에 훨씬 편했지만 이때는 보안검색 줄이 엄청 길었다. 2번 터미널은 오래돼서 시설이 엄청 구렸는데 톰브래들리는 새로 지어서인지 상당히 좋은 편이었다. 공항 서비스면에서도 차이가 많이 났다. 인천공항과 밴쿠버공항은 무료 Wifi를 빵빵하게 쓸 수 있었는데, LA 공항은 유료 Wifi만 있고 (KT Wifi 로밍도 실패했는데, 앱에서 오프라인으로 제휴사 목록을 볼 수 있었음 좋겠다) 3G망도 엄청 신호가 약해서 배터리 소모가 심했다. 특히 보안검색할 때 우리나라에서는 신발 벗으면 잠깐이지만 임시로 신으라고 슬리퍼도 주고 바구니도 친절하게 다 가져다주는데 미국과 캐나다는 그런 거 얄짤 없더라.;; 그냥 다 알아서 해야 한다;

참고로 미국 입국은 이번이 처음 해보는 것이었는데, 열손가락 지문 다 찍고 안경과 모자 모두 벗고 얼굴 사진 찍고 하느라 조금 신경쓰이긴 했지만 다행히 무사 통과(?)하였다. 한번 해두니 두번째 캐나다에서 미국으로 갈 때는 오른손 네 손가락 지문과 사진만 다시 찍어서 확인하더라. 입국심사관이 뭐 하러 왔냐고 해서 academic conference 왔다고 하니 거기서 뭐 하느냐, 며칠 동안 있다 갈 거냐 이런 것을 물어봐서 잘 대답하니 별 문제 없었다.

아무튼, 이렇게 해서 첫 해외 학회 출장은 나름 잘 다녀온 것 같다. 출장 직전까지 할일이 잔뜩 있어서 쉬지도 못하고(인천공항에서 비행기 한 시간 지연된 덕분에 숙제 제출하고 막...아놔) 힘들었지만 사람들 만나는 건 언제나 즐거운 일인듯.


  1. 라우터가 설치된 곳이나 설정에 따라 FIB update overhead가 있다고 주장할 수도, 없다고 주장할 수도 있어서 내 연구가 언제나 항상 가치있다고 말하기는 조금 어렵기 때문이다. 게다가 아직 내가 라우터를 많이 다뤄본 경험이 있는 것도 아니어서 어떤 경험을 토대로 얘기를 하기도 힘든 상황이었다. 

  2. 참고로 말하면 미국과 캐나다는 인터내셔널이 아니라 국내선처럼 되어있다. 물론 입출국 절차와 보안검사는 다 하기 때문에, 공항 터미널이 인터내셔널, 국내선, 미국/캐나다의 3가지로 분리되어있다.