Docker daemon has 7.2G memory limit in xlarge resource_class

We are building using “xlarge” resource_class (16G of memory).

You would assume that this would give us 16G to do what we feel like, but that’s not the case.

We are building and deploying a docker swarm inside of our build, and I noticed (via the docker stats command) that the docker daemon is limited only to 7.302 G of memory.

Sample output:

CONTAINER           CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
6e24ee3537a3        0.00%               1.234MiB / 7.302GiB   0.02%               1.83kB / 1.07kB     147kB / 0B          2
f3bb1ebb3b6e        1.15%               402.3MiB / 7.302GiB   5.38%               175kB / 240kB       8.52MB / 98.3kB     276
7f7698176b25        0.11%               143.4MiB / 7.302GiB   1.92%               75.8kB / 42kB       2.13MB / 381kB      17
f9ac7a75b58c        0.15%               137MiB / 7.302GiB     1.83%               76.3kB / 41.7kB     24.6kB / 287kB      18
5c566d96f901        0.25%               365.7MiB / 7.302GiB   4.89%               159kB / 228kB       45.4MB / 139kB      151
6939c8f3daab        0.31%               592.1MiB / 7.302GiB   7.92%               751kB / 690kB       52MB / 123kB        217
84c15e83876e        0.79%               413.3MiB / 7.302GiB   5.53%               233kB / 246kB       46.1MB /      2

However, based on the UI in the build, we are allocated: 8CPU/16384MB

Why is CircleCI limiting us to 7.302G of memory when using docker? When we ask for 16G, we expect to be able to use all of those 16G.

Thanks.

Hi there. setup_remote_docker doesn’t use the resource_class settings. Are you able to use the machine executor instead?

@lbornov2 To clarify, the resource_class settings apply only to the main container where your job is running. Any non-docker commands you run are accessing the full 16GB of memory that you’ve requested. However, docker commands are running in a separate environment, which is why you’re seeing different numbers for that docker stats command:

https://circleci.com/docs/2.0/building-docker-images/#separation-of-environments

1 Like

We can’t use the machine executor.

Any way to increase the memory provided by remote docker?

Not currently. This request is being tracked here https://ideas.circleci.com/ideas/CCI-I-707

Please vote to express interest and track updated, and comment with any needed details regarding your use case.