Почему мой контейнер не использует доступную оперативную память моего хост-компьютера? - PullRequest
0 голосов
/ 30 апреля 2019

Я запускаю докер на машине с Windows с 16 ГБ ОЗУ. Мой контейнер использует 4 ГБ памяти согласно docker stats (см. Вывод ниже). Однако в соответствии с моим диспетчером задач Windows этот процесс не выполняется, и использование памяти на моем компьютере не меняется при запуске / остановке контейнера.

Таким образом, мои вопросы

  1. Откуда 4 ГБ ОЗУ, используемого контейнером (диск как ОЗУ?)
  2. Как я могу настроить свой контейнер для использования доступной оперативной памяти

Мой контейнер работает очень медленно, и я подозреваю его из-за описанного выше поведения; где он использует диск в качестве виртуальной памяти и, следовательно, не использует ресурсы, доступные для него.

$ docker stats

CONTAINER ID        NAME                CPU %               MEM USAGE / LIMIT     MEM %               NET I/O             BLOCK I/O           PIDS
66a9ccfd0a51        quirky_wozniak      0.04%               4.268GiB / 4.815GiB   88.63%              113kB / 20.2kB      40.8MB / 1.07MB     16

снимок экрана менеджера задач

Настройки Docker

Ответы [ 2 ]

0 голосов
/ 08 мая 2019

Проблема в том, что диспетчер задач не рассматривает Hyper-V как процесс и, следовательно, не отображается в списке процессов.Другими словами, используемая память не отображалась диспетчером задач, кроме как в сводке.

Используя расширенные инструменты, такие как RMAP, мы видим, что память используется в разделе «Driver Locked».

0 голосов
/ 07 мая 2019

Docker для Windows обычно запускает виртуальную машину для поддержки контейнеров Linux. Память, выделенная этой виртуальной машине, является памятью, доступной на хосте докера. В настройках есть меню для настройки количества ядер ЦП и объема памяти, выделяемой для этой ВМ:

Advance VM settings

(Изображение предоставлено: Документация Docker для Windows )

...