我注意到,与Ubuntu上相同的容器相比,我在SLES12上的docker容器占用了大约2倍的内存。docker的相同版本。
例如,运行selenium/hub,并且不运行任何测试(根本不对容器执行任何操作),以下是大约1分钟后docker的统计数据:
只是加载selenium/hub,不做任何事情(不测试,等等):
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 0Ubuntu:
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有什么想法吗?
发布于 2017-06-20 02:08:55
docker info的输出是什么
在Ubuntu上,默认的存储驱动是aufs,而SLES使用的是devicemapper或btrfs。
以上链接摘录如下:
内存使用率:设备映射器比其他一些存储驱动程序使用更多的内存。每个启动的容器将其文件的一个或多个副本加载到内存中,具体取决于同一文件的多少个块同时被修改。由于内存压力,devicemapper存储驱动程序可能不是高密度使用情形中某些工作负载的正确选择。
-
页面缓存。Btrfs不支持页面缓存共享。这意味着访问同一文件的每个进程都会将该文件复制到Docker主机的内存中。因此,btrfs驱动程序可能不是PaaS等高密度用例的最佳选择。
SLES 12支持的存储驱动程序:
我猜如果你升级到4.4.21内核的SP2,你可以使用overlay2。
发布于 2017-06-20 02:12:50
由于您使用相同的镜像,但获得不同的资源消耗指标,我猜这是因为不同操作系统上的基础内核不同。
您的容器(由docker创建)消耗多少资源取决于它。Docker使用内核级API(cgroups and namespaces)来简化您的程序所需的隔离。
https://stackoverflow.com/questions/44634467
复制相似问题