Как ограничить память для EdgeAgent на устройстве Edge

Я узнал от команды Azure, что лимит памяти для модулей Edge, включая edgeHub, можно контролировать, указав createOptions -> HostConfig -> Memory. Как контролировать ограничение памяти для контейнера edgeAgent Docker, созданного edgeAgent? Это задокументировано? В настоящее время здесь он отображается как 1,88 ГБ на виртуальной машине 2 ГБ.

Ниже приведена выдержка из docker stats.

fd66aaa4dbe1        edgeAgent                 0.01%               40.59MiB / 1.885GiB   2.10%               2.18MB / 1.13MB     55.6MB / 705kB      15

Если мой ответ вам подходит, отметьте его как принятый. Если это не работает для вас, пожалуйста, предоставьте некоторые подробности.

René 13.02.2019 15:23
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
Как установить LAMP Stack 1/2 на Azure Linux VM
Как установить LAMP Stack 1/2 на Azure Linux VM
В дополнение к нашему предыдущему сообщению о намерении Azure прекратить поддержку Azure Database для MySQL в качестве единого сервера после 16...
1
1
353
1

Ответы 1

Установка предела памяти не является специфической для модуля edgeHub, но она одинакова для любого другого модуля Docker, используемого с IoTEdge. Вы можете добавить параметр Memory в раздел HostConfig в createOptions любого модуля.

Для edgeAgent параметр развертывания будет выглядеть следующим образом:

"systemModules": {
          "edgeAgent": {
            "type": "docker",
            "settings": {
              "image": "mcr.microsoft.com/azureiotedge-agent:1.0",
              "createOptions": "{\"HostConfig\":{\"Memory\":536870912}}"
            }
          },
          "edgeHub": {
          ...
          }
        }

При этом делаем новое развертывание.

Чтобы изменения вступили в силу на вашем компьютере, вы должны удалить модуль edgeAgent, чтобы он создал новый в соответствии с вашими измененными правилами развертывания. Вы можете сделать это с помощью следующей команды:

sudo docker rmi mcr.microsoft.com/azureiotedge-agent:1.0 -f

После этого перезапустите iotEdge Deamon с помощью

sudo systemctl restart iotedge

После этого память для модуля edgeAgent будет ограничена.

Примечание: Если вы хотите ограничить память на Raspberry Pi, имейте в виду, что поддержка ограничения памяти отключена по умолчанию. Вы можете найти HowTo для его включения здесь: https://blog.raveland.org/post/docker_raspian/

я пытался предоставить следующее и не имел никакого эффекта "edgeAgent": { "type": "docker", "settings": { "image": "mcr.microsoft.com/azureiotedge-agent:1.0", "createOptions": "{\"HostConfig\": { \"Memory\": \"536870912\" }}" } },

Rag 14.02.2019 05:29

Значение «Память» является целым числом, а не строкой. Попробуйте убрать кавычки вокруг значения.

René 14.02.2019 08:25

Я попытался изменить значение памяти на целое число, и это не имеет никакого эффекта. Я предполагаю, что /usr/bin/iotedged запускает edgeAgent и не читает двойник устройства.

Rag 14.02.2019 11:18

Модуль edgeAgent необходимо создать заново после того, как вы изменили параметры развертывания. Я соответствующим образом скорректировал свой ответ. Я только что попробовал это на виртуальной машине, и это действительно работает!

René 14.02.2019 12:25

почему необходимо удалить образ EdgeAgent Docker? не ограничивает ли память настройку при запуске контейнера?

Rag 14.02.2019 16:30

Вы выполнили описанные шаги? Это ограничило память для edgeAgent?

René 14.02.2019 16:44

да, это произошло после того, как я удалил образ edgeAgent. Можете ли вы объяснить, почему требуется удаление изображения?

Rag 14.02.2019 17:32

Другие вопросы по теме