オペレーティングシステム 論文購読...

56
オペレーティングシステム 論文購読 (2015/1/27) 味曽野雅史

Upload: others

Post on 18-Oct-2019

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

オペレーティングシステム論文購読 (2015/1/27) 味曽野雅史

Page 2: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

中心に紹介する論文

• OSv: optimizing the operating system for virtual machines Avi Kivity, Dor Laor, Glauber Costa, Pekka Enberg, Nadav Har’El, Don Marti, and Vlad Zolotarov (Cloudius Systems) USENIX ATC’14: 2014 USENIX Annual Technical Conference https://www.usenix.org/conference/atc14/technical-sessions/presentation/kivity

• OSvと呼ばれる仮想化を前提とした単一アプリケーション動作に 適化されたOSについて

2

Page 3: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

内容

• 仮想化技術について • OSv登場の背景 • OSv

•  デザイン •  利点

• 関連技術との比較 •  CoreOS •  コンテナ

•  Docker

3

Page 4: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

仮想化技術

• 一つのマシンで複数の仮想的なマシンを動かす技術 (その上でOS/アプリケーションを実行)

•  1960年代(メインフレーム時代)から研究/利用 • 利点

•  ハードウェアリソースの有効活用 •  容易に仮想マシンの一時停止/複製が可能 •  簡単に開発環境を構築 •  動的マイグレーション (仮想マシンを動的に移動) •  スナップショット

4

Page 5: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

用語

• Host - 仮想化をおこなうマシン

• Guest - 仮想的に実行されるマシン. その上で動作するOSをGuest OSという.

• Hypervisor / Virtual Machine Monitor (VMM) - VMを管理する制御プログラム VMMには大きく分けてType1とType2が存在

5

Page 6: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

Type2 VMM

• Host OSのアプリケーションとして動作 •  VMWare Workstation, VMWare Fusion, VMware Player •  VirtualBox •  Virtual PC •  QEMU

Hardware

Host OS

VMM

Guest OS

Application

Guest Application

6

Page 7: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

Type1 VMM

• OSを利用せずハードウェアの上のレイヤーに直接存在 •  VMWare ESXi •  Xen

Hardware

VMM

Guest OS

Guest Application

Guest Application

Guest OS

7

Page 8: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

明確にType1 / Type2に分類されないもの

• KVM (Kernel-based Virtual Machine) / bhyve • いずれもカーネルモジュールとして実装

(KVM: Linux, bhyve: Free BSD)

Hardware

Guest Application

QEMU

OS (Linux Kernel)

Guest OS

Application

8

Page 9: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

Type1 / Type2 VMM の比較

•  Type1 •  ユーザから扱いやすい.手軽

•  Type2 •  ハードウェア性能をいかせる •  VPS / クラウドで利用されているのはこちら

9

Page 10: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

VMMは実際に何をしているのか?

10

Page 11: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

PopekとGoldbergの仮想化要件

•  “Formal requirements for virtualizable third generation architectures” Gerald J. Popek, Robert P. Goldberg (1974)

• 仮想化に求められる事 •  Equivalence

•  VMMで動作するプログラムは実マシンで動作する場合と時間の遅れを除いて等価

•  Resource Management •  VMMが仮想化された資源を完全に管理すること

•  Efficiency •  大部分の命令は直接実マシンのCPUで実行する

11

Page 12: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

PopekとGoldbergの仮想化要件

• 定理1 CPUのすべてのセンシティブ命令が特権命令であれば仮想化可能 (十分条件)

• 特権命令 •  実行するときにプロセッサがユーザモードならトラップされる命令

• センシティブ命令 •  制御センシティブ命令

•  システム資源の構成を変更する命令 •  動作センシティブ命令

•  システム資源の構成に依存する命令 (CPUモードの読み取りなど)

12

Page 13: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

•  x86の命令セット

• このままでは仮想化できない

x86の場合

特権命令

センシティブ命令

それ以外

13

Page 14: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

• ソフトウェアで命令をシミュレートする • QEMU 全ての命令をソフトウェアで実行

• VMWare センシティブな命令のみを動的に変換して実行

方法1: バイナリ変換

14

Page 15: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

• Guest OSのカーネルを修正してセンシティブな命令を実行する際にVMMを呼び出すようにする

• Xen

方法2: 準仮想化

15

Page 16: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

方法3: Intel VT-x (ハードウェア支援) •  2006年からx86に追加 • Guest OSを実行しているときとそうでないときでCPUモードを変えて,Guest OS実行時のセンシティブ命令をトラップする

16

Page 17: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

(余談) メモリアクセスの効率化

• Guest OS上のプロセスのメモリアクセス手順は, •  Guest OSの仮想アドレス •  → Guest OSの物理アドレス •  → VMMによりHost OS側のアドレスにマッピング

• 効率化のためにハードウェア的サポート機能等が存在 (Intel EPT / shadow paging)

Hardware

VMM

Application

Guest OS

17

Page 18: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

近年のVMM製品の流れ •  1998

•  VMWare 創立 •  x86仮想化

•  2003 •  QEMU

•  2004 •  Xen

•  2006 •  Intel VT: x86のハードウェア的仮想化サポート •  (AWS)

•  2007 •  KVM •  VirtualBox

•  2008 •  Hyper-V

•  2013 •  OSv

18

Page 19: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

クラウド/VPSにおけるVirtual Machine

• ユーザはインターネット経由で外部のリソースを利用 • ユーザは直接サーバを利用するのではなく, サーバ上の仮想マシンを利用する

Internet

19

Page 20: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

実際にクラウド/VPSで利用されているVMM

• AWS •  Xen

• さくらのクラウド / さくらVPS •  KVM

• ニフティクラウド •  VMWare

• Windows Azure •  Hyper-V ベース (推定)

20

Page 21: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

クラウド上のサービス構成例

• 一つのOS上では単一アプリケーションのみ動かすことが多い (HTTP Server, Database, App Server…)

http://aws.amazon.com/jp/solutions/case-studies/outsmart/

21

Page 22: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

クラウドで実行するOSに求められる事

• VMの形で提供される • 高速起動 • 省リソース • 高性能 • 自動デプロイ • 自動アップデート • 設定(再構成)が容易であること

22

Page 23: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

クラウド上のサーバの構成例

• 例) tomcatサーバ

Hardware

VMM

Tomcat

JVM

Guest OS 3つの保護レイヤー → オーバヘッド大

23

Application

Page 24: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

レイヤーごとの保護機能

• Guest OS上のプロセス間でメモリ等が保護されている • 一方であるVM上のプロセスは他のVM上のプロセスにアクセスすることは不可能

Hardware

VMM

Application

Guest OS

Application Application

Guest OS

24

Page 25: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

重複している機能

• 保護機能 •  Guest OS

•  プロセス間 / カーネルの保護 •  VMM

•  VM間の保護

• ハードウェアの抽象化 •  Guest OSが利用するハードウェア

そのものがVMMにより抽象化されたもの

Hardware

VMM

Tomcat

JVM

Guest OS

クラウド上のVMで動作することを前提としたOS を設計すればこれらのオーバヘッドを減らせるのでは?

25

Page 26: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

OSv

•  http://osv.io • クラウドでの動作を前提に 適化されたOS • 目標

•  既存のLinux実行ファイル(ELF)が動作可能 •  アプリケーションはLinuxよりも速く動作する •  OSのサイズを可能な限り小さくし,VMの再構成/起動時間を短くする •  新規アプリケーション向けの新しいAPIの提供 •  モダンな言語で作成 (C++11が中心)

26

Page 27: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

OSvのデザイン

•  Library OSという考え方 / Unikernels •  対象: x64, aarch64

KVM, Xen, VMWare, VirtualBox, EC2, GCE で動作 •  VMの中で一つのアプリケーションのみを動かす

•  単一メモリ空間 •  forkなし •  VMサイズ: 20MB~

•  小限のハードウェアサポート •  一部の機能は外部のプロジェクトのものを利用

•  ネットワークスタック(TCP/IP) : Free BSD •  Cライブラリヘッダ : musl libc •  ZFS ファイルシステム : Free BSD •  ACPIドライバ : ACPICA project

•  BSD License

27

Page 28: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

Unikernels

• Anil Madhavapeddy, Richard Mortier, Charalampos Rotsos, David Scott, Balraj Singh, Thomas Gazagnaire, Steven Smith, Steven Hand and Jon Crowcroft Unikernels: Library Operating Systems for the Cloud (ASPLOS’13)

•  Library OS • カーネルは一つのプロセスのみをサポートする

28

Page 29: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

対応アプリケーション

•  Java (Open JDK) •  Tomcat •  Cassandra •  Jetty •  Jython •  JRuby •  …

• Ruby • mruby •  lua • memchaced • MySQL • …

29

Page 30: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

OSvの特徴

• メモリ空間 • スピンロックの排除 • ネットワークチャネル • スレッドスケジューラ • 新規APIの提供

•  Zero-copy API •  Shrinker API

•  JVM Ballooning

30

Page 31: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

メモリ空間

• 単一アドレス空間 / ring 0 (特権レベル0) •  カーネルとアプリケーションでメモリが分かれていない

• 仮想メモリ(MMU)を使用 •  x86_64 のlongmodeでは仮想メモリを使わなければならない •  mmap などのシステムコールに対応するため

• アプリケーションのメモリ保護は言語ランタイム(JVM等)が行う

31

Page 32: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

スピンロック

• マルチプロセッサシステムにおいて,カーネル内でロックをかける単純な方法 → 割り込みを禁止にする

• ただしこの場合全ての割り込みが禁止されるので,適していない

 → スピンロックが使用される

void lock(int *lock) { while (test_and_set(lock) == 1); }

スピンロック例:

32

Page 33: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

Lock-holder preemption 問題

• VMMは,仮想CPU(VCPUs)を物理CPU上でスケジューリングして実行している •  VCPU1がロックを保持 •  VMMによるCPUのスケジューリング •  VCPU2がスピンロックでロック待ち → 再びVMMによりVCPU1が実行されるまで待つことになる → Lock-holder Preemption 問題

•  Thomas Friebel and Sebastian Biemueller : “How to Deal with Lock Holder Preemption” Xen Summit North America (2008)

33

Page 34: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

Lock-holder preemption 問題の解決策

• 解決策の一つ: lock-free アルゴリズムを使う •  スピンロックを使わない •  アトミックな操作の組み合わせ (compare-and-swap など) •  実装が大変

• 別の方法: VMMがスピンロックを検知したらスケジューリングをおこなう

• OSvでの方法 •  lock-free アルゴリズムによるスピンロックを排除 •  mutexをlock-freeで実装 •  スケジューラをスレッドで動作させず,CPUごとにrun queueを使う

34

Page 35: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

ネットワークチャネル

• 従来のTCP/IP: Socketレベル, TCP/IPレベルでロックが発生 • OSv: Van Jacobson’s network channel

http://www.lemis.com/grog/Documentation/vj/lca06vj.pdf

35

Page 36: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

スレッドスケジューラの特徴

•  Lock-free • スケジューラは各CPUごとにrun queueを保持

•  次に実行するスレッドを決めるとき,ロックする必要がない

•  run queueの偏りをなくす為に load balancer スレッドを用意

36

Page 37: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

スレッドスケジューラの特徴

• あるCPUが別のCPUのスレッドを呼び出す方法 •  N個のCPUに対し,N個のLock-free queueを用意 (合計N^2) •  各CPUは空でないキューを表すビットマスクを持つ •  CPU s が CPU dのスレッドを起こしたいとき,

queue(s,d) にそのスレッドを追加する → CPU d におけるCPU sのビットマスクが有効になる → CPU d のinter-processor interrupt (IPI)が発生

•  CPU d はrescheduleする

37

Page 38: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

スレッドスケジューラの特徴

• プリエンプティブなマルチタスクに対応 •  タイマやIPIにより割り込まれる

•  tick がない • スケーラブル 

•  O(lgN) の計算量

• 軽量なコンテキストスイッチ •  アドレス空間が一つなので,ページテーブルを切り替える必要がない •  x86_64のABIではFPUレジスタはcallerが保存することになっているの

で,FPUレジスタの保存をしない

38

Page 39: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

新規APIの提供

• 標準的なLinuxのAPI(システムコール)だけでなく,OSvの性能を引き出すAPIを提供する •  LinuxのAPIはマルチプロセス/マルチユーザを前提に設計されている •  OSvではカーネルとユーザスペースが分離されていない •  ページテーブルに直接アクセスできる

• 言語ランタイムが新規APIを使用するように修正することで,アプリケーション性能の向上が見込める

39

Page 40: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

新規API : Zero-copy API • 通常のソケットのAPIではカーネル空間のバッファからユーザ空間へのバッファへのコピーが発生

• OSvではこれらのコピーは不要 → Zero-copy API

40

Page 41: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

新規API: Shrinker • アプリケーションがOSvにコールバック関数を登録 • システムのメモリが少なくなったときそのコールバック関数が呼ばれる

• コールバック関数がメモリの開放をおこなう • 使用例: キャッシュ容量の動的変更

41

Page 42: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

JVM Ballooning

•  JVMは大部分のメモリをヒープから割り当てる •  JVM起動時のパラメータでヒープサイズを指定 • 性能を 大限引き出すために適切なヒープを割り当てたい → JVM Ballooning

• まずJVMのヒープを 初に 大限割り当てる • メモリが足りなくなったらByteArrayの大きな配列を作る → この領域をOSに返却 (unmapping)

• ByteArrayで確保されているのでその部分はGCされない

42

Page 43: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

評価結果

43

Page 44: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

他の評価結果

•  Ian Briggs, Matt Day, Eric Eide, Yuankai Guo, Peter Marheine Performance Evaluation of OSv for Server Applications (2015)

• DNS および HTTP Serverの評価 • CPU: Xeon E5530 • メモリ: 12GB • VMM: Xen 4.4 • Gigabit Ethernet

44

Page 45: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

DNS Server • BIND 9.8.4

45

Page 46: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

HTTP Server Response

• OSv: lighttpd1.3.45 •  Linux Server: Apache 2.4.7

46

Page 47: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

OSvを扱いやすくするツール: Capstan

• 高速にVMを作成/デプロイするツール (go製) •  マルチプラットフォーム

• Docker(後述)のように手軽に扱える • YAML

47

Page 48: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

関連技術との比較

• CoreOS • コンテナ

•  Docker

48

Page 49: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

CoreOS

•  http://coreos.com • 軽量にカスタマイズされたLinux Distribution • 後述のDockerと組み合わせて使用されることが多い

•  ただし 近Dockerと決別した

49

Page 50: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

コンテナ

• カーネルによるリソースの名前空間の分離 •  ファイルシステム •  ネットワーク •  プロセスID •  共有メモリ

• カーネル自体は共通 • 代表的なもの

•  Free BSD jails (2000~) •  Linux Containers (LXC)

50

Page 51: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

コンテナの利点 / 欠点

• 利点 •  起動が高速 •  性能劣化が少ない •  複数の異なるバージョンのアプリケーションが実行しやすい •  インスタンスを複数立ち上げる必要がない

• 欠点 •  ライブマイグレーションができない

•  開発中 •  仮想マシン上でコンテナを使うという手段もある

•  ホストと別種類のOSを利用ができない

51

Page 52: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

Docker •  https://www.docker.com • An open platform for distributed applications for

developers and systems •  LXCを手軽に扱えるようにしたもの

•  LXCのリポジトリ •  コマンドラインツール

•  % docker run

• OSvでいうCapstan (CapstanはDockerを参考にしたもの)

•  goで実装 •  マルチプラットフォーム

52

Page 53: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

Docker? OSv?

http://osv.io/blog/blog/2014/06/23/containers-hypervisors-part-3/

53

Page 54: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

開発者の意見

•  https://plus.google.com/+OsvIo/posts/fgzsepcScTa • Glauber Costa: "I once heard that hypervisors are the

living proof of operating system's incompetence”. The failure of operating systems (LinuxCon Europe 2012) : https://lwn.net/Articles/524952/

• OSはタスクごとにCPUやメモリを分けることができない • ハイパーバイザの分離機能はOSが持つべきでは? → コンテナ

• コンテナはVMより今は速いかもしれないが,将来もそうであるとは限らない •  コンテナの速さの要はリソースの重複の排除 •  OSvも同様のことをしている

54

Page 55: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

開発者の意見

• OSvの方が,コンテナよりもより自然な抽象化をおこなっている

• OSvは多くのクラウド上のアプリケーションがVM上で一つだけ動いているという事実に基づいて開発されている •  シンプルなデザイン

55

Page 56: オペレーティングシステム 論文購読 (2015/1/27)tau/lecture/operating_systems/2014/slide... · • 簡単に開発環境 を ... その上で動作するOSをGuest OSという

議論

• Docker (コンテナ) vs OSv (仮想化) •  手間が少ない方か効率の良い方か? •  OSvの方がセキュリティは高いといえる

• どちらが一方を完全に上回っているということはない • Dockerのようにコミュニティが活発化することが

OSv普及の鍵ではないか (Capstan)

• 果たしてそこまで 適化する需要があるのか? •  ハードウェア性能の向上

56