EdgeX ARM64 Support
Written by Gorka Garcia and Federico Claramonte from Cavium
Cavium, a provider of highly integrated semiconductor processors that enable intelligent networking, communications, storage, video and security applications, recently joined EdgeX Foundry and is already an active contributor.
We are using our OCTEON TX family of Multi-Core 64-bit ARM Embedded Processors to target the intelligent IoT Edge Gateway market. We believe in open source technologies for this market and value EdgeX Foundry for its scalability and flexibility.
Over the past few months, Cavium has helped create a strong ARM64-based version of the EdgeX platform that is on par with the versions for other CPU platforms. Our particular focus was on ensuring efficient execution of the platform on OCTEON TX processors using a intelligent edge gateway reference design.
As we started the port, the first issue we met was the lack of ARM64 support in EdgeX docker containers. As a first pass, we ran EdgeX without using containers and just calling the micro-services directly. This worked at first try, as the EdgeX software is written in java and it did not use any native libraries. Then, we created a new set of ARM64 containers that can be deployed to ARM64 in the same way as x86. While doing this, we simplified the docker container process creation by implementing some scripts that will handle that task. When running all the containers in our lower memory ARM64 boards, we noticed a peak of memory usage at startup. After some investigation, we managed to reduce these memory peaks by simplifying the startup process, managing to also improve the startup time of EdgeX. These are changes that benefit all supported platforms, not just ARM64. Right now we are involved in the porting of some micro-services from java to Go Lang, which will help reduce memory footprint even further as well as improve the overall performance.
All our work has been contributed to the EdgeX Foundry community as we believe interoperability is key for IoT solutions success and are committed to help grow the EdgeX ecosystem. Throughout this whole process, we had support from the EdgeX community, answering our questions and giving feedback on our work. Cavium will continue supporting the EdgeX Foundry project to make sure it runs well in our ARM64 processors as well as doing generic optimizations of the services that could benefit the whole community.
For more developer resources, please visit the EdgeX Foundry wiki page.