Lock in $30 Savings on PRO—Offer Ends Soon! ⏳

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

松本直樹
October 08, 2023
11k

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

松本直樹

October 08, 2023
Tweet

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