OSv Optimizing the Operating System for Virtual Machines


http://osv.io/

개요

OSv는 ExoKernel에서 제시된 libOS에 대한 아이디어를 VM환경에서의 OS에 적용한 논문이다. 풀어서 설명하자면, libOS는 kernel의 추상화를 최소한 간단하게 만들고 많은 부분을 Application에 의존한다. 이러한 구조를 따르는 OS를 LibOS라고 부른다. 즉 한 어플리케이션이나 환경만을 위한 커널을 최소한의 라이브러리로 구성하고 하드웨어에서 돌리는 것이다. 기존의 복잡한 커널구조를 줄이고, 등의 장점이 있는데, 이를 hypervisor와 VM의 관계에 적용하여 많은 performance의 이점을 얻은 논문이다.

Edit 2022/12/19 Evaluation을 위해서 간단한 밴치마크들을 돌려보았는데, 생각보다는 구현하기에 어려움이 있진 않았다. 물론 ZFS시스템을 거의 반 강제하며, Rich한 네트워크 스택에 대한 지원이 없지만, 간단한 스크립트 변경으로 구현할 수 있었다. 그러나 우선 Performance 측면에서 기존의 KVM과 Virtio의 속도가 매우 빨라져서 거의 속도에 대한 측면에서는 오히려 Virtio와 KVM이 빠른 경우가 많았다. 또한 booting time측면에서도 Memory크기가 증가함에 따라서 Linear하게 증가하여 충분한 메모리와 함께 돌려야 하는 Workload는 Instant booting이 불가능 하였다. 현재 점차 빨라지는 Virtio와의 측면을 고려하였을때, 맞먹는 Optimization없이는 힘들것 같다는 생각이 든다.

1. Summarize the problem(s) the paper want to solve. VM runs a guest operating system with general purpose OS despite the fact that hypervisor provide isolation to virtual machines. IS there any other way to provide specific OS for VM?

2. Why is/are the problem(s) important? State your opinion. Traditional OS forced to choose between isolation and performance. This reason mainly due to fat VM size and duplicated protection boundaries. This paper tries to minimize the OS in VM for fast and per full performance with strong isolation.

3 Summarize the (at most) key main ideas of the paper. -> Using small image -> Quick boot time such like container -> Simple hardware spec -> Not tied to the hypervisor or platform -> new API for virtual machine -> Fast performance compare to existing POSIX API. -> Use new features to runtime environment such like JVM -> not needed to change the application itself. -> No needed to context switching.. single address space.. functional system call.. no spin lock (due to protection boundary is hypervisor not VM)

-> Key.. Hypervisor is ExoKernel and VM is application in LibOS. And we run application on top of VM! Simple but powerful enough to provide security.

4. State the main contributions of the paper. OSv is kind of unikernel targeted for VM. This paper present how and why have to use unikernel for virtual machines targeting for special purpose system such as JVM or single applications.

5. Criticize the main contributions (Limitations of the proposed design. Limitations of applicability etc.) Rate the significance of the paper on a scale of 5 (breakthrough), 4 (significant contribution), 3 (modest contribution), 2 (incremental contribution), 1 (no contribution or negative contribution). Explain your rating. -> I think OSv following lots of idea from ExoKernel, LibOS and Unikernel. So maybe it seems like duplicated with such projects. However organizing libOS for virtual machine is one of the interesting situations for usage of LibOS. Thus I think this paper provide significant contribution for virtualization. (3.5)

6. Rate how convincing is the evaluation methodology (Refer to the following questions). Do the claims and conclusions follow from the experiments? Are the assumptions realistic? Are the experiments well designed? Are there different experiments that would be more convincing? Are there other alternatives the authors should have considered? (And, of course, is the paper free of methodological errors.) Ok I saw various kind of evaluations for performance issues. But as following unikernel like libOS, performance is outperformed naturally. So besides the performance there must be benchmarks for fast boot time (existing, but with more data - container comparison and visualization), crowd situations (run many VM at once), memory footprint, and also security issues for OSv. Security analysis, benchmarks between different platform… etc. This paper just show performance test for application. So I personally think that evolution part is rather week compare to the overall well structured paper.

7. Answer one of the following three questions (whichever is most relevant for this paper): What lessons should system researchers and builders take away from this work? -> I think separating isolation for OS in VM is important idea from this work. -> LibOS is great once again? What is the lasting impact of this work? What (if any) questions does this work leave open?