2017-06-19 11 views
1

私は、SLES 12のドッカーコンテナがUbuntuの同じコンテナと比較して約2倍のメモリを消費していることに気付きました。ドッカーの同じバージョン。 (すべてでコンテナに何もしていない)、セレン/ハブを実行して、すべてのテストを実行していない例えばSLES 12のドッカーコンテナがUbuntuに比べて2倍のメモリを使用するのはなぜですか?

、ここでは約1分後にドッキングウィンドウの統計です:

だけロードセレン/ハブは、ありません何をやって(何もテストしない、など):

SLES 12:

CONTAINER CPU % MEM USAGE/LIMIT MEM % NET I/O  BLOCK I/O  PIDS 
8ce43b4e9a23 0.06% 149.1MiB/15.6GiB 0.93% 0B/0B  57.5MB/0B 0 

のUbuntu:

CONTAINER CPU % MEM USAGE/LIMIT  MEM % NET I/O  BLOCK I/O  PIDS 
05d3140608b4 0.12% 74.79 MiB/15.67 GiB 0.47% 0 B/648 B 0 B/8.19 kB 26 

アイデア?

+0

なぜSLESでPIDS = 0になっているのか不思議です。 – Robert

答えて

1

docker infoの出力は何ですか?

Ubuntuでは、デフォルトのストレージドライバはaufsで、SLESはdevicemapperまたはbtrfsです。

上記のリンクからの抜粋:

メモリ使用量:devicemapperは、他のいくつかの ストレージドライバよりも多くのメモリを使用しています。起動された各コンテナは、 の同じファイルのブロック数が同時に変更されているかどうかに応じて、そのファイルの1つ以上のコピーをメモリにロードします。メモリ負荷のため、高密度ユースケースの特定の ワークロードでは、 devicemapperストレージドライバが適切な選択肢ではない場合があります。

-

ページ・キャッシュ。 Btrfsはページキャッシュの共有をサポートしていません。つまり、同じファイルにアクセスする各プロセスがファイルを Dockerホストのメモリにコピーすることを意味する を意味します。その結果、btrfsドライバはPaaSなどの高密度ユースケースである ではない可能性があります。

SLES 12でサポートされている記憶域ドライバー:

https://www.suse.com/documentation/sles-12/singlehtml/book_sles_docker/book_sles_docker.html#Docker_Used_Drivers

私はあなたが4.4.21カーネルでSP2にアップグレードする場合は、overlay2を使用することができますね。

https://www.novell.com/support/kb/doc.php?id=3594951

0

あなたが同じイメージを使用して、異なるリソース消費メトリックを取得しているので、私はそれがあるため、それぞれのオペレーティングシステム上の異なるベースのカーネルであると思います。

コンテナ(ドッカーで作成)が消費するリソースの量は、それに依存します。 Dockerは、カーネルレベルのAPI(cgroups and namespaces)を使用して、プログラムに必要な分離を容易にします。