osvのご紹介 in java 8 hotspot meeting

48
OSvのご紹介 in Java 8 HotSpot meeting Takuya ASADA <syuu@cloudius-systems> Cloudius Systems

Upload: takuya-asada

Post on 28-Nov-2014

878 views

Category:

Technology


3 download

DESCRIPTION

OSvのご紹介 in 
Java 8 HotSpot meeting

TRANSCRIPT

Page 1: OSvのご紹介 in Java 8 HotSpot meeting

OSvのご紹介 in Java 8 HotSpot meeting

Takuya ASADA <syuu@cloudius-systems> Cloudius Systems

Page 2: OSvのご紹介 in Java 8 HotSpot meeting

自己紹介• @syuu1228 on Twitter

• Software Engineer at Cloudius Systems

• FreeBSD developer (bhyve, network stack..)

• カーネル/VM探検隊 初代主催者

• Software Designで「ハイパーバイザの作り方」を連載中

Page 3: OSvのご紹介 in Java 8 HotSpot meeting

Cloudius Systemsについて• OSvの開発母体(フルタイムデベロッパで開発)

• Office:Herzliya, Israel

• CTO : Avi Kivity → Linux KVMのパパ

• 他の開発者:元RedHat(KVM), Parallels(Virtuozzo, OpenVZ) etc..

• イスラエルの主な人物は元Qumranet(RedHatに買収)

• 半数の開発者がイスラエル以外の国からリモート開発で参加

• 18名・9ヶ国(イスラエル在住は9名)

Page 4: OSvのご紹介 in Java 8 HotSpot meeting
Page 5: OSvのご紹介 in Java 8 HotSpot meeting
Page 6: OSvのご紹介 in Java 8 HotSpot meeting
Page 7: OSvのご紹介 in Java 8 HotSpot meeting
Page 8: OSvのご紹介 in Java 8 HotSpot meeting

OSvの概要

Page 9: OSvのご紹介 in Java 8 HotSpot meeting

OSvとは?• OSvは単一のアプリケーションをハイパーバイザ・IaaSでLinuxOSなしに実行するための新しい仕組み

• より効率よく高い性能で実行

• よりシンプルに管理しやすく

• オープンソース(BSDライセンス)、コミュニティでの開発

• http://osv.io/

• Kivity, Avi, et al. "OSv—Optimizing the Operating System for Virtual Machines." 2014 USENIX Annual Technical Conference (USENIX ATC 14). USENIX Association, 2014.

Page 10: OSvのご紹介 in Java 8 HotSpot meeting

1つのアプリだけ実行したいユースケース

ハイパーバイザ

ホストOS

ゲストOS

JVM

Javaアプリ

ハイパーバイザ

ホストOS

JVM

Javaアプリ

デカいゲストOSは 余計なオーバヘッドでは?

Page 11: OSvのご紹介 in Java 8 HotSpot meeting

解決策:ライブラリOS

ハイパーバイザ

ホストOS

JVM

Javaアプリ

OSv

出来るだけ改造しない

ここで環境の違いを吸収

Page 12: OSvのご紹介 in Java 8 HotSpot meeting

OSv=ライブラリOS• OSを利用するために呼び出すLinux APIをライブラリのような形式で提供(glibcへの限定的な互換性を提供)

• 言語ランタイムはなるべく改造しないで移植可能にする(OpenJDK/Linux x86_64バイナリが動く)

• API提供に必要な機能は実装(ファイルシステム=ZFS、TCP/IP、スレッド&SMP)

• フルサイズのOSとは構造の異なる薄いレイヤ(単一プロセス、単一メモリ空間、全てカーネルモード)

Page 13: OSvのご紹介 in Java 8 HotSpot meeting

動作環境• ハイパーバイザ

• KVM

• Xen

• VMware

• VirtualBox

• IaaS

• Amazon EC2

• Google Compute Engine

Page 14: OSvのご紹介 in Java 8 HotSpot meeting

対応アプリ(Java)

• OpenJDK7,8

• Tomcat

• Cassandra

• Jetty

• Solr

• OpenDaylight

• Gitblit

• Clojure

• JRuby(Ruby on Railsなど)

• Ringo.JS

• Jython

• Erjang

• Scala

• Quercus(PHPエンジン、Wordpressなど)

• minecraft-server

• Oracle NoSQLDB

Page 15: OSvのご紹介 in Java 8 HotSpot meeting

対応アプリ(Java以外)

• Ruby

• WEBRick

• Ruby on Rails

• Publify(Railsベースのブログエンジン)

• mruby

• lua

• Node.js

Page 16: OSvのご紹介 in Java 8 HotSpot meeting

何が動くの?(ネイティブアプリ)

• haproxy

• memcached

• MySQL

• LevelDB

• SQLite

• twemproxy

Page 17: OSvのご紹介 in Java 8 HotSpot meeting

フットプリント(ディスクイメージサイズ)

• mruby = 14MB

• Ruby = 48MB

• OpenJDK = 77MB

Page 18: OSvのご紹介 in Java 8 HotSpot meeting

デモ

Page 19: OSvのご紹介 in Java 8 HotSpot meeting

OSvのフットプリントと性能

Page 20: OSvのご紹介 in Java 8 HotSpot meeting

フットプリント(最低メモリ使用量)

• mruby = 65MB

• Ruby = 75MB

• OpenJDK = 110MB

Page 21: OSvのご紹介 in Java 8 HotSpot meeting

ブート時間

• 1秒(DHCP、ZFS初期化込み)

Page 22: OSvのご紹介 in Java 8 HotSpot meeting

SPECjbb2005(Java)

• 120% faster than Linux guest

0

10250

20500

30750

41000

score

OSv Fedora

Page 23: OSvのご紹介 in Java 8 HotSpot meeting

iperf(network)

• 186% faster than Linux guest

0

5.25

10.5

15.75

21

Gbps

OSv Fedora

Page 24: OSvのご紹介 in Java 8 HotSpot meeting

fsmark

• 142% faster than Linux guest

0

55

110

165

220

files/sec

OSv(ZFS)Linux(ZFS)Linux(ext4)

Page 25: OSvのご紹介 in Java 8 HotSpot meeting

memcached

• ※ネットワークスタックを迂回する独自版memcachedでの比較

• 280% faster than Linux guest

0

2000

4000

6000

8000

score

OSv Fedora

Page 26: OSvのご紹介 in Java 8 HotSpot meeting

OSvの周辺機能

Page 27: OSvのご紹介 in Java 8 HotSpot meeting

OSvをプログラムから操作 「REST API」

• REST API経由でOSvに任意の操作を実行

• 従来のOS:コマンド実行やファイルの編集で設定を変更(手動が基本、シェルスクリプトなどで自動化)OSv:APIで設定を変更(自動化が基本、CLIはオプション)

Page 28: OSvのご紹介 in Java 8 HotSpot meeting

OSvを対話的に操作「Lua CLI」

• 簡易的なシェル機能を実現

• 全ての機能をREST API上に実装

• デフォルトではOSv上で実行されるが、リモートホストで実行してSSH代わりに使用可能

Page 29: OSvのご紹介 in Java 8 HotSpot meeting

初期化スクリプトをサーバからダウンロード&実行

「Cloud Init」

• ネットワーク上からYAMLをダウンロードしてきて、ダウンロードしたファイルに記述されているREST APIを順次実行

Page 30: OSvのご紹介 in Java 8 HotSpot meeting

OSv GUI• WebベースのGUI

• OSの負荷、JVMのリソース情報、アプリのstatisticsなどの統計情報を表示

• Virtual applianceとしてOSvを使うことを前提にCassandra, memcached, Redisなどのアプリの情報を表示する機能を実装中

Page 31: OSvのご紹介 in Java 8 HotSpot meeting

a

Page 32: OSvのご紹介 in Java 8 HotSpot meeting

簡易デプロイツール「Capstan」

• 色々なアプリがインストールされたOSvのVMイメージを、コンパイルなどの難しい作業なしに手軽に実行するツール

• Linux, Mac, Windowsで動作

• VirtualBox, VMware, KVMなどに対応

Page 33: OSvのご紹介 in Java 8 HotSpot meeting

クラウドへのデプロイ

• Amazon EC2

• AMIを配布中

• Google Compute Engine

• capstanからアップロード可能

Page 34: OSvのご紹介 in Java 8 HotSpot meeting

OSvにおけるJavaの拡張

Page 35: OSvのご紹介 in Java 8 HotSpot meeting

JMX on REST API

• JMXのMBeanへREST API経由でアクセスが出来る

• Javaアプリケーションの内部情報を取得・変更することが可能

• JMX APIとJolokiaベースの2つの実装が存在

Page 36: OSvのご紹介 in Java 8 HotSpot meeting

JVMマルチテナント• 1つのVMでは通常1つのmainメソッドを含むプログラムしか実行出来ない

• OSvは単一プロセスなので1つのJavaアプリしか起動出来ない

• マルチテナントをサポートするクラスローダを独自に実装し、複数のmainメソッドを含むプログラム群をロード&実行するような仕組みを実装

• JVM自体のコードは無変更

Page 37: OSvのご紹介 in Java 8 HotSpot meeting

JVM ballooning• OS起動時にほぼ全てのメモリをJVMヒープに割り当て

• OS側のメモリが足りなくなってきたらOSへコールバックAPIを使って通知Java側でByteArrayを作成し(GC対策)この領域をOS側へ返還

• OSが使わないメモリ領域は引き続きJava側が使用出来る

• JVM自体のコードは無変更

Page 38: OSvのご紹介 in Java 8 HotSpot meeting

OSv API• ELFバイナリのロード&実行

• リブート

• ARPテーブル、ルーティングテーブルの編集

• IPアドレスの設定、DHCPクライアントの制御

• JVM Balloon API

• カーネルトレースポイント API

Page 39: OSvのご紹介 in Java 8 HotSpot meeting

Javaアプリの移植

Page 40: OSvのご紹介 in Java 8 HotSpot meeting

Rhinoの例

• Makefileでzipをwget、unzip

• Capstanfileでjs.jarをOSvのFSへ展開

Page 41: OSvのご紹介 in Java 8 HotSpot meeting

Makefile

.PHONY: all

all: wget ftp://ftp.mozilla.org/pub/mozilla.org/js/rhino1_7R2.zip unzip -x rhino1_7R2.zip

Page 42: OSvのご紹介 in Java 8 HotSpot meeting

Capstanfilebase: cloudius/osv-openjdk

cmdline: /java.so -jar /js.jar

build: make

files:

/js.jar: rhino1_7R2/js.jar

Page 43: OSvのご紹介 in Java 8 HotSpot meeting

ビルド&実行[syuu@devil rhino]$ capstan build Building rhino... Downloading cloudius/osv-openjdk/index.yaml... 149 B / 149 B [======================================================] 100.00 % Downloading cloudius/osv-openjdk/osv-openjdk.qemu.gz... 70.82 MB / 70.82 MB [================================================] 100.00 % [syuu@devil rhino]$ capstan run Created instance: rhino OSv v0.13 eth0: 192.168.122.15 Rhino 1.7 release 2 2009 03 22 js>

Page 44: OSvのご紹介 in Java 8 HotSpot meeting

コミュニティ活動

Page 45: OSvのご紹介 in Java 8 HotSpot meeting

コミュニティ活動

• 東京 - 毎月開催

• 大阪 - 予定中、参加者募集

Page 46: OSvのご紹介 in Java 8 HotSpot meeting

OSC

• 関西と関東のOSCに出展

Page 47: OSvのご紹介 in Java 8 HotSpot meeting

日本語情報

• osv-ja-wiki

• github.com/syuu1228/osv-ja-wiki

Page 48: OSvのご紹介 in Java 8 HotSpot meeting