1. ホーム
  2. linux

[解決済み] Dockerコンテナのランタイムパフォーマンスコストとは何ですか?

2022-03-15 23:41:17

質問

Dockerコンテナのランタイムパフォーマンスコストを包括的に理解したい。以下のような参考文献を見つけました。 ネットワーキングの速度が100μs程度遅いとのこと。 .

また、ランタイム・コストが "negligible" や "close to zero" であるという言及も見つけましたが、これらのコストが何であるかをより正確に知りたいのです。理想的には、Dockerがパフォーマンスコストをかけて抽象化しているものと、パフォーマンスコストをかけずに抽象化されているものを知りたいです。ネットワーク、CPU、メモリなど。

さらに、抽象化コストがある場合、抽象化コストを回避する方法はあるのでしょうか。例えば、ディスクを直接マウントするのと、Dockerで仮想的にマウントするのとでは、どちらがいいでしょうか。

どのように解決するのですか?

2014年のIBMの優れた研究論文 " 仮想マシンとLinuxコンテナの最新パフォーマンス比較 " Felterらによる、ベアメタル、KVM、Dockerコンテナの比較を行っています。一般的な結果としては Dockerはネイティブの性能とほぼ同じであり、すべてのカテゴリでKVMより高速です。

例外はDockerのNATです。ポートマッピングを使用する場合(例. docker run -p 8080:8080 ) の場合、以下のようにレイテンシーに若干の影響が出ることが予想されます。しかし、ホストのネットワークスタック(例. docker run --net=host Dockerコンテナを起動する場合、Nativeカラムと同じように動作します(下部のRedisレイテンシの結果に示されているように)。

また、Redisなど、いくつかの特定のサービスについてもレイテンシテストを実施しました。20スレッド以上のクライアントでは、最も高いレイテンシオーバーヘッドはDocker NAT、次にKVM、そしてDocker hostとnativeが同率で並んでいることがわかります。

本当に役に立つ論文なので、他の図も紹介します。ぜひダウンロードしてご覧ください。

ディスクI/Oを見てみる。

今度はCPUのオーバーヘッドを見てみましょう。

さて、次は記憶の例です(詳しくは論文を読んでください、記憶は特に厄介です)。