如何限制Edge设备上edgeAgent的内存

时间:2019-02-12 04:50:01

标签: azure azure-iot-edge

我从Azure团队发现,可以通过指定edgeHub来控制包括createOptions -> HostConfig -> Memory的Edge模块的内存限制。如何控制edgeAgent创建的edgeAgent Docker容器的内存限制?有记录吗?当前在2GB VM上显示为1.88GB。

以下是docker stats

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

1 个答案:

答案 0 :(得分:1)

设置内存限制并非特定于edgeHub模块,但与IotEdge一起使用的任何其他docker模块相同。您可以在任何模块的createOptions中将Memory设置添加到HostConfig部分。

对于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重新启动iotedge

之后,将限制edgeAgent模块的内存。

注意: 如果要限制Raspberry Pi上的内存,请注意默认情况下已关闭内存限制支持。您可以在此处找到如何启用它的方法:https://blog.raveland.org/post/docker_raspian/