文章摘要
文章介绍了在Ampere One 192核机器上使用Nerves框架运行5000个Erlang虚拟Linux IoT设备的实验。作者之前在同一设备上成功运行了500个设备,并期待通过KVM技术实现性能提升。此次实验旨在为即将在Goatmire Elixir会议上的演讲做准备,并分享了关于qemu和虚拟Linux机器的学习心得。
文章总结
标题:在Ampere One 192核处理器上启动5000个Erlang虚拟机
主要内容:
在Ampere One 192核处理器上,作者成功启动了5000个基于Nerves框架的虚拟Linux IoT设备。Nerves框架将BEAM虚拟机视为操作系统,仅使用Linux内核和驱动程序,使得嵌入式设备的开发可以在高效、可靠的环境中进行。作者通过使用KVM加速器,显著提升了虚拟机的启动速度和内存效率。
关键点:
硬件与目标:使用Ampere One 192核处理器和1TB内存,目标是尽可能多地运行基于Nerves框架的虚拟Linux IoT设备。之前已经成功运行了500个虚拟机,这次目标是5000个。
Nerves框架:Nerves框架将BEAM虚拟机作为操作系统,仅依赖Linux内核和驱动程序,提供了高效、可靠的嵌入式开发环境,并具备内存安全和恢复策略。
启动器改进:Frank Hunleth开发了一个名为
little_loader的启动器,替代了u-boot,简化了ARM64 qemu设备的启动过程,并支持Nerves的A/B升级功能。KVM加速:通过KVM加速器,虚拟机的启动速度大幅提升,内存使用减少了约500MB。作者在MacOS上也成功使用了HVF加速器。
内存调优:通过调整Linux和BEAM的内存使用策略,进一步优化了虚拟机的内存占用。最终,每个虚拟机仅使用110MB内存,稳定运行时占用约160MB。
测试结果:在NervesCloud上,作者成功连接了3389个设备,最终在服务器内存不足时停止。经过内存调优后,成功运行了5100个虚拟机。
未来工作:作者计划进一步研究KVM与NUMA的交互,并考虑使用虚拟气球技术回收内存。此外,还计划优化Nerves系统,使其成为Nerves工具链的一部分,方便在没有物理硬件的情况下进行测试。
总结:
通过KVM加速器和内存调优,作者在Ampere One 192核处理器上成功运行了5000个基于Nerves框架的虚拟Linux IoT设备,展示了硬件和软件的强大潜力。这一实验不仅为嵌入式开发提供了新的可能性,也为未来的优化和扩展奠定了基础。
评论总结
评论1(评分:无,作者:elteto): - 主要观点:对Underjord作为“手工咨询公司”的描述表示调侃,暗示其服务可能过于精致或不切实际。 - 关键引用: - “If they don’t weave Erlang threads by hand I’m going to be mildly disappointed.”(如果他们不手工编织Erlang线程,我会有点失望。) - “Underjord is an artisanal consultancy…”(Underjord是一家手工咨询公司…)
评论2(评分:无,作者:lifeisstillgood): - 主要观点:认为这款机器(AmpereOne)是针对云服务提供商或电信边缘计算设计的,且其多核架构是应对摩尔定律失效的有效方式。 - 关键引用: - “Cores really are the only way to escape the broken moores law…”(多核确实是摆脱摩尔定律失效的唯一途径…) - “And is designed as a cloud provider or telco edge machine…”(它是为云服务提供商或电信边缘计算设计的…)
总结: - 评论1对Underjord的描述持调侃态度,认为其“手工咨询”的概念可能过于夸张。 - 评论2则从技术角度分析了AmpereOne机器的设计目标,认为其多核架构是应对当前技术瓶颈的重要方向。