Как ограничить память для 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
1 ответ
Установка предела памяти не является специфичной для модуля edgeHub, но она одинакова для любого другого модуля докера, используемого с 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 rmi mcr.microsoft.com/azureiotedge-agent:1.0 -f
После этого перезапустите iotEdge Deamon с помощью
sudo systemctl перезапустить iotedge
После этого память будет ограничена для модуля edgeAgent.
Примечание. Если вы хотите ограничить память на Raspberry Pi, учтите, что поддержка ограничения памяти по умолчанию отключена. Вы можете найти HowTo для его включения здесь: https://blog.raveland.org/post/docker_raspian/