本研究では、近年新たな仮想化基盤として注目されてるコンテナ環境におけるネットワーク性能のボトルネックを明らかにし、それを改善する手法を開発した。一般的なコンテナネットワークでは、送信されるデータはコンテナ内とホストOSで2回ネットワークスタックを通過する。そのため、通常のホストOSでのネットワーク性能に対して、コンテナ環境ではこの2度のネットワーク処理によって性能が低下してしまう。
このネットワーク性能の低下を削減するための手法として、Socket Graftingを提案した。Socket Graftingは、コンテナ内のソケットをホストOSのネットワークスタックに接続する、新しいコンテナとホストOS間のデータ通信チャネルである。本手法によって、コンテナ上のアプリケーションが外部と通信する際に通過するネットワーク処理がホストOSとほぼ同等になり、性能低下を回避することができる。実験を通して、Socket Graftingによって、コンテナ環境におけるネットワークのスループット、遅延が物理ホストと同程度まで改善し、またHTTPサーバを対象とした実験では10-40%ほどの性能向上を、ZeroMQによる実験では最大で2倍の性能と30%の遅延の低下を実現した。また、Socket Graftingを既存のアプリケーションに変更を加えずに使うためのラッパーを開発した。また最終年度には、本研究の副産物として、socket APIを前提としたSocket graftingに対して、OSのカーネルをバイパスする高速パケットI/Oの技術を流用し、既存のOSカーネルとそのAPIを用いてコンテナでも利用可能な高速パケットI/Oの開発も行った。
|