首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我在SLES12上的docker容器比Ubuntu占用2倍的内存?

为什么我在SLES12上的docker容器比Ubuntu占用2倍的内存?
EN

Stack Overflow用户
提问于 2017-06-19 23:28:23
回答 2查看 51关注 0票数 1

我注意到,与Ubuntu上相同的容器相比,我在SLES12上的docker容器占用了大约2倍的内存。docker的相同版本。

例如,运行selenium/hub,并且不运行任何测试(根本不对容器执行任何操作),以下是大约1分钟后docker的统计数据:

只是加载selenium/hub,不做任何事情(不测试,等等):

SLES 12:

代码语言:javascript
复制
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:

代码语言:javascript
复制
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

有什么想法吗?

EN

回答 2

Stack Overflow用户

发布于 2017-06-20 02:08:55

docker info的输出是什么

在Ubuntu上,默认的存储驱动是aufs,而SLES使用的是devicemapperbtrfs

以上链接摘录如下:

内存使用率:设备映射器比其他一些存储驱动程序使用更多的内存。每个启动的容器将其文件的一个或多个副本加载到内存中,具体取决于同一文件的多少个块同时被修改。由于内存压力,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

票数 1
EN

Stack Overflow用户

发布于 2017-06-20 02:12:50

由于您使用相同的镜像,但获得不同的资源消耗指标,我猜这是因为不同操作系统上的基础内核不同。

您的容器(由docker创建)消耗多少资源取决于它。Docker使用内核级API(cgroups and namespaces)来简化您的程序所需的隔离。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44634467

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档