블로그 이미지
shinyroot

calendar

1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Notice

'IT/System'에 해당되는 글 2

  1. 2011.01.08 가상화 연구4
  2. 2009.03.14 ASPLOS 2009, VEE 2009 참관 후기16
2011. 1. 8. 13:14 IT/System
가상화 기술은 기존의 "하나의 컴퓨터에 하나의 OS"가 아닌 "하나의 컴퓨터에 여러개의 가상 컴퓨터, 그리고 각각 독립적으로 운용되는 OS"로 개념을 바꾼 시스템 기술이다. 나는 약 5년정도 가상화 기술에 대해 연구해오고 있다. 학부때 마냥 하드웨어를 컨트롤하는 OS 커널이 궁금해서 들여다보고 싶은 마음에 이해도 잘 안되는 코드를 보다가 가상화라는 것을 알았고, 저건 또 뭔데 OS 아래까지 내려가서 OS까지 컨트롤하려고 들어! 라는 생각이 들 때쯤 관심이 시작 되었다. 

연구 시작은 소프트웨어에서 가장 '제어력'이 높은 것을 자세히 알아보고 싶다는 생각에 별 생각 없이 OS 커널 마저 맘대로 휘두를수 있는 가상화 기술을 보기 시작했다. 하지만 컴퓨터 연구라는 것이 너무 발전속도가 빠른 나머지 먼저 냄새 맡고 몰려들어 소위 말해 문을 닫고 나가 버린 분야가 많은 탓에 내가 보기 시작 할 때만 해도 많은 코어 연구들이 어느정도 되어있는 상황이었다. 솔직히 말해 난 연구에 대한 취지 때문에 시작했다기보다 단순히 재밌어 보여서 시작했다. 

OS 커널을 좋아하게 된 이유는 실제 하드웨어들을 가상화 해서 사용자에게 보여주는 것이 너무 신기해서였다. 학부 OS 강의를 들었을 때 "사람은 하드웨어와 같은 기계를 직접 다루기 힘들기 때문에 커널이 이를 모두 숨기고 마치 여러 개의 프로세스가 가상 프로세서 위에서 동작하고 각자는 자기만의 가상 주소공간이 있고 디스크의 섹터가 아닌 파일을 다루게 된다."라는 말씀과 "컴퓨터 공학을 하는 사람이라면 꼭 커널 코드는 한번쯤 볼 필요가 있다" 라는 말씀을 듣고 새로운 세계로 뛰어들고 싶다는 욕구가 생겼었다. 그런데 OS가 진짜라고 믿고 있는 하드웨어가 실제로는 가상화 기술이 며느리도 모르게 추상화 시켜주고 있는 가상 하드웨어일 수 있다니... 소프트웨어 세상은 하드웨어 위에 여러 계층의 스택들이 존재하고 아래 스택은 윗 스택에게 사기를 치는 세상이구나. 효율성 때문에 나뉜 스택들이지만 그들이 치는 사기로 인해 발생하는 역효과들을 극복하는 것들이 연구의 주제가 되고 그것들은 종종 cross-layering, 즉 사기 그만 치고 좋은게 좋은거니 나랑 동맹이나 맺어서 좀 잘해보자. 라는 접근도 필요하게 된다.

가상화 연구는 수십년도 전에 이미 개념이 확립되고 소프트웨어/하드웨어에서 해야할 일들이 무엇인지 연구가 되어 있었다. 90년도 후반 스탠포드는 Disco라는 가상화 기술을 토대로 VMware를 만들고 다시금 가상화 연구가 활성화될 쯤 2003년도에 영국 캠브릿지 대학은 공개 소스 기반의 Xen을 세상에 내놓았다. 하지만 Xen은 획기적인 아이디어를 제시한 연구는 아니었다. 반가상화 기술을 사용했지만 전에 Denali등에서도 구현이 된 바 있고 (Xen처럼 완벽하진 않았지만) 실제로 Disco또한 OS에 수정을 가했다 (비록 성능보다도 수정이 불가피했기 때문이지만). 더욱이 Disco에서는 가상화의 핵심이 되는 메모리 가상화 기술, NUMA 가상화 지원이나 투명한 메모리 공유, CoW 기반의 디스크 등의 자원 최적화가 이미 이루어진 상태였다. 그럼에도 불구하고 Xen은 현재 서버에서 많이 쓰이고 있는 실제 리눅스를 수정하여 반가상화 기술을 통해 실제 우리가 쓰는 인텔 머신 환경에서 상당히 적은 오버헤드로 가상 머신들을 구동할 수 있는 첫번째 공개물이었다. 다시 돌아와서 나같은 신참내기 학생에게는 2003년도가 가상화 연구의 시작이라고 생각될 정도였다. 하지만 그것이 연구의 관점에서 가장 걸림돌이 되었다는 사실을 알게되었다. 

실제로 Xen이 공개되고 가상화 연구는 날개를 달았다. 공개되지 않고 내부적인 코어 기술들만 감질나게 논문으로 공개하는 VMware와는 달리 Xen은 모든 기술들을 개발한 족족 공개소스에 포함하고 연구논문을 발표했다. 안드로이드가 플랫폼을 오픈하면서 일어났던 일들처럼 역시 전세계의 시스템 개발자들이 냄새를 맡고 열광하며 달려들었다. 누가 돈주고 고용하지 않아도 필요한 기술들을 개발하고 실험해주는 사람들이 많아지면서 Xen은 많은 발전을 했다. 산업계에 비해 연구자들은 실제로 얼마나 가치가 있는지는 몰라도 흥미로운 시도를 해보기를 좋아하는데 그 것을 만족시켜주는 적격인 환경이 나타난것이다. 하지만 03년도 이후에 나온 가상화 논문들은 그 기술들의 참신함보다는 공개와 공유라는 측면으로 인정받을만한 논문들이 주를 이루었다. 그 이유는 어떤 분야나 그렇듯 연구와 실제의 차이 때문이다. 많은 기술들이 이미 Disco/VMware, L4커널 등 다른 그룹들에서 발표한 논문으로의 회귀이거나 개선을 추가하는 수준이었다.

위에서 말했듯 가상화 기술은 OS 마저도 하나의 프로세스처럼 만들어버리는 또 하나의 커널이다. 기술자들은 이 사실 자체로 매료가 될 지 모르지만, 실제로 OS 커널 연구를 수십년 해온 (교수님 뻘의) 연구자들의 입장으로는 단순히 "가상 머신 기술이라고 해서 OS 커널이랑 다를게 뭔데?" 라는 지겹고도 근본적으로 틀린말이 없는 질문에 맞닥뜨리게 된다. 위에서 말했던 03년도가 가상화 연구가 시작되는 시점으로 착각하는 신참내기 연구자로서는 그런 말을 들으면 특별히 할 수 있는 말이 없게 된다. 그래도 입이 달려서인지 할 수 있는 말은 "가... 가상화니까요.. 좀 다르지 않을까요" 혹은 "아...아무도 이걸 가상화에 적용은 안해봤어요.." 이다. 실제 2000년도 이후 많은 가상화 연구들이 80~90년도에 활발히 연구되었던 OS 연구에 비해 참신성이 떨어지는 것은 어쩔 수가 없었다. 또 다른 커널 레이어링에 불과하니까..OS가 여러 프로세스를 대상으로 했던 일들을 가상 머신 모니터가 OS를 대상으로 하면 되니까.. 난 사실 그 때까지만 해도 연구와 기술의 갭에 대해서 생각해본적이 별로 없었다.

사실 가상화 기술뿐만이 아니다. 80~90년도에 멀티프로세서를 연구 했던 사람들이 자주 하는 소리는 멀티코어라서 달라질 것이 뭐가 있냐는 거란다. 멀티코어는 멀티칩이 아니라 단일칩으로 여러개의 코어를 모았기 때문에 예전보다 지연시간도 짧아지고 한 칩으로 모여버렸으니 그 칩에 있는 자원들을 공유한다는 측면이 달라서 주로 그런 관점에서 연구가 많이 진행되었다. Xen과 마찬가지로 연구 관점에서 멀티코어 프로토타입을 내놓았던 스탠포드나 텍사스 오스틴 대학 등과 같은 그룹이 선구자로 인식되고 있다. 뭐 예상했듯이 난 멀티 프로세서 연구조차도 처음엔 멀티코어 연구가 시작이라고 착각해버렸다. 마찬가지로 멀티코어를 처음 공부하려고 마음 먹었을 때 ISCA등의 학회에 80년대부터 실린 멀티프로세서 연구들에 혀를 내두를수 밖에 없었다. 

다행히 지금은 가상화 기술이 내가 처음에 시작했을때 보다 엄청나게 보편화 되었다. 특히 클라우드 컴퓨팅이라는 환경이 각광받기 시작하면서 가상화 기술이 마치 OS 기술과 같이 당연한 기술로 여겨지는 모습들을 보고 있다. 연구 측면에서 조금 쉽게 말하면, 이제 이 연구가 예전에 OS가 했던거랑 다른게 뭐냐라는 질문에 "가상화에서 한것이 다른건데요" 라고 말하는것이 아주 헛소리만은 아닌 시대가 되긴 했다. 조금은 위안을 하지만 여전히 OS에서의 훌륭한 연구논문들을 읽고 있을 때면 아직 넓게 보는 관점이 많이 부족하고 생각보다 정말 많은 사람들이 비슷한 문제에 대해 수십년전에 이미 고민을 다했구나라는 사실에 숙연해진다. 어쩔 수 없이 그 사람들이 고민 했던 기술이 지금 이렇게 가상화가 일반화되고 멀티코어가 들어서있는 시대에 다른 것들이 무엇인지 아주 쪼잔한 레벨에서부터 조금 그럴듯할만한 것까지 찾을려고 노력하고 있는것이 사실이다. 

결론은 가상화 기술이 컴퓨팅의 새로운 패러다임이 아니라 단순히 OS 아래 한 겹의 OS가 더 자리 잡고 있는 계층적 OS 시스템이라는 것이고, 이 기술의 발전을 위해서는 기존에 이루어져왔던 OS 기술에 대한 포괄적인 이해가 필요하다는 것이다. 가상 머신 모니터가 가상 프로세서 위에 OS를 스케줄하고 OS는 그 안에서 다시 프로세스를 스케줄링 하는것은, 수십년 전부터 OS가 프로세스를 스케줄링 하면 프로세스가 안에서 스레드 스케줄링을 하는 모습과 다를바가 없다. (더 지독한것은 최근 IBM의 Turtles project에서 비교적 실용화할만한 결과를 내놓은 중첩 가상화 (nested virtualization) 기술을 통해 아주 무한대로 상위 소프트웨어 스택들에게 사기를 치고자 한다는 것이지만, 결국 근본은 다를 것이 없다.) 기술과 현실의 차이 때문에 우리가 사용하는 모든 OS에 OS 연구 기술이 들어간것이 아니다. 실제로 Linux에서 문제를 발견했고 그 해결방안까지 떠올랐을지라도 (충격적이지만) 10년도 전에 이미 제안된 기술인 것들도 많다. 가상화 기술에서 Live migration을 접했을 때 대단하다고 생각했지만 결국 process migration의 더 간단한 형태라는 것을 알았을 때 아 정말 나 초중고등학교 다닐때 심지어 나 태어나기 전에도 사람들은 정말 대단한 연구들을 많이 했구나 하고 느낀다. 

언젠가 교수님께서 이런 말씀을 하신적이 있다. "너네는 옛날 논문 잘 안 읽지.. 지금 너네들이 말한거 이런이런 연구에서 다 한거야.. 살펴봐". 실제로 우리들은 최신논문에 집착한다. 이제 2011년이 되어서 말인데 2008년도 논문만 되도 "흠 그건 나온지 꽤 되었네." 라고 한다. 그만큼 쏟아지는 논문이 많아서 최신 논문도 모두 다 체크 못하고 있는 것이 현실인데 2~30년전의 논문이라니 어떻게 접근해야할지 아찔하곤 했다. 요즘에는 최근 논문이라도 과거 관련 연구를 잘 정리해놓은 논문들을 읽으며 추가로 보면 좋을 것 같은 논문을 체크하곤 하는데 체크하다보면 "대체 이런 논문들은 언제 이렇게 다 나온거야" 싶다. 예전 것도 제대로 공부하지 못했으면서 최신 것에 novelty를 불어넣기란 정말 어려운 일이다. 연구에서 가장 필요한 사자성어라면 "온고지신"을 뽑겠다. 너무 당연한 사실이라고? 맞다. 당연한 사실을 깨닫는데 생각보다는 오랜 시간이 걸렸고, 안타까운것은 그 당연한 사실을 여전히 제대로 실천하지 못하고 있다는 사실이 부끄럽다.

항상 긴 글을 쓰면 결론 내는 것은 어렵더라. 그리고 항상 내가 글을 쓸 땐 결론은 뜬금없다. "정신과 시간의 방이 필요하다". 끝.
posted by shinyroot
2009. 3. 14. 09:39 IT/System
연구를 하고 있는 사람인데 내가 하고 있는 분야에 관한 글은 한번도 쓴적이 없는 것 같아서 학회 참석 후기나 한번 올려보고자 한다.

ASPLOS는 OSDI, SOSP와 함께 시스템뿐만 아니라 computer science를 통틀어서 TOP으로 꼽히는 학회다. 작년에 OSDI를 참관한데 이어 ASPLOS라는 큰 학회를 참관할 수 있는 좋은 기회가 주어져서 정말 좋은 work들의 발표들을 많이 들은것 같다. 부작용이 있다면 top conference만 두 번 보다보니 그 무서운(?) 분위기와 수백명의 청중들이 있는 학회장자체가 학회의 전부인것 같아서 학회에 논문 제출하기가 정말 겁난다고 해야할까? 단일 세션이어서 수백명이 한 발표를 듣는데다가 당대 그 분야에 유명하다는 교수들과 연구자들은 거의다 오기 때문에 말한번 잘못하거나 그래프하나 쉽사리 잘못 보였다가는 크게 태클당하기 쉽상이다. 질문 시간도 마찬가지다. 단순한 궁금증뿐만 아니라 다른 환경에서는 어떻게 될 것인가, 이런 애플리케이션에서는 너의 아이디어가 잘 돌아갈 것 같으냐 등등의 전망에 대한 질문들이 많다. 듣도 보도 못한 기술을 얘기하면서 여기에서는 너네것이 어떻게 될 것같냐는 질문도 나오는데 만약 그 기술 자체를 들어보지도 못했다면 과연 어떻게 대처해야 할까.. 하는 생각이 들었다. 참고로 computer science, 특히 시스템 및 네트워크 분야는 저널보다 학회에 의존한다. 저널은 개제되기 까지 걸리는 시간들이 너무 긴데다 분야 자체가 너무 발전속도가 빠르기 때문이다. 그래서 그런지 학회자체가 지나치게 커서 이 분야 사람들이 모두 모이는 일이 잦은듯 싶다.

OSDI는 운영체계 연구에서 특히 구현에 의존하는 학회이고, 작년에 발표를 들으면서도 간단한 아이디어를 정말 잘 구현해서 정말 '말이되는' 워크로드에서 실험해서 자신들의 구현물이 정말로 '쓸만하다' 라는 것에 집중되어 있었다. 특히 현존하는 하드웨어에 대해 어떠한 운영체계 혹은 시스템 소프트웨어의 지원이 있는것이 정말로 쓸만한것인가에 초점이 맞춰져있다. 또한 아무리 쓸만해도 현 시류에 별로 적용될만하지 않다싶은건 선정되지 않는다. 세계적으로 최고라 불리우는 대부분의 IT 기업들이 지원하고 이름만 들어도 누군지 알만한 교수들이 심사하는만큼 학회의 질이 상당히 좋다.

OSDI 학회장, 스크린도 양옆으로 두개에 복도마다 마이크.. 발표가 끝나면 마이크에 줄을 나란히들 서서 열심히 질답들을 한다.


ASPLOS는 Architectural support for programming languages and operating systems의 약자인 만큼 현재 프로그래밍 환경이나 운영체계를 잘 지원하기 위해서 아키텍쳐 계층에서 어떤 기술을 제공하면 좋은지에 대해 토론하는 학회다. 그렇기 때문에 OSDI와는 정말 다른 접근 방식을 가졌다. OSDI는 현존하는 아키텍쳐에서 소프트웨어로 잘할려고 노력했고, 최대한 현재의 것들을 수정하지 않고도 투명하게 적용할 수 있는 방법이 가치가 있다고 평가된 반면, ASPLOS는 필요하다면 하드웨어를 재 설계해서 기존의 소프트웨어들이 자신들의 하드웨어 아키텍쳐에서 얼마나 큰 이득을 보는지에 초점이 맞춰져 있었다. 내가 접근하는 방식과는 너무 달라서 그런지 신선하기도 했지만 반면에 저런식으로 하드웨어 아키텍쳐를 다 고쳐서 하는게 더 간단해 보이기도 했다. 특히 실제 하드웨어를 제작하는것이 아니라 시뮬레이션으로 증명하는 것을 보고, 허구헌날 커널 잘 못고쳐서 몇날 며칠을 보냈던게 생각나서 조금은 억울(?)했나보다. 물론 ASPLOS에도 구현 측면으로 난이도 높은 것들 역시 일부를 차지한다. ASPLOS는 현재 멀티 프로세싱과 신뢰성에 초점이 맞춰있었다. 세션 이름만 교묘히 다를뿐 대부분의 이슈는 이 둘이였다고 해도 과언이 아닐정도였다. 그만큼 요즘 멀티코어에 대한 관심과 꾸준히 풀리지 않는 문제인 신뢰성 문제에 대한 아이디어에 대해 높은 점수를 주는 것 같았다.

ASPLOS 학회장 쉬는시간, 엘리베이터 문이 열리자마자 이곳이 등장한다. 그래서 좀 난감했던...ㅋㅋ


OSDI나 ASPLOS 모두 대부분의 대기업이 스폰서를 하기 때문인지 리셉션이나 행사등이 빵빵했다. OSDI때는 맥주바와 오락실, 뷔페가 퓨전된 곳에서 리셉션을 했었고, ASPLOS역시 비어 파티와 리셉션을 이틀 연속으로 진행했다. 뭐 ASPLOS의 리셉션은 참석하진 않았지만 큰 스케일로 할 것 같았다. 하지만 느낀건.. 연구도 약간의 부익부 빈익빈이 있지 않나 싶었다. 뭔가 자기들만의 특별한 커뮤니티 같은것이 형성되있는것 같다는 생각이 들었다고나 할까... 

몇년째 ASPLOS와 함께 열리고있는 VEE에 내가 한 일을 발표 하게 되었었다. VEE는 요즘 또한 이슈가 되고 있는 가상화 기술을 다루는 학회로, 현재는 자바 가상 머신과 같은 환경에서의 프로그래밍 언어 분야 이슈와 운영체계 가상화를 포함한 시스템 가상화 이슈를 동시에 다루는 학회이다. 나는 시스템 가상화 연구를 하고 있고, 그 중 가상 머신을 프로세서에 효율적으로 할당하는 방법에 관해서 연구한 결과에 대해서 발표했다. 시스템 가상화 기술을 주도하는 회사로 유명한 VMware에 있는 분이 프로그램 체어를 맡고 있었고 학회 내내 질문들이 날카로웠다. 프로그래밍 언어 분야와 적절히 혼합되어 있어서 그런지 내가 모르는 분야가 좀 많아서 종종 정신줄을 놓곤 했다.-_-;

발표전 쉬는시간 랩탑 테스트할때.. 자고있는건지 멍때리고 있는건지 알수 없는 표정..ㅋ


무엇보다도 내 입장에서 가장 중요하다고 느낀것은... 영어였다. 학회 참관내내, 그리고 발표전날까지 계속해서 영어에 대한 긴장감때문에 스트레스를 많이 받았던것 같다. 영어를 second language로 쓰고 있는 사람들은 그나마 나았지만 native들의 영어는 정말 거의 들리지 않았다.. 어휘의 문제보다 그들이 쓰는 문체가 정말 익숙하지 않았던것 같다. 솔직히 내가 영어를 못한것이 더 크다. 하지만 진짜 중요한것은 관련 연구를 하는 사람들과의 커뮤니케이션인데 영어때문에 지나치게 한계를 느끼는 것이 좀 아쉬웠다.. 내 발표에 VMware에 있는 분과 IBM에 있는 분이 질문을 했는데... 솔직히 질문 의도를 제대로 파악 못하고 횡설수설한 것 같아 정말 아쉽다.. 만약 영어를 충분히 잘했다면 이런 좋은 학회 참석은 논문 읽는 시간을 크게 단축 시켜줄뿐만 아니라 정말 좋은 코멘트들을 들을 수 있고, 대부분 사람들이 관심있거나 중요하게 여기는 것이 무엇인지 파악하는데 큰 도움이 될거라는 생각이 든다. 코딩도 해야하고 실험도 해야하는데 영어공부도 죽어라고 해야하는 것이 억울하다고 느낀다면 연구를 할 필요가 없다는 생각이 든다...


워싱턴은 아무래도 배경을 이렇게 놓고 사진찍는거 빼곤 할게 없다..-_-


뉴욕발 비행기덕에 마지막날 서울도 그닥 많이 가보지 못한 촌놈 타임스퀘어에 가보다-_-

뉴욕 전경인데.. 역시.. 사실 서울 전경도 구경을 별로 못해봐서 대단한건지 뭔진 몰겠지만 암튼 빤짝빤짝 눈이부셨다 ㅋㅋ

센트럴파크는.....그냥 넓은 공원이었다....


posted by shinyroot
prev 1 next