Docker_Meetup_Tokyo_23_gVisor_network_traffic_benchmark

 Docker_Meetup_Tokyo_23_gVisor_network_traffic_benchmark

D1b28ca276bee52e56ba11785f70d2d6?s=128

makocchi

May 15, 2018
Tweet

Transcript

  1. Docker Meetup Tokyo #23 / makocchi Docker Meetup Tokyo #23

    LT: gVisor の Network Traffic の性能を比較してみた makocchi
  2. 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
  3. 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
  4. Docker Meetup Tokyo #23 / makocchi limitation of gVisor Docker

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

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

  7. Docker Meetup Tokyo #23 / makocchi gVisor’s Network Performance 通常の

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

  9. 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 されてないと実行できない
  10. Docker Meetup Tokyo #23 / makocchi Wrap-up ・gVisor の性能は Sentry

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

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