Skip to content

mac mini arm64 incorrectly reports ~98% memory usage, cannot run jobs #13096

Open
@dionjwa

Description

@dionjwa

Nomad version

Nomad v1.2.6 (a6c6b47)

Operating system and Environment details

macOS 12.4
Mac Mini 2020
16GB Ram

Docker:

Client:
 Cloud integration: v1.0.24
 Version:           20.10.14
 API version:       1.41
 Go version:        go1.16.15
 Git commit:        a224086
 Built:             Thu Mar 24 01:49:20 2022
 OS/Arch:           darwin/arm64
 Context:           default
 Experimental:      true

Server: Docker Desktop 4.8.1 (78998)
 Engine:
  Version:          20.10.14
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.16.15
  Git commit:       87a90dc
  Built:            Thu Mar 24 01:45:44 2022
  OS/Arch:          linux/arm64
  Experimental:     false
 containerd:
  Version:          1.5.11
  GitCommit:        3df54a852345ae127d1fa3092b95168e4a88e2f8
 runc:
  Version:          1.0.3
  GitCommit:        v1.0.3-0-gf46b6ba
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

Issue

There is almost no user processes running consuming memory:
image

But notice the qemu-system-aarch64 process, according to google, that's Docker for Mac.

Docker desktop:

8GB memory reserved for container:
image

But nomad shows almost complete memory consumption

image

There are zero docker containers running.

Reproduction steps

Run nomad and consul as described in the docs here:

https://www.nomadproject.io/docs/faq#q-how-to-connect-to-my-host-network-when-using-docker-desktop-windows-and-macos=

The equivalent setup but on a mac with 64gb (and amd64 instead of arm64) shows the same "unavailable" memory but the excess capacity allows running docker jobs via nomad.

Expected Result

nomad sees the available memory reserved for docker: many docker job containers can be assigned

Actual Result

The memory reserved for docker is seen as consumed. The smallest jobs can be run, but no full stack multi-container applications, as that exceeds the (incorrect) memory availability

Job file (if appropriate)

The most basic job shown in tutorials

Nomad Server logs (if appropriate)

Nomad Client logs (if appropriate)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    Status

    Needs Roadmapping

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions