我有一个在alipine docker容器中运行的C程序。 OSX和ubuntu上的图像大小都是10M。
在OSX上,当我运行此图像时,使用' docker stats'我看到它使用1M RAM,因此在docker compose文件中我在我的swarm中分配了最多5M。
然而,在Ubuntu 16.04.4 LTS上,图像也是10M,但在运行时它使用大约9M RAM,我必须增加我的撰写文件中的最大分配内存。
为什么OSX和Ubuntu之间的RAM使用有这么大差异?
即使我们有不同的操作系统,我也会想到,一旦你在框架内运行,那么你在不同的机器上表现得相似。所以我原以为应该有类似的内存使用量。
更新
感谢您的评论。所以'统计'可能是不准确的,并且在linux上有最佳的基线差异。顺便说一句,但我认为有趣的是,提出这个问题的原因是要了解“引擎盖下”的问题。为了调整我的大量已部署程序的设置。最初,当我测试时,我尝试在ubuntu上分配最小量的最大RAM,这导致很多磁盘颠覆了我在Macbook上看不到的东西,(没有硬盘!)。
有些数字完全是我的设置,但我觉得很有意思。
1000个docker容器,每个1个C程序,每个容器20M RAM MAX,服务器负载98,服务器总共运行4K进程,[总共1000个程序]
20个docker容器,每个100个C程序,每个容器200M RAM MAX,服务器负载5到50,服务器总共运行2.3K进程,[2000 C程序总计]。
这一切都为您的docker镜像提供了大量的MAX RAM,让您的服务器运行更少的Docker容器更好。