Slide 1

Slide 1 text

Docker Meetup Tokyo #23 / makocchi Docker Meetup Tokyo #23 LT: gVisor の Network Traffic の性能を比較してみた makocchi

Slide 2

Slide 2 text

Docker Meetup Tokyo #23 / makocchi about gVisor Google が公開した OSS のコンテナ runtime Application 側の system call を gVisor が hook し、実行する (Host の Kernel には直接渡されな い) gVisor の中身は 「Sentry」と「Gofer」という 2 つの process に分かれている https://github.com/google/gvisor/blob/master/README.md

Slide 3

Slide 3 text

Docker Meetup Tokyo #23 / makocchi install gVisor gVisor の導入の仕方は簡単 ・「bazel build runsc」で binary を作成することができる ・が、最近は nightly build で手に入るようになった   https://storage.googleapis.com/gvisor/releases/nightly/latest/runsc ・Docker で動かす場合は runtime を追加してあげれば OK  追加したら run 時に --runtime=runsc で gVisor を使うことができる   docker run --runtime=runsc hello-world

Slide 4

Slide 4 text

Docker Meetup Tokyo #23 / makocchi limitation of gVisor Docker で動かすなら 17.09 以上が必要 まだ Pod の中に 1 つのコンテナしかサポートしていない まだ一部の system call (ioctl(FIOASYNC)) が動かない GCP 上では GAE の node.js と java8 で動いているらしい EXPERIM ENTAL

Slide 5

Slide 5 text

Docker Meetup Tokyo #23 / makocchi gVisor’s Network Performance Network の性能を検証するにあたり・・・  ・iperf3 を使ってコンテナの中と外の通信トラフィックを計測   (今回はコンテナ同士のトラフィックではなく、コンテナと VM 間)  ・比較のために VM 同士及び runc(docker-runc) も計測   (実は kata(cc)-runtime も検証したかったが、iperf3 が動かなかった)

Slide 6

Slide 6 text

Docker Meetup Tokyo #23 / makocchi gVisor’s Network Performance

Slide 7

Slide 7 text

Docker Meetup Tokyo #23 / makocchi gVisor’s Network Performance 通常の gVisor(runsc) だとかなり Network 性能が落ちる  ・これは Sentry が packet を処理するからそこがネックになっていると   思われる  ・独自の network stack(user space) が実装されていて   Host kernel とは隔離されている  ・隔離性を犠牲にすれば --network=host を使うことで性能を出すことが可能

Slide 8

Slide 8 text

Docker Meetup Tokyo #23 / makocchi gVisor’s Network Performance

Slide 9

Slide 9 text

Docker Meetup Tokyo #23 / makocchi gVisor’s Network Performance 稼働させる時に 2 つの platform を指定することができる --platform=ptrace (default) ・アプリケーションの system call が SYSEMU で実行される  ptrace() が実行できる環境であれば gVisor(runsc) を実行することができる --platform=kvm (experimental) ・仮想化支援(Intel-VT とか)を使うことができる ・kvm module が load されてないと実行できない

Slide 10

Slide 10 text

Docker Meetup Tokyo #23 / makocchi Wrap-up ・gVisor の性能は Sentry の出来次第 ・Network はかなり性能が落ちるが、--network=host を設定することで  ある程度はパフォーマンスを出すことができる ・実は Disk IO も計測したが、やはり他の runtime に比べると性能が劣る ・ptrace と kvm という2つの実行の仕方がある  仮想化支援を使える kvm の方が性能が出そうだが、検証した環境では  ptrace の方が性能が良かった (まぁ platform=kvm はまだ experimental ) ・まだ完成度は低いので今後に期待

Slide 11

Slide 11 text

Docker Meetup Tokyo #23 / makocchi Docker Meetup Tokyo #23 LT: gVisor の Network Traffic の性能を比較してみた makocchi ご清聴ありがとうございました!