Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」

7,124 views

Published on

高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」

Published in: Technology
  • accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes ,Download or read Ebooks here ... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M }
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • -- DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT -- ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... (Unlimited)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • 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 } ......................................................................................................................... Download Doc Ebook here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • ..............ACCESS that WEBSITE Over for All Ebooks ................ ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • ..............ACCESS that WEBSITE Over for All Ebooks ................ ......................................................................................................................... DOWNLOAD FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m6jJ5M } .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

高スループットなサーバアプリケーションの為の新しいフレームワーク
「Seastar」

  1. 1. 高スループットなサーバアプリケー ションの為の新しいフレームワーク
 「Seastar」 Takuya ASADA Cloudius Systems
  2. 2. What s this? C++14 Linuxカーネルをバイパスする
 ユーザランドネットワークスタック シェアードナッシングなプログラムデザイン 新しいプログラミングモデル
 
 Seastar + += +
  3. 3. C++14
  4. 4. C++14? • フレームワーク全体でC++14を使用
 (g++ -std=gnu++1y、clang not tested) • C++(11¦14)はCloudius Systemsの標準使用言 語なので…
 (OSvはC++11) • 他言語にはbindingで対応する事を検討
  5. 5. ユーザランドネットワー クスタック
  6. 6. なぜ必要? • 従来のネットワークスタックだと… • Zerocopyできない・やりずらい • ソケット&プロセス側とプロトコル処理側のコンテ キストが別=CPUが別の事も→キャッシュ競合 • プロトコルスタック内のロック競合 • システムコール、コンテキストスイッチのオーバヘッ ド
  7. 7. Seastarのユーザランドネット ワークスタックなら… • Zerocopy対応 • シェアードナッシングなので(※後述) • キャッシュ競合、ロック競合しない • 殆どユーザランドで処理するのでシステムコール は呼ばれない、プロトコルスタックとアプリは同 スレッドで動くためコンテキストスイッチ回数も 少ない
  8. 8. どうやってネットワークスタッ クをバイパス? • virtio(vhost-net) • DPDK • 従来のソケットAPIも使用可
 (実行時の引数でエンジンを切り替え)
  9. 9. Seastarネットワークスタック の内容 • C++14 • Sestarのフレームワーク上にフルスクラッチで 実装 • 対応プロトコル:TCPv4, UDPv4, IPv4, ARP, DHCP
 (IPv6やマイナーなトランスポートプロトコルは 非対応)
  10. 10. シェアードナッシング
  11. 11. なぜ必要? • よくあるマルチスレッドモデル • 処理の並列度に応じてスレッドを生成、共有データはロックまたは ロックフリー構造(RCUなど)で保護 • ロック競合、キャッシュ競合が発生して性能が下がることがある
 特にNUMA環境だと問題が大きい • CPU数を超えるスレッド数を持つモデルの場合はコンテキストスイッ チのオーバヘッドが発生する可能性がある • スケジューラにより空いているCPUへマイグレーションされるので キャッシュのローカリティがいつも最適に維持出来るとは限らない
  12. 12. Seastarのシェアードナッシン グモデルなら… • 単一スレッドの非同期エンジンがCPUごとに稼働 • アプリやネットワークスタックから発生した小さなタスクを Seastarでスケジューリング、非同期エンジン上で実行 • データを共有しないためロックはなく、従ってロック競合、キャッ シュ競合は起きない NUMAフレンドリー
 →より高い性能が出せる • コア間でデータを渡すためには明示的にメッセージパッシングを行 う必要がある • この構造に従ってアプリケーションを記述する必要がある
  13. 13. 例:TCPコネクションのス テート情報 • 通常のOSでは共有データ(ロックが必要) • Seastarでは共有しない • 同一コネクションのパケットがいつも同じCPU に届けば他のCPUからステート情報が見える必 要が無い • L2レイヤでフォワード先CPUを固定
  14. 14. 例:memcachedのadd • TCPコネクションの例と違ってパケットヘッダ数バ イトを見てフォワード先を固定という訳にいかない • distributed classを利用して、全コア上で別々に データストア用クラスのインスタンスを保持 • このインスタンス上でaddメソッドを実行 • キャッシュ・ロック競合は起きないがデータが重複 してもたれているのでメモリ使用量はncpus倍
  15. 15. 新しいプログラミング モデル
  16. 16. どのように並列処理をプログ ラムするべきか • Seastarが採用するモデル:
 → futures/promises/continuations(f-p-c) • リアクティブプログラミングのサブセット
  17. 17. C++11/boostのfutures/ promisesとの違い • Seastarのfutures/promisesはSeastarの実装 に特化された独自実装 • ロックしない • メモリアロケーションしない • continuationsをサポート
  18. 18. Future • Futureはまだ実行されていないかもしれない計 算の結果を表す • ネットワークから受け取る予定のデータバッファ • n分後に時間が来る予定のタイマーの発火 • (終わる予定の)ディスク書き込みの終了
  19. 19. Promise • Futureの条件が満たされた結果を提供するオブ ジェクトまたは関数
  20. 20. future/promiseの例 future<int> get(); // promises an int will be produced eventually future<> put(int) // promises to store an int void f() { get().then([] (int value) { put(value + 1).then([] { std::cout << "value stored successfullyn"; }); }); }
  21. 21. Continutions future<int> get(); // promises an int will be produced eventually future<> put(int) // promises to store an int void f() { get().then([] (int value) { return put(value + 1); }).then([] { std::cout << "value stored successfullyn"; }); } .then()による処理の継続
  22. 22. 開発状況 etc
  23. 23. 選べる環境 • Linux(実機 or 仮想化環境) • Seastar TCP on DPDK • Seastar TCP on vhost-net + tap + bridge • Linux socket • OSv(仮想化環境) • Sestar TCP on DPDK(work-in-progress) • Sestar TCP on virtio-net • Seastar TCP on Xen PV NIC • OSv socket • OSv on 実機??(in future)
  24. 24. ライセンス • Apache License
  25. 25. 実装済み • Socket I/O • Timer • File I/O • virtio-net support • DPDK support • Xen support • Basic TCP/IP stack
 (Ethernet, ARP, IPv4, TCP, UDP, DHCP)
  26. 26. パフォーマンス
  27. 27. 適用用途 • HTTPサーバ • NoSQL • クラスタファイルシステム • ???
  28. 28. URL • http://www.seastar-project.org/ • https://github.com/cloudius-systems/ seastar

×