(centos 7 / rhel 7) で docker (メモリー制限なしの docker 1.5 および 1.6) を使用して寿命をテストし、実行中のコンテナーの systemd-cgtop 統計を観察したところ、メモリー使用量が非常に多いように見えることに気付きました。通常、コンテナ化されていない状態で実行されている特定のアプリケーションは、約 200 ~ 300Meg のメモリしか使用しません。3 日間にわたって、私のコンテナーが最大 13G のメモリを使用していると systemd-cgtop が報告しているのを見ました。私は決してLinux管理の専門家ではありませんが、これを掘り下げ始めたところ、次の記事にたどり着きました。
https://unix.stackexchange.com/questions/34795/correctly-determining-memory-usage-in-linux
http://corlewsolutions.com/articles/article-6-understanding-the-free-command-in-ubuntu-and-linux
したがって、基本的に私が理解しているのは、システムユニット内の実際の空きメモリを決定することは、-/+ buffers/cache: を調べることです。「free -m」内で、一番上の行ではなく、 「free -m」内では、systemd-cgtop を介してコンテナで観察しているように、メモリの使用量が常に増加し、空きメモリの量が常に減少しています。-/+ buffers/cache: 行を観察すると、実際に使用されている/解放されているメモリの安定した量が表示されます。また、ホストの top 内の実際のプロセスを観察すると、プロセス自体がメモリの 1% 未満 (32G の 0.8%) しか使用していないことがわかります。
ここで何が起こっているのか少し混乱しています。コンテナーに 500 ~ 1000M のメモリ制限を設定した場合 (スワップにより 2 倍になると思われます)、プロセス自体が使用していなくても、メモリ制限に達するとプロセスが最終的に停止します。その多くのメモリに近い場所はありますか?誰かが前者について何かフィードバックがあれば、それは素晴らしいことです. ありがとう!