微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

较小平台上的 IoT Edge

如何解决较小平台上的 IoT Edge

我目前正在开展一个项目,其中包括一个网关设备,该设备将从其他设备收集传感器数据。此网关使用 IoT Edge 并运行一个自定义模块(用 C# .NET 5.0 编写)。

最初我们开始使用 RaspBerry PI 4 进行开发,并且效果很好。由于生产成本和需要在某些终端客户场所安装的网关数量,我们需要缩小平台。

我们正在进行原型设计的一个平台是 500MHz 的单核 ARM,具有 256MB LPDDR2 内存。在这个平台上,我们注意到 IoT Edge 和我们的应用程序的启动速度明显变慢。 将 IoT Edge 服务日志的时间戳与应用程序日志进行比较,我们发现启动系统需要 6-8 分钟。 到目前为止我们所观察到的(基于我刚刚进行的测试运行):

  • edgeAgent 在 IoT Edge 服务启动几秒钟后启动,此时系统 cpu 空闲时间减少为零,内存交换增加
  • 在 IoT Edge 服务启动几分钟后,我们的模块就启动了,
  • 我们的模块执行 ModuleClient.CreateFromEnvironmentAsync(),我们模块的 cpu 利用率急剧增加。在 90 秒以上连接到 IoT 中心后,重试错误 Communication_Error
  • 大约三分钟后,我们的应用程序收到 ConnectionStatus.Connected 并尝试获取当前的孪生状态。这需要 30 秒(尽管我们经常看到失败)。

最终系统上的 cpu 使用率下降到大约 90% 空闲。

从 IoT Edge 服务启动 (09:52:13UTC) 到我们的模块完全启动 (10:00:32UTC) 的总挂钟时间为 8 分 19 秒。 如果我在 Docker 之外运行我们的模块并且没有 IoT Edge,它会在 6 秒内启动。

有没有办法减少启动系统所需的时间?

解决方法

您有多种选择可以在受限设备上使用 IoT Edge。查看 https://docs.microsoft.com/en-us/azure/iot-edge/production-checklist 并尝试不同的 timeToLiveSecs 值,以及“减少 IoT Edge 中心使用的内存空间”。 我写了一篇文章,其中包含我在类似设置中的一些发现 https://www.hezser.de/blog/2020/11/03/azure-iot-edge-on-constraint-devices/

,

256MB 内存对于 IoT Edge 运行时来说太少了。根据经验,建议至少使用具有 Raspberry Pi 3 级别资源的设备。这意味着至少 1GB RAM(推荐 2GB)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。