이성진 박사는, 컴퓨팅 관련 최근 동향 파악 및 역량 증진을 위하여 OSDI 2016에 참석 하였다.

OSDI는 명실 공히 시스템 소프트웨어 분야에서 세계 최고의 학회이다. 학회의 참석하는 수많은 인재들과의 인적 네트워크를 형성하고 뉴메모리를 포함한 시스템 소프트웨어 분야의 최신 기술 습득의 최고의 기회이다. 학회에 참석하는 구글, 마이크로소프트, 페이스북, 넷앱 등의 최고의 기업의 최신 기술을 접할 수 있는 기회이기도 하다.

참석자들 중에는 이 분야의 사람들이면 누가나 알만한 유명한 사람들이 몇 있다. 운영체제 책의 저자인 Andrew Tannenbaum 이라든가, log-structure file system 의 John Ousterhout 가 그런 유명한 사람들이다. Peter Chen 은 소프트웨어공학을 하는 사람들에게는 특히 이름이 잘 알려져 있다. 흔히 ER diagram이라고 알려진 Entity-Relation Model을 만든 사람이다. 이런 사람들과 교류하였다.

20161104_085126
Andrew Tannenbaum과 함께
20161104_103656
John Ousterhout와 함께
20161102_174043
Jörg Thalheim 와 함께
20161104_171833
Peter Chen 과 함께

이 학회에서 만난 사람들과 그들의 논문에 대한 요약과 질문의 답변들을 정리한다.

“OS Containers on Diet Using CNTR”, Jörg Thalheim, Franz Gregor, Pramod Bhatotia, and Christof Fetzer, Technische Universität Dresden컨테이너라는 개념은 새로운 패키지를 deploy할 때 많이 사용되는 핫한 기술이다. Jörg가 연구를 하다가 잉여 시간에 혼자 시험해본 기술이라고 한다. 컨테이너가 독립적으로 동작해야 하기 때문에 모든 라이브러리 및 프로그램들을 포함시켜야 한다. 모든 라이브러리를 포함해야 하기 때문에 용량이 커질 수가 있다는 문제를 해결하기 위해서 자신이 필요한 라이브러리들만 따로 모아서 새로운 컨테이너를 만들어 제공을 한다는 내용이었다. 컨테이너가 실제 동작하는 과정에는 불필요한 프로그램들이 추가되어 있을 때 exploitation이 가능한데, 그런 위험을 애초에 제거 할 수 있다는 내용이다. 기술 보다는 독자적인 연구를 하고 이렇게 발표를 하기 위해 왔다는 것이 고무적이었다.

“Alpenhorn: Bootstrapping Secure Communication without Leaking Metadata”

David Lazar and Nickolai Zeldovich, MIT CSAIL 제목에서의 메타데이터라고 하는 것은 사용자가 누구와 통신을 하고자 하는가의 정보이다. 핵심은 서버가 public key를 계속 새로 생성해서 제공하고 클라이언트는 생성된 public key를 조작하여 private key를 만든다는 것이다. 결국 처음에 말한 metadata는 완전히 숨길 수는 없지만, public key가 수 밀리초 마다 계속 바뀌기 때문에 그 외의 시간에는 메타데이터를 감출 수가 있다고 했다.

“Non-Intrusive Performance Profiling for Entire Software Stacks Based on the Flow Reconstruction Principle”, Xu Zhao, Kirk Rodrigues, Yu Luo, Ding Yuan, and Michael Stumm, University of Toronto 사용자가 사용하고 있는 시스템의 syslog의 정보를 서버로 모아서 서버가 정보를 분석하도록 하는 시스템이다. 문제가 있다면 syslog의 정보가 유의미한 경우에만 활용했을 때만 가치가 있다는 것이다. syslog의 정보가 문제해결에 불충분하다면 서버에 모은 정보는 무의미해진다. 또한 엄청나게 많은 로그 데이터를 서버로 이동해야 한다는 문제가 있다. 그러나 자기들이 보기에는 그 데이터 이동이 그렇게 문제가 되지 않는다고 했다. 그러나 log2라는 논문에서보면 로그 데이터를 모두 쓸 수 있는 것이 아니라고 했기 때문에 그리고 로그가 모두 유의미 한 것은 아니라고 했기 때문에 이 방식에는 많은 문제가 있는 것 같다. log2에 대해서는 잘 모르는 듯 했다. 용량 줄이기 문제는 계속 연구 중이라고 한다.

“To Waffinity and Beyond: A Scalable Architecture for Incremental Parallelization of File System Code”, Matthew Curtis-Maury, Vinay Devadas, Vania Fang, and Aditya Kulkarni, NetApp, Inc. 논문에 대한 이야기 보다는 최근 스토리지 동향에 대해 이야기를 나눴다. 내가 박사학위 받을 때 또는 그 보다 좀 더 이른 시점에는 학위 논문과 같은 주제인 hybrid storage 시스템에 유행이기도 했고 그것으로 돈을 많이 벌었다고 한다. 지금은 SSD로만 된 시스템이 대세라고 한다. 더이상은 hdd는 활용을 안하는 듯했다.

“Correlated Crash Vulnerabilities”, Ramnatthan Alagappan, Aishwarya Ganesan, Yuvraj Patel, Thanumalayan Sankaranarayana Pillai, Andrea C. Arpaci-Dusseau, and Remzi H. Arpaci-Dusseau, University of Wisconsin—Madison이 논문은 APM이라는 이전 논문의 확장판이다. strace 또는 dtrace로 시스템 콜을 추출하여 스토리지에 상태를 변경할 지점들을 파악하고 원래 저장해 놓았던 정보와 비교하여 어떤 오류가 발생하는지 확인하는 시스템이다. APM은 로컬 파일 시스템의 오류를 파악하는 것이었다면 이 논문은 분산 시스템에서 발생할 수 있는 오류를 파악하는 것이다. 오류를 파악했다면 수정을 해야겠지만, 그 수정 자체는 결국 사람이 해야 한다는 것이다. 어떤 오류를 고려해야 하는지를 파악하는 툴로는 좋은 것 같다.

“Tiny Tail Flash: Near-Perfect Elimination of Garbage Collection Tail Latencies in NAND SSDs”, Shiqin Yan, Huaicheng Li, Mingzhe Hao, and Hao Tong, University of Chicago; Swaminathan Sundararaman, Parallel Machines; Andrew A. Chien and Haryadi S. Gunawi, University of Chicago. SSD에 있는 낸드 플래시의 패키지를 마치 raid로 구성을 하여 패리티를 추가하였다. 그래서 하나의 패키지가 gc를 수행 중이면 나머지 n-1개의 패키지의 페이지들을 읽어서 서비스 한다는 것이다. 이것이 가능한 이유는 read가 gc보다 더 빠르기 때문에 가능하다는 주장이다.

“Slicer: Auto-Sharding for Datacenter Applications”, Atul Adya, Daniel Myers, Jon Howell, Jeremy Elson, Colin Meek, Vishesh Khemani, Stefan Fulger, Pan Gu, Lakshminath Bhuvanagiri, Jason Hunter, and Roberto Peon, Larry Kai, Alexander Shraer, and Arif Merchant, Google; Kfir Lev-Ari, Technion—Israel Institute of Technology  OSDI 2010년에 만났던 Jon Howell은 마이크로소프트에서 구글로 이직한지가 1년반이 되었다고 한다. 그 때는 머리가 많이 길었는데, 짧게 자른 머리를 이제 다시 기르려고 한다. 예전에 발표했던 논문 중에 기억에 남는 것이 있어서 문의를 했다. (Jon Howell, Bryan Parno, and John R. Douceur, How to Run POSIX Apps in a Minimal Picoprocess, in Proceedings of the USENIX Annual Technical Conference, USENIX, June 2013. Jon Howell, Bryan Parno, and John R. Douceur, How to Run POSIX Apps in a Minimal Picoprocess, in Proceedings of the USENIX Annual Technical Conference, USENIX, June 2013.) 웹브라우저 위에서 운영체제가 필요로하는 응용프로그램을 실행시키는 기법에 대한 주제들이었는데 마이크로소프트에서는 윈도우를 팔아야하는 입장이었기 때문에 인기가 많이 없었고 관심도 크게 끌지 못했다고 한다. 기술의 요소들을 때어 놓고 보면 Jon의 말로는 기반을 모두 갖고 있었으나 지원을 받지 못하여 많은 아쉬움이 남았다고 한다. Slicer라는 논문에 대해서 이야기 하다가 알게 된 사실은 크롬 앱으로 hello world와 같은 간단한 프로그램을 짜게되면 갖가지 앱을 구동시키기 위한 라이브러리들이 붙기 때문에 용량이 기가바이트 급으로 커진다고 한다.

“Intermittent Computation without Hardware Support or Programmer Intervention”, Joel Van Der Woude, Sandia National Laboratories; Matthew Hicks, University of Michigan. Joel이 발표 중에 말하지 않은 내용이 있었는데, 어떤 종류의 nvram을 사용했는지 말하지 않았다. 발표 중에 누가 SSD같이 느린 것을 쓰냐고 했는데, 좌중의 반응은 진심인가? 라는 분위기였다. Jon Howell도 자신이 너무 감이 떨어졌나? 라고 의문이 들 정도였다고 했다. 그러나 NVRAM이 분명 속도가 빠른것은 인정을 한다. 실제로 이들은 FRAM을 사용하여 체크포인트를 가끔씩하는 시스템을 구축하였다.

최신의 주제를 그 저자들과 토론하면서 스스로 많은 부족함을 느꼈고, 더 잘하려면 무엇을 해야할지 고민도 많이 한 시간이었다. 지금까지 다녀왔던 학회 출장 중 가장 유익한 출장이 아니었나 생각한다.