Upgrade to Pro — share decks privately, control downloads, hide ads and more …

コンテナ技術における最新の研究動向

Avatar for Naoki MATSUMOTO Naoki MATSUMOTO
October 08, 2023
12k

 コンテナ技術における最新の研究動向

Avatar for Naoki MATSUMOTO

Naoki MATSUMOTO

October 08, 2023
Tweet

More Decks by Naoki MATSUMOTO

Transcript

  1. My Work: bypass4netns Rootless コンテナの通信性能を改善するモジュール • Seccomp Notify を用いてソケットを差し替える 2

    38.6 39.2 0.452 35.8 41.4 39.8 0 10 20 30 40 50 Container → Host Host → Container Throughput(Gbps) Rootful Rootless w/o bypass4netns Rootless w/ bypass4netns https://x.gd/SBo9t
  2. My Work: D4C (Delta updating for Container images) コンテナイメージの更新に要するデータサイズを削減する •

    差分符号(delta encoding) を用いている • 従来手法に比べて最大 95 % 削減可能 4 er er C ient Container nti e i na s otter in Container Container ro i e ontainer i a es or it r nti e ate n e ser er o nt e ta n e it i e istr e ta n e store o n oa i a e enerate e ta n es enerate ate n e it e ta er in ate n e 28.27 26.57 69.84 118.56 4.46 3.79 16.51 47.26 0.00 20.00 40.00 60.00 80.00 100.00 120.00 140.00 .1 - .2 .2 - .3 .29 - .30 .30 - .31 postgres mysql Delta Bundle Size (MB) File-by-file delta Proposed method https://x.gd/N12cA Efficient Container Image Updating in Low-bandwidth Networks with Delta Encoding
  3. My Work: D4C (Delta updating for Container images) 差分同士のマージや 差分を

    lazy に適用するファイルシステム等 5 https://x.gd/N12cA
  4. Linux コンテナとは? Linux kernel の機能を利用した軽量な実行環境分離技術 • ホストから隔離されたプロセス空間,RootFS,ネットワークを利用可能 • CPU, メモリ資源の割り当てを制御することも可能(cgroups)

    良くある例 • 実行環境をバンドルして配布する場合 6 $ docker pull hello-world ← hello-world イメージをダウンロード $ docker run hello-world ← 実行 Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon.
  5. 今回取り上げる要素 コンテナを実現するための要素は複数にわたる • 高/低レベルランタイム • コンテナネットワーク • Kubernetes などオーケストラ 今回の発表では以下の事例を取り上げる

    (ニッチ過ぎる?) • コンテナネットワークの高速化 • コンテナイメージの配布 7 コンテナ コンテナ 低レベルランタイム 高レベルランタイム レジストリ コンテナ ネットワーク コンテナ コンテナ の作成 コンテナ/ イメージの管理
  6. コンテナ間のネットワークとは? コンテナ間や他のホストとの通信には適切なネットワークが必要 → より高速なネットワーク, 柔軟な通信の制御が求められる ※ 一般的な Docker の環境では Linux

    bridge, iptables を用いている 8 プロセス TCP/IP スタック プロセス TCP/IP スタック Linux Bridge コンテナ ホスト A Kernel iptables プロセス ホスト B veth
  7. 何が問題? Network namespace 分離によるオーバーヘッド • ネイティブ環境より遅い = アプリケーションの性能劣化 • CPU

    資源をより多く消費する = アプリケーションに割ける資源が減る → サービス品質の劣化, 必要な計算資源の増加(コスト増) 9 ホスト アプリケーション コンテナランタイム ネットワーク Linux kernel プロセス TCP/IP スタック プロセス TCP/IP スタック Linux Bridge コンテナ Kernel iptables プロセス veth
  8. AF_GRAFT コンテナとホストの TCP/IP スタックを通るのは非効率的 → コンテナ側の TCP/IP スタックをバイパスすればよい 特殊なソケット(AF_GRAFT) によりホスト側の

    TCP/IP スタックを利用する 👍ホストと同等なネットワーク性能 👎ソケットレイヤ以下を扱うアプリケーション(NFV 等)では利用できない 10 Grafting sockets for fast container networking (Ryo Nakamura et al., 2018)
  9. NetKernel 同じホスト上の複数 VM 内でそれぞれ TCP/IP の処理を行うのは無駄 → TCP/IP の処理を一手に引き受けるモジュールを設置する 👍クラウド等のインフラ提供者が最適化された

    TCP/IP を提供できる 👎netfilter など既存の vNIC を前提とした仕組みが利用できない 11 NetKernel: Making Network Stack Part of the Virtualized Infrastructure (Zhixiong Niu et al., 2020)
  10. FreeFlow コンテナでも RDMA を柔軟に利用したい ※ A e ote ire t

    e or A ess : C を介さずメモリへのアクセスが出来る。 CPUを消費せずに通信で非常に高速 → RDMA を中継するソフトウェアを配置し接続(QP)を管理 13 FreeFlow: Software-based Virtual RDMA Networking for Containerized Clouds (Daehyeok Kim et al., 2019)
  11. ここまでのまとめ Linux 標準のネットワーク • これまでの netfilter を始めとする既存資産を活用しやすい • 性能はホストネイティブに比べると劣る 研究の動き

    = より高速に、より柔軟に • 無駄な部分をそぎ落としてできる限り高速化 • クラウド基盤との組み合わせを前提とした最適化 • 既存資源にとらわれない新たな手法の提案 (RDMA 等) 14
  12. コンテナイメージとは? 大雑把にはコンテナのファイル群を固めたもの • レイヤ構造を持ち、Dockerfile の各行が対応している • 同じレイヤはイメージ間で共有できる e.g., ubuntu, debian

    等 OCI (Open Container Initiative) で Image Format Spec として規格化 • Manifest: イメージに含めるレイヤの mediaType や digest を保持するファイル • Layer: ファイルシステムのバンドル, tar で固めて gz や zstd で圧縮する → docker pull 等を利用してローカルにダウンロード・展開(pull)し利用 15 d8d33f98a76eca37dad5cd1c8838d02 cfaed61837f4f3c4937a36cdc29aa202f c1394d6d622df363279a1e3d54401fd5 be59819c9aeca54a7848df216f708ea9
  13. 何が問題? ローカルにコンテナイメージが無い場合、起動前に pull をする → pull に要する時間が長いと処理時間が無駄になる, 更新の度に待つ必要がある コンテナイメージは意外と大きい (cuda:12.2.0-devel-ubuntu20.04

    で3.27GB) • 特にIoT デバイスで使う場合、ネットワーク環境や処理性能の点で大きな問題となる 16 “IMAGE PULLING” PULLING! https://xkcd.com/303/ を改変
  14. Lazy-pulling コンテナは出来るだけ速く起動したい(特に Serverless) → コンテナイメージの pull に時間がかかる(起動時間の 76% を占めることも) Lazy-pulling:

    起動に必要なファイルだけ pull しコンテナを起動する • 共有ストレージを利用した Slacker (Tyler Harter et al., 2016) が最初の取り組み • Cider, Wharf, CernVM-FS 等も同様の仕組み 17 a Container Lazy-pulling plugin Container Storage Container 2. Request files to start the container 3.Files or chunks 5. Request a file when read Client 4. A container starts 6.Files or chunks 1. Request to start a container
  15. estargz Lazy-pulling を既存のイメージに互換性がある形で実装 • tar.gz で圧縮されたレイヤから特定のファイルのみ読み出せるように stargz を利用 • stargz:

    Gzip(tar(fileA) + tar(fileB)) を Gzip(tar(fileA)) + Gzip(tar(fileB)) containerd, BuildKit で公式にサポートされた実用的な実装 18 https://github.com/containerd/stargz-snapshotter/ https://www.slideshare.net/KoheiTokunaga/estargzlazy-pulling より
  16. DADI Alibaba で使われているコンテナイメージ配布手法(1万のコンテナを 1000 ホストに4秒で起動) ブロックデバイスベースのレイヤ+P2Pでクラスタ上に高速に配布 • Overlay Block Device:

    OverlayFS のようにレイヤの積み重ねを実現する • ZFile: チャンク単位でランダムアクセス可能な圧縮形式(dict zip のようなもの) 19 DADI: Block-Level Image Service for Agile and Elastic Application Deployment (Hubia Li et al., 2020)
  17. AWS Lambda の例 AWS Lambda で使われているコンテナイメージ配布手法(毎秒1万5千のコンテナを起動) 複数階層のキャッシュ機構と組み合わせたコンテナイメージ配布 • tail-latency を減らすために

    Erasure Coding (4 of 5) を採用 • キャッシュ戦略は LRU-k (過去k番目のタイムスタンプで最も古いエントリを evict) 20 On-demand Container Loading in AWS Lambda (Marc Brooker et al., 2023)
  18. ここまでのまとめ イメージ Pull 高速化はサービス品質を高める上で重要 (特に Serverless) • Lazy-pulling, P2P(Alibaba), キャッシュ(AWS)

    による高速化 • 必要ないファイルを消す docker-slim なども活用されている ※ イメージの用途によっては活用が困難な場合もある 結局はファイル (blob) をいかに高速に読み込むか?という問題になる • ファイルシステムやP2P の分野で研究されてきた内容 • 読み出すファイルや順序に一定の傾向がある → 何かしらの工夫ができる • クラウドではなく IoT デバイスでコンテナを動かす場合はどうだろうか? → 処理能力, メモリが小さい, 帯域が制限される, ネットワークが不安定等 21
  19. 他要素の様子 • Sky Computing • Cloud, Edge, Fog の次のトレンド(になりたがっている) •

    複数のクラウドサービスをシームレスに使い分ける • ストレージは クラウド A, GPU はクラウド B といった感じ • 色々なクラウドで同じ環境を立てる = コンテナの出番 • N I ‘ においても SkyPilot, SkyPlane が発表されている • Real time container • 最悪実行時間の保証 = データ処理で極端にレスポンスが遅くなる場合を避ける • Hierarchical Resource Orchestration Framework for Real-Time Containers Vá a tr ár et al., 2023, ACM Trans on Embedded Computing Systems) • IoT 分野など一定の品質が要求される分野における活用が見込まれる 22
  20. まとめ • コンテナ技術は楽しいこと(低レイヤ成分多め)がたくさん • コンテナ自体に限らず周辺の触れる技術が多い • カーネル, ファイルシステム, P2P, 圧縮アルゴリズム,

    差分符号等 • 研究としても論文を書ける • クラウドベンダと真っ向から勝負しない選択もある • 論文を書くための実装≠実用的な実装 なことがあるため注意 • 今後のトレンドは Edge や Cloud 単体ではなく、それらの連携? • VM, コンテナ, WASM の使い分けとか • より多くのレイヤに関する知識・経験が要求されるようになる? 23