docker stats 内存低于 top 的 rss

docker stats 内存低于 top 的 rss

我创建了一个容器,并在其中创建了大约 10 个进程。我想分析它们消耗了多少内存。为了实现这一点,我top在容器内部和docker stats外部运行。

在 中top,我看到 10 个进程,每个进程占用 50MB居民内存。因此,我希望docker stats显示容器使用的内存至少为 500MB,但它只显示 140 MB。

这种差异从何而来?真正的内存消耗是多少?

htop 输出: htop 输出

docker 统计输出: docker stats 输出

答案1

在 Linux 上,fork() 进程最初引用与其父进程相同的内存页面,采用写时复制方案。运行同一事物的多个副本可保持非常好的重复数据删除率。

容器内存使用量是确切的消耗量。其 cgroups 实现使用内核来跟踪资源。(同样的事情也适用于其他 cgroups 用户,如 systemd 切片。)但默认情况下达到限制将调用 OOM 终止程序。

实际限制介于观察到的容器利用率和常驻集大小总和之间。保守地说,您可以从 500 MB 开始。这比所有内存不受限制的 62,000 MB 要好得多。

相关内容