Slide 1

Slide 1 text

Copyright 2014 ASCADE, Inc. Performance Evaluation of Docker 那須野 淳 ASCADE, Inc. Docker Meetup Tokyo #3 2014-07-04

Slide 2

Slide 2 text

Copyright 2014 ASCADE, Inc. 自己紹介 名前: 那須野 淳 [email protected] 職場: 株式会社アスケイド 経緯: 国立情報学研究所(NII) 横山教授らが進める 「アカデミックインタークラウド」実現に 向けたプロジェクトに係わり、技術検証・ プロトタイプ開発を行っています。 Dockerはクラウド基盤連携のための主要な 要素技術の一つ。 基礎性能数値を把握し、アプリケーションの 性能予測に役立てることが目的。 2

Slide 3

Slide 3 text

Copyright 2014 ASCADE, Inc. 性能測定の観点  Docker のオーバーヘッド測定 • 物理サーバ(ベアメタルマシン)を そのまま使う場合と比べて、遅くなるのか? • VM上に配備した場合はどうか? • その他 − コンテナ / daemon オプション (-c, -m, -v, --privileged, -s, ...) − 並列コンテナのスケーラビリティ − 入れ子構造 "Docker-in-Docker" − 仮想ネットワーク機能 (Linux bridge + vEth + NAT)  VM方式との性能比較 • 仮想化方式として、VM(Hypervisor) と Docker どちらを選択したらよいか? 3

Slide 4

Slide 4 text

Copyright 2014 ASCADE, Inc. 測定環境・ベンチマークツール ハードウェア・スペック ソフトウェア 4 OS Ubuntu 13.10 (64bit) Kernel 3.11.0-19-generic Docker 0.10.0 OpenStack 2013.2 (Havana) UnixBench 5.1.3 Bonnie++ 1.97.1 Intel Xeon E5-2670 2.60GHz 32cpu (2socket x 8core x 2thread) RAM 96 GB

Slide 5

Slide 5 text

Copyright 2014 ASCADE, Inc. UnixBenchスコア (on Baremetal) 5 16並列の場合、 ・Execl Throughput ・Shell Scripts の劣化が目立つ。 AUFS 管理下の /lib/* 共有ライブラリへの Read Overhead が 大きく影響する。

Slide 6

Slide 6 text

Copyright 2014 ASCADE, Inc. Storage Driver を Device Mapperへ 6 ・Execl Throughput ・Shell Scripts の性能は大幅に改善

Slide 7

Slide 7 text

Copyright 2014 ASCADE, Inc. Storage Driver の指定方法 Docker daemon 起動オプション: -s devicemapper または /etc/default/docker.io に書く(※ubuntuの場合) DOCKER_OPTS="-s devicemapper" docker info コマンドで確認 7 変更すると、既存の イメージは管理位置が 変わり、docker images コマンドで見えなく なります。 ~# docker info Containers: 1 Images: 39 Storage Driver: devicemapper Pool Name: docker-8:5-61931522-pool Data file: /mnt/docker/devicemapper/devicemapper/data Metadata file: /mnt/docker/devicemapper/devicemapper/metadata Data Space Used: 3274.9 Mb Data Space Total: 102400.0 Mb Metadata Space Used: 4.3 Mb Metadata Space Total: 2048.0 Mb Execution Driver: native-0.1

Slide 8

Slide 8 text

Copyright 2014 ASCADE, Inc. 指定しない場合の優先順位は? (docker-1.0.1) daemon/graphdriver/driver.go 8 v1.1.0 で変更されていない ことを確認済み。

Slide 9

Slide 9 text

Copyright 2014 ASCADE, Inc. UnixBenchスコア (on VM) 9 on Baremetal の場合と ほぼ同様の傾向を示す。 (-s devicemapper) (OpenStack / KVM のVMインスタンスで計測)

Slide 10

Slide 10 text

Copyright 2014 ASCADE, Inc. ファイル I/O 性能 (AUFS) 10 Bonnie++による 5回計測の平均値で比較  Block I/O size=4GB  files=128*1024  dirs=128 AUFS 領域の read 性能劣化 が著しい。 -v オプションで ホスト側を共有

Slide 11

Slide 11 text

Copyright 2014 ASCADE, Inc. ファイル I/O 性能 (Device Mapper) 11 Device Mapper により read 性能を維持できる

Slide 12

Slide 12 text

Copyright 2014 ASCADE, Inc. 仮想化方式(VM / Docker) の比較 12 (-s devicemapper) 一般的な VM / Baremetal 比較結果と同じような傾向 となった。ただし… Context Switching を除いて。 Context Switching: ⇒今回の環境では Baremetal側 のスケジューラの問題により、 Rescheduling Interrupts がVMと 比べ大量に発生したことが原因。 CPU割当(cpu affinity) を固定 するとBaremetalの方が 予想通り速い結果に。

Slide 13

Slide 13 text

Copyright 2014 ASCADE, Inc. まとめ • Docker のオーバーヘッドは、Linux環境で動作する 一般的なアプリケーションの処理ならば、Baremetal マシンやVMをそのまま使う場合と変わらないレベル。 • AUFS 領域への読み込み性能は極端に低下する場合 があり、用途によっては AUFS以外の Storage Driver (devicemapper など) を選択するほうがよい。 • (補) Dockerの標準ネットワーク設定では、NATルータを経由しても レイテンシー、スループットともに大きな差異は見られなかった。 ⇒ Host Networking機能のパフォーマンス的なメリットは少ないか? 13

Slide 14

Slide 14 text

Copyright 2014 ASCADE, Inc. 14 Thanks.