O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
SeaStar
高スループットなサーバアプリケーションの為の新しいフレームワーク
@syuu1228
Cloudius Systems
• イスラエルのスタートアップ企業
• Office: Herzliya, Israel
• Linux KVMを開発したQumranet(RedHatに買収)の元メンバーを中心とする
• CEO : Dor ...
Our Team
SEASTARとは
SeaStarとは
• http://www.seastar-project.org/
• 高スループットなサーバアプリケーションを記述するための新しいフレームワーク
• 物理マシン/VM上で動作、Linux/OSvに対応
• シェアードナッシ...
今日のプログラミングモデルの問題点
• CPUのクロック数はあまり向上しない
• コア数は増えていくがソフトウェアで性能を出し切る事は難しい
• アプリがスケールしない
• ロックの使用は例え競合がなくてもコストが大きい
• あるコアでアロケー...
リニアにスケールするSeaStarフレームワーク
• SeaStarのエンジンを各コアで実行
• データやステートはコア間で共有されず、別々に動作
• シェアードナッシング方式
• 既存の分散型サーバアプリのモデルに適合
• カーネルをバイパス...
Before
After(※イメージです)
SEASTARの性能
パフォーマンス(httpd)
7M IOPS
パフォーマンス(memcached)
計測結果
• 20コア超までリニアにスケール
• 250,000トランザクション/コア(memcached)
• 計測値がクライアントによって律速されており、計測方法の改善を行っている
• より細かいベンチマークやベンチマーク結果に基づくチュー...
SEASTARのプログラミングモデル
SeaStarのプログラミングモデル
• C++14
• Future/Promise/Continuationモデルに基づく非同期API
• リアクティブプログラミングモデルのサブセット
他の言語等で提供されているPromisesと大体同じ
JavaScriptのPromisesとか
function asyncFunction() {
return new Promise(function (resolve, reject) ...
C++11/boostのfutures/promisesとの違い
• SeaStarの実装に特化された独自実装
• ロックしない
• メモリアロケーションしない
• continuationsをサポート
簡単なfuture/promiseの例
future<int> get(); // 最終的にintが生成される事をpromiseする
future<> put(int) // intを入力する事をpromiseする
void f() {
get...
Chaining
future<int> get();
future<> put(int);
void f() {
get().then([] (int value) {
return put(value + 1);
}).then([] { ...
Seastarのスケジューリング機構(タスクの実行)
• future/promiseで書かれたラムダ式は、実行される条件とペアにされてスケジュー
ラのランキューに登録される
• 非同期処理エンジンは条件が実行可能になったものから順に実行してい...
Future/Promise以外のSeaStarプログラミングルール
• アプリケーションはブロックしないように書かなければならない
• 非同期IOの完了待ちにはFuture/Promiseが使える
• ファイルIOなどにもラッパーAPIが提供...
提供されるAPI
• Future/Promise/Continuation
• ネットワークIO
• ファイルIO
• タイマー
• HTTP
• JSON(swagger)
• RPC
• POSIX APIラッパー
• collectdク...
サンプルアプリ
• HTTPD(swagger対応)
• memcached
• “seawreck” HTTP benchmark tool
SEASTARとユーザランドネットワークスタック
カーネルバイパスの必要性
• 従来のネットワークスタック(ソケットAPI、カーネルネットワーク
スタック)だと…
• Zerocopyできない・やりずらい
• パケットごとにコピーが発生→大きなオーバヘッドに
• ソケット&プロセス側とプロトコ...
DPDK
• カーネルをバイパスして高速に通信を行うためのフレーム
ワーク
• ユーザランドドライバから直接ハードウェアアクセス
• ドライバでのパケット受信からアプリケーション処理まで同一
プロセスの同一コンテキストで実行
• ゼロコピー
•...
SeaStarネットワークスタック
• ネットワークスタックを提供
• SeaStarのシェアードナッシングモデルで記述されており高性
能
• ソケットAPIと同等のレベルに抽象化されたAPIを提供
• ゼロコピー可能なAPIを提供
• ソケッ...
余談:NAT adapter for SeaStar
• DPDKを有効化するとNICのドライバがアンロードされてネットワークが使えなくなる
• NICが1つの環境だとすごく不便
• 性能が多少落ちても元通りにネットワークが使いたい、SSHとか...
要件
• IPはSeaStarと共有したい
• MACアドレスはSeaStarと共有したい
• Linuxネットワークスタックで使用するTCP/UDPポート番号がSeaStarアプリと競合したらNATテーブルで
書き換えて対応したい
Process(User)
アプリ 固有処理
パケッ トパケッ トパケッ ト
パケッ ト 受信
処理するパケッ ト が無く なっ たら
ポーリ ング
パケッ ト が無く なる
まで繰り 返し
プロト コ ル処理
Process(User)
Pr...
SeaStar Hands-on
• 2015/05/24(日) Seastar・OSv Hands-on #1
• http://connpass.com/event/15004/
Thank you
http://www.seastar-project.org/
@CloudiusSystems
Próximos SlideShares
Carregando em…5
×

Seastar in 歌舞伎座.tech#8「C++初心者会」

5.938 visualizações

Publicada em

Seastar

Publicada em: Tecnologia
  • If you want to download or read this book, copy link or url below in the New tab ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Download or read that Ebooks here ... ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • DOWNLOAD THI5 BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download Full EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... Download doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

Seastar in 歌舞伎座.tech#8「C++初心者会」

  1. 1. SeaStar 高スループットなサーバアプリケーションの為の新しいフレームワーク @syuu1228
  2. 2. Cloudius Systems • イスラエルのスタートアップ企業 • Office: Herzliya, Israel • Linux KVMを開発したQumranet(RedHatに買収)の元メンバーを中心とする • CEO : Dor Laor, CTO : Avi Kivity • 半数の開発者がイスラエル以外の国からリモート開発で参加 • 18名・9ヶ国(イスラエル在住は9名) • IaaS環境に特化したOS「OSv」を開発 • 2015/02のLinux Foundation Collaboration Summitにて「SeaStar」を発表
  3. 3. Our Team
  4. 4. SEASTARとは
  5. 5. SeaStarとは • http://www.seastar-project.org/ • 高スループットなサーバアプリケーションを記述するための新しいフレームワーク • 物理マシン/VM上で動作、Linux/OSvに対応 • シェアードナッシング、完全非同期モデル • オープンソース(Apache License) • 適用範囲の例:データベース、分散ファイルシステム、キャッシュ、プロクシなど
  6. 6. 今日のプログラミングモデルの問題点 • CPUのクロック数はあまり向上しない • コア数は増えていくがソフトウェアで性能を出し切る事は難しい • アプリがスケールしない • ロックの使用は例え競合がなくてもコストが大きい • あるコアでアロケートされたデータは別のコアで使用されたりコピーされたりする • ソフトウェアが最近のハードウェアに最適化しきれていない • SSD, >10GbE Ether, NUMA, etc Kernel Application TCP/IPScheduler queuequeuequeuequeuequeue threads NIC Queues Kernel Memory
  7. 7. リニアにスケールするSeaStarフレームワーク • SeaStarのエンジンを各コアで実行 • データやステートはコア間で共有されず、別々に動作 • シェアードナッシング方式 • 既存の分散型サーバアプリのモデルに適合 • カーネルをバイパスして自前のネットワークスタックを使用 • ゼロコピーに対応 • ファイル/ブロックIOはカーネルを使用 • no thread, no context switch, no locks • 代わりに非同期にラムダ式の実行を行う Application TCP/IP Task Scheduler queuequeuequeuequeuequeuesmp queue NIC Queue DPDK Kernel (isn’t involved) Userspace Application TCP/IP Task Scheduler queuequeuequeuequeuequeuesmp queue NIC Queue DPDK Kernel (isn’t involved) Userspace Application TCP/IP Task Scheduler queuequeuequeuequeuequeuesmp queue NIC Queue DPDK Kernel (isn’t involved) Userspace Application TCP/IP Task Scheduler queuequeuequeuequeuequeuesmp queue NIC Queue DPDK Kernel (isn’t involved) Userspace
  8. 8. Before
  9. 9. After(※イメージです)
  10. 10. SEASTARの性能
  11. 11. パフォーマンス(httpd) 7M IOPS
  12. 12. パフォーマンス(memcached)
  13. 13. 計測結果 • 20コア超までリニアにスケール • 250,000トランザクション/コア(memcached) • 計測値がクライアントによって律速されており、計測方法の改善を行っている • より細かいベンチマークやベンチマーク結果に基づくチューニングは後日実施予定
  14. 14. SEASTARのプログラミングモデル
  15. 15. SeaStarのプログラミングモデル • C++14 • Future/Promise/Continuationモデルに基づく非同期API • リアクティブプログラミングモデルのサブセット
  16. 16. 他の言語等で提供されているPromisesと大体同じ JavaScriptのPromisesとか function asyncFunction() { return new Promise(function (resolve, reject) { setTimeout(function () { resolve(‘Async Hello world’); }, 16); }); } asyncFunction().then(function (value) { console.log(value); // => ‘Async Hello world’ }).catch(function (error) { console.log(error); }); 「JavaScript Promiseの本」より
  17. 17. C++11/boostのfutures/promisesとの違い • SeaStarの実装に特化された独自実装 • ロックしない • メモリアロケーションしない • continuationsをサポート
  18. 18. 簡単なfuture/promiseの例 future<int> get(); // 最終的にintが生成される事をpromiseする future<> put(int) // intを入力する事をpromiseする void f() { get().then([] (int value) { // get()が実行完了した後の処理 put(value + 1).then([] { // put(int)が完了した後の処理 std::cout << “value stored successfullyn”; }); }); }
  19. 19. Chaining future<int> get(); future<> put(int); void f() { get().then([] (int value) { return put(value + 1); }).then([] { // get().then() が終了した後の処理 std::cout << "value stored successfullyn"; }); }
  20. 20. Seastarのスケジューリング機構(タスクの実行) • future/promiseで書かれたラムダ式は、実行される条件とペアにされてスケジュー ラのランキューに登録される • 非同期処理エンジンは条件が実行可能になったものから順に実行していく (条件以外の実行順序は保証されていない) • ランキューもシェアードナッシングなのでCPU間でジョブはマイグレーションされな い Promise Task Promise Task Promise Task Promise Task CPU Promise Task Promise Task Promise Task Promise Task CPU Promise Task Promise Task Promise Task Promise Task CPU Promise Task Promise Task Promise Task Promise Task CPU Promise Task Promise Task Promise Task Promise Task CPU Promise is a pointer to eventually computed value Task is a pointer to a lambda function
  21. 21. Future/Promise以外のSeaStarプログラミングルール • アプリケーションはブロックしないように書かなければならない • 非同期IOの完了待ちにはFuture/Promiseが使える • ファイルIOなどにもラッパーAPIが提供されている • ポインタはスマートポインタを含めてなるべく使わない • コピーがふさわしくない時はstd::move() • CPU間での共有データ・ロックは使わない、代わりにCPU間で非同期通信を行う
  22. 22. 提供されるAPI • Future/Promise/Continuation • ネットワークIO • ファイルIO • タイマー • HTTP • JSON(swagger) • RPC • POSIX APIラッパー • collectdクライアント
  23. 23. サンプルアプリ • HTTPD(swagger対応) • memcached • “seawreck” HTTP benchmark tool
  24. 24. SEASTARとユーザランドネットワークスタック
  25. 25. カーネルバイパスの必要性 • 従来のネットワークスタック(ソケットAPI、カーネルネットワーク スタック)だと… • Zerocopyできない・やりずらい • パケットごとにコピーが発生→大きなオーバヘッドに • ソケット&プロセス側とプロトコル処理側のコンテキストが別 • CPUが別の事も多い • キャッシュ競合 • レイテンシが増大 • プロトコルスタック内のロック競合 • システムコール、コンテキストスイッチのオーバヘッド Process(User) Process(Kernel) HW Intr Handler SW Intr Handler 割り 込みハンド ラ プロト コ ル処理 ソ ケッ ト 受信処理 ユーザ プログラム user b uffe r socket queue システムコ ール プロセス起床 ハード ウェ ア割り 込み ユーザ空間へコ ピー パケッ トパケッ トパケッ ト ソ フ ト ウェ ア割り 込みスケジュ ール パケッ ト が無く なる まで繰り 返し パケッ ト 受信
  26. 26. DPDK • カーネルをバイパスして高速に通信を行うためのフレーム ワーク • ユーザランドドライバから直接ハードウェアアクセス • ドライバでのパケット受信からアプリケーション処理まで同一 プロセスの同一コンテキストで実行 • ゼロコピー • 但し、ネットワークスタックは持たない Process(User) アプリ 固有処理 パケッ トパケッ トパケッ ト パケッ ト 受信 処理するパケッ ト が無く なっ たら ポーリ ング パケッ ト が無く なる まで繰り 返し
  27. 27. SeaStarネットワークスタック • ネットワークスタックを提供 • SeaStarのシェアードナッシングモデルで記述されており高性 能 • ソケットAPIと同等のレベルに抽象化されたAPIを提供 • ゼロコピー可能なAPIを提供 • ソケットAPI非互換、独自API Process(User) アプリ 固有処理 パケッ トパケッ トパケッ ト パケッ ト 受信 処理するパケッ ト が無く なっ たら ポーリ ング パケッ ト が無く なる まで繰り 返し プロト コ ル処理
  28. 28. 余談:NAT adapter for SeaStar • DPDKを有効化するとNICのドライバがアンロードされてネットワークが使えなくなる • NICが1つの環境だとすごく不便 • 性能が多少落ちても元通りにネットワークが使いたい、SSHとかしたい • TAPデバイスを経由してLinuxカーネルのネットワークスタックとパケットを送受信しよう!
  29. 29. 要件 • IPはSeaStarと共有したい • MACアドレスはSeaStarと共有したい • Linuxネットワークスタックで使用するTCP/UDPポート番号がSeaStarアプリと競合したらNATテーブルで 書き換えて対応したい
  30. 30. Process(User) アプリ 固有処理 パケッ トパケッ トパケッ ト パケッ ト 受信 処理するパケッ ト が無く なっ たら ポーリ ング パケッ ト が無く なる まで繰り 返し プロト コ ル処理 Process(User) Process(Kernel) HW Intr Handler SW Intr Handler 割り 込みハンド ラ プロト コ ル処理 ソ ケッ ト 受信処理 SSHDと かuser b uffe r socket queue システムコ ール プロセス起床 ハード ウェ ア割り 込み ユーザ空間へコ ピー パケッ トパケッ トパケッ ト ソ フ ト ウェ ア割り 込みスケジュ ール パケッ ト が無く なる まで繰り 返し パケッ ト 受信 割り 込みハンド ラ TAP SeaStarアプリ に関係ない パケッ ト をTAPに転送
  31. 31. SeaStar Hands-on • 2015/05/24(日) Seastar・OSv Hands-on #1 • http://connpass.com/event/15004/
  32. 32. Thank you http://www.seastar-project.org/ @CloudiusSystems

×