OSvのご紹介 in 
Java 8 HotSpot meeting
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

OSvのご紹介 in 
Java 8 HotSpot meeting

on

  • 161 views

OSvのご紹介 in 
Java 8 HotSpot meeting

OSvのご紹介 in 
Java 8 HotSpot meeting

Statistics

Views

Total Views
161
Views on SlideShare
153
Embed Views
8

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 8

https://twitter.com 8

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

CC Attribution License

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

OSvのご紹介 in 
Java 8 HotSpot meeting Presentation Transcript

  • 1. OSvのご紹介 in Java 8 HotSpot meeting Takuya ASADA <syuu@cloudius-systems> Cloudius Systems
  • 2. 自己紹介 • @syuu1228 on Twitter • Software Engineer at Cloudius Systems • FreeBSD developer (bhyve, network stack..) • カーネル/VM探検隊 初代主催者 • Software Designで「ハイパーバイザの作り方」 を連載中
  • 3. Cloudius Systemsについて • OSvの開発母体(フルタイムデベロッパで開発) • Office:Herzliya, Israel • CTO : Avi Kivity → Linux KVMのパパ • 他の開発者:元RedHat(KVM), Parallels(Virtuozzo, OpenVZ) etc.. • イスラエルの主な人物は元Qumranet(RedHatに買収) • 半数の開発者がイスラエル以外の国からリモート開発で参加 • 18名・9ヶ国(イスラエル在住は9名)
  • 4. OSvの概要
  • 5. 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.
  • 6. 1つのアプリだけ 実行したいユースケース Javaアプリ JVM ゲストOS ハイパーバイザ ホストOS デカいゲストOSは 余計なオーバヘッドでは? Javaアプリ JVM ハイパーバイザ ホストOS
  • 7. 解決策:ライブラリOS Javaアプリ JVM OSv ハイパーバイザ ホストOS 出来るだけ改造しない ここで環境の違いを吸収
  • 8. OSv=ライブラリOS • OSを利用するために呼び出すLinux APIをライブラリのような 形式で提供 (glibcへの限定的な互換性を提供) • 言語ランタイムはなるべく改造しないで移植可能にする (OpenJDK/Linux x86_64バイナリが動く) • API提供に必要な機能は実装 (ファイルシステム=ZFS、TCP/IP、スレッド&SMP) • フルサイズのOSとは構造の異なる薄いレイヤ (単一プロセス、単一メモリ空間、全てカーネルモード)
  • 9. 動作環境 • ハイパーバイザ • KVM • Xen • VMware • VirtualBox • IaaS • Amazon EC2 • Google Compute Engine
  • 10. 対応アプリ (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
  • 11. 対応アプリ (Java以外) • Ruby • WEBRick • Ruby on Rails • Publify(Railsベースのブログエンジン) • mruby • lua • Node.js
  • 12. 何が動くの? (ネイティブアプリ) • haproxy • memcached • MySQL • LevelDB • SQLite • twemproxy
  • 13. フットプリント (ディスクイメージサイズ) • mruby = 14MB • Ruby = 48MB • OpenJDK = 77MB
  • 14. デモ
  • 15. OSvのフットプリント と性能
  • 16. フットプリント (最低メモリ使用量) • mruby = 65MB • Ruby = 75MB • OpenJDK = 110MB
  • 17. ブート時間 • 1秒(DHCP、ZFS初期化込み)
  • 18. SPECjbb2005(Java) • 120% faster than Linux guest 41000 30750 20500 10250 0 OSv Fedora score
  • 19. iperf(network) • 186% faster than Linux guest 21 15.75 10.5 5.25 0 OSv Fedora Gbps
  • 20. fsmark • 142% faster than Linux guest 220 165 110 55 0 OSv(ZFS) Linux(ZFS) Linux(ext4) files/sec
  • 21. memcached • ※ネットワークスタッ クを迂回する独自版 memcachedでの比較 • 280% faster than Linux guest 8000 6000 4000 2000 0 OSv Fedora score
  • 22. OSvの周辺機能
  • 23. OSvをプログラムから操作 「REST API」 • REST API経由でOSvに任意の操作を実行 • 従来のOS:コマンド実行やファイルの編集で設 定を変更 (手動が基本、シェルスクリプトなどで自動化) OSv:APIで設定を変更 (自動化が基本、CLIはオプション)
  • 24. OSvを対話的に操作 「Lua CLI」 • 簡易的なシェル機能を実現 • 全ての機能をREST API上に実装 • デフォルトではOSv上で実行されるが、リモー トホストで実行してSSH代わりに使用可能
  • 25. 初期化スクリプトを サーバからダウンロード&実行 「Cloud Init」 • ネットワーク上からYAMLをダウンロードしてき て、ダウンロードしたファイルに記述されてい るREST APIを順次実行
  • 26. OSv GUI • WebベースのGUI • OSの負荷、JVMのリソース情報、アプリの statisticsなどの統計情報を表示 • Virtual applianceとしてOSvを使うことを前 提にCassandra, memcached, Redisなどの アプリの情報を表示する機能を実装中
  • 27. a
  • 28. 簡易デプロイツール 「Capstan」 • 色々なアプリがインストールされたOSvのVMイ メージを、コンパイルなどの難しい作業なしに手 軽に実行するツール • Linux, Mac, Windowsで動作 • VirtualBox, VMware, KVMなどに対応
  • 29. クラウドへのデプロイ • Amazon EC2 • AMIを配布中 • Google Compute Engine • capstanからアップロード可能
  • 30. OSvにおけるJavaの拡 張
  • 31. JMX on REST API • JMXのMBeanへREST API経由でアクセスが出 来る • Javaアプリケーションの内部情報を取得・変更 することが可能 • JMX APIとJolokiaベースの2つの実装が存在
  • 32. JVMマルチテナント • 1つのVMでは通常1つのmainメソッドを含むプログラム しか実行出来ない • OSvは単一プロセスなので1つのJavaアプリしか起動出 来ない • マルチテナントをサポートするクラスローダを独自に実 装し、複数のmainメソッドを含むプログラム群をロード &実行するような仕組みを実装 • JVM自体のコードは無変更
  • 33. JVM ballooning • OS起動時にほぼ全てのメモリをJVMヒープに割り当て • OS側のメモリが足りなくなってきたらOSへコールバッ クAPIを使って通知 Java側でByteArrayを作成し(GC対策)この領域をOS 側へ返還 • OSが使わないメモリ領域は引き続きJava側が使用出来 る • JVM自体のコードは無変更
  • 34. OSv API • ELFバイナリのロード&実行 • リブート • ARPテーブル、ルーティングテーブルの編集 • IPアドレスの設定、DHCPクライアントの制御 • JVM Balloon API • カーネルトレースポイント API
  • 35. Javaアプリの移植
  • 36. Rhinoの例 • Makefileでzipをwget、unzip • Capstanfileでjs.jarをOSvのFSへ展開
  • 37. Makefile .PHONY: all all: wget ftp://ftp.mozilla.org/pub/mozilla.org/ js/rhino1_7R2.zip unzip -x rhino1_7R2.zip
  • 38. Capstanfile base: cloudius/osv-openjdk cmdline: /java.so -jar /js.jar build: make files: /js.jar: rhino1_7R2/js.jar
  • 39. ビルド&実行 [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>
  • 40. コミュニティ活動
  • 41. コミュニティ活動 • 東京 - 毎月開催 • 大阪 - 予定中、参加者募 集
  • 42. OSC • 関西と関東のOSCに出 展
  • 43. 日本語情報 • osv-ja-wiki • github.com/syuu1228/osv-ja-wiki