Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
!
!
!
!
!
!
!
!
!

はじめに!
今日のクラウドベースアプリケーションを支える仮想化システムは、ハイパーバイザやオペレーティ
ングシステム、言語ランタイムなどが幾重にも積み重なって構成されており、それぞれが権限とリ
ソースの管理、スケジューリングなどの機能を提供しています。!
それぞれで提供されている機能自体は有用なものですが、特定のアプリケーションだけを大量の
VMインスタンスで実行する、というようなクラウドアプリケーションで頻繁に発生するような用
途では、これらの機能は必ずしも全て有効に活用されているわけではなく、オーバヘッドを産んで
います。!
OSvは、このような無駄をなくして最大限の性能を引き出すために1から設計された、新しいオ
ペレーティングシステムです。!

!

OSvの設計!
・複数のメモリ空間を持たない

仮想メモリは有効ですが、全てのプロセスとカーネルの間で一つのメモリ空間を用います。!
これにより、アプリケーション間・アプリケーション カーネル間のメモリ保護が効かなくなり
ますが、Java VMなど言語ランタイムレベルでメモリ保護が行われるので必要ない、と割り切って
います。!
また、アプリケーションごとに別のVMインスタンスを立ち上げる利用モデルを想定しているの
で、アプリケーション間の保護は考慮しなくていいものと考えます。!
メモリ空間の切り替えを行わないことにより、TLBミスやページテーブル切り替えによるコストを
削減し、パフォーマンスをあげることができます。!

!

・OSvはカーネルとユーザプロセス間で権限のモード切替を行わない

アプリケーションをカーネルモードで実行するとハードウェアへのアクセスを行ったり、カーネ
ルの使用しているリソースへアクセスを行うことが出来てしまいます。!
しかし、ハードウェアへのアクセスはハイパーバイザが仮想化する事により防げますし、アプリケー
ションがそのようなアクセスを行う事はJava VMなど言語ランタイムレベルで防ぐ事ができます。!
よって、OSvではアプリケーションをカーネルモードで実行します。!
アプリケーションがカーネルモードで実行されるため、カーネルを呼び出すのにシステムコール
を利用しません。!
代わりに、OSvカーネルがlibcへの関数コールを直接受け取って処理を行います。!
モード切替えを行わないことは、前述のメモリ空間の切り替えを行わない事と同様にパフォーマ
ンスの向上をもたらします。!

!

・Linux用アプリケーションとのバイナリ互換性を持つ!
OSvはLinux用のOpenJDKバイナリを実行出来るように設計されています。!
これを実現するためにLinux互換のlibc APIインタフェースを提供しており、いくらかのLinuxアプ
リケーションは変更をほとんど行うこと無くOSvへポーティング可能です。!

!

OSvが提供する機能!
OSvはFreeBSDよりZFS、ネットワークスタックを、musl-libcよりLinux互換 libc APIをポーティ
ングしています。!
これらと共にフルスクラッチでC++11を用いて書かれたカーネルが動作し、OpenJDKをロードし
て実行します。!
OpenJDKの上ではSSHやターミナルを提供するCRuSHシェル、Webアプリケーションフレーム
ワークを実行するJRubyが実行されています(図)。!

HTTP
SSH

sched
uler
syscall
emu

ACPI

!
!
Pum
Sinat
!
a
ra
!
!
CRuSH
JRuby
!
!
オリジナル実装(C++11) !
OpenJDK
!
ポーティング
libjvm.so
!
!
バイナリ
!
java.so
!
非ネイティブコード
!
!
OSv kernel
!
ELF
libc
!
loader
TCP/
!
ZFS
IP
!
ramfs
!
MM
VFS
FBSD code
!
!
COM
virtiovirtio!
clock
port
blk
net
!
!
!
!

OSvで実行出来るアプリケーション!

OSvでは、単一のアプリケーションのみがインストールされたディスクイメージをアプリケーショ
ンごとに用意するような使い方を想定しています。!
現状のOSvのビルドシステムでは、makeコマンドの引数にimage=アプリケーション名を指定する
ことにより、そのアプリケーション用のディスクイメージを作成します。!
ここでは、Javaアプリケーション以外のものも選択できるようになっています。!
今回、μOSvプロジェクトではmrubyを選択できるようにしましたが、他にも以下のようなアプリ
ケーションが選択可能です:!
・cassandra(OpenJDK上で動作)!
・tomcat(OpenJDK上で動作)!
・haproxy!
・memcached!
・sqlite!
実行可能なアプリケーションは随時追加されていく予定です。!

!

mrubyの実装状況!
以下にOSv上で動作が確認されている代表的なmrbgemsを示します。!
・mruby-dir!
・mruby-socket!
・mruby-http!
・mruby-json!
・mruby-sqlite3!
・mruby-yaml!
・mruby-vedis!
・mruby-simplehttp!
・mruby-httprequest!

!

OSvのフットプリント!
OSvはアプリケーションを仮想化環境上で実行するために最低限必要なものだけを提供するた
め、とてもフットプリントが小さくなっています。!
mruby用ディスクイメージの場合、ディスクイメージサイズは30MB未満・メモリサイズは最低
90MB・起動時間は2秒未満となっています。!

!

OSvの開発体制・ライセンス体系!
イスラエルのスタートアップであるCloudius Systemsが主導して開発をすすめていますが、BSDラ
イセンスの元オープンソースで提供されており、開発スタイルはLinuxやRubyなどと同様のコミュ
ニティベースのスタイルを取っています。!
全ての議論はGoogle Groupsのosv-devグループで閲覧可能です。!
ソースコードはgithubで公開されており、issueリストもここで管理されています。!

!

ホームページ:http://osv.io!
github:https://github.com/cloudius-systems/osv!
Google Groups:https://groups.google.com/forum/#!forum/osv-dev!

!

日本語での問い合わせ先!
以下のメールアドレスへご連絡お願い致します。!
syuu@cloudius-systems.com!

More Related Content

OSvパンフレット