Migrating Applications to a Calxeda ARM Server with Breeze

Written by Rosemary Francis – Ellexus, Ltd.

The new ARM servers are an economical choice for anyone looking to host massively parallel applications; the technical specifications speak for themselves. But the next question is always about the cost of migrating applications to this new architecture.

Whether moving from x86 or from a PowerPC architecture, you are likely to have to recompile your applications for the new ARM servers. A little preparation early on can save a lot of time in the long run. You can also save time by using Breeze, a tool from Ellexus to help you migrate your applications easily.

Step 1: Work out what your dependencies are

Before you move anything, work out what you need to move. Breeze is a dependency tracing tool that gathers information about your programs as they run. It will show you which programs are used by your application as well as all their files and libraries.

As well as build scripts and source code you’ll want to pre-install all the programs that your build uses. Tracing your application inside Breeze will give you this. You can pull up a list of all the files that have been used as well as all the programs that are called.


Step 2: Recompile your application on the ARM server

If your build uses the default path settings to find the compilers and other programs needed to compile your program, you’ll be able to run your build just fine. Most of the commonly-used programs will be already available and you’ll be able to install them using ‘apt-get install’ or via a similar package manager.

If your scripts have system-specific code to find compilers and libraries then you may need to tweak a few lines to point in the right place. For example, on ARM servers the GNU C libraries will be located in /lib/arm-linux-gnueabihf whereas on a x86 machine they are in /lib64.

Optimising performance

The ARM servers are so new that the software partners are bringing out performance-enhancing updates all the time. It is a really good idea to review each of your major dependencies and check that you have the most up-to-date version. Breeze will give you a list of libraries, files and programs used by your build.

What to do if something goes wrong

Occasionally build problems will arise and Breeze can help you to find a solution quickly. Trace your build on the ARM server and compare it with the build on your old machine. There will be some differences that don’t matter, but you should be able to work back from the failure and pick out unexpected differences.


You can also see what is going on inside the build. For example, if you get a “library not found” error from your linker, Breeze can tell you if it is looking in the wrong place or whether it is finding your library and rejecting it.

Step 3: Run your application and profile its performance

Hooray! You are up and running! Now you want to see how your programs perform. IO-bound applications are particularly suited to the ARM servers and you can use Breeze to profile the file IO to gain a holistic overview of performance.

Choose areas of the file system to profile; the tool install directory, project data and temporary storage areas work well. Breeze will then track how much file IO goes to those areas so you can see what the application is doing.

You can pick out peaks of IO when the application loads and when it performs certain tasks. This can be compared with other machines to give you an indication of which areas of the application are faster and which are slower.

Screen shot 2013-07-26 at 11.09.33 AM

The graph above shows the number of bytes written to /tmp and /home in a multi-target build over time. I can use this information to optimise my file system as well as pick out performance bottlenecks. In this way Breeze can make it easy to migrate your applications and get a good insight into the performance implications of the new architecture.

Java, Fedora, and Xen Support: All on Calxeda

With the allure of a good book on the beach stealing everyone’s attention this summer, you may have missed three important developments in the Linux community to support ARM in the datacenter.  The first was the announcement that with the new Fedora 19, Fedora has released ARM and x86 support simultaneously.  This was made possible, in part, thanks to a Boston Viridis build-farm installed earlier this year.  ARM support is now available in media and installer images for TI OMAP4, nVidia Tegra 2, and Calxeda ECX-1000 (Highbank).  This represents a key milestone in providing complete Linux packages for ARM based development, appropriate for customers who roll-their-own OS from open source.  (Note that the Ubuntu community already enjoys a fully supported enterprise OS for ARM, thanks to the work of Canonical Ltd, a long-time supporter of the ARM architecture.)

Next on deck for your summer reading pleasure,  is the release  of Xen 4.3 for ARM V7 and V8 architectures by the Xen Project, enabling hypervisor support for 32- and 64-bit ARM SOCs.  Once again, this work was done on a Calxeda-based Boston Viridis system.

Finally,  today ARM and Oracle announced the next phase of their collaborative relationship to optimize Javafor ARM-based servers and embedded SOCs, extending their work to 32- and 64-bit optimization:

  • Agreement will provide ARM architecture support for key markets e.g. data centers, network infrastructure and embedded computing
  • Oracle JVM optimized further for 32-bit products and ported over and optimized for ARMv8 64-bit
  • Additional areas for co-operation include improving boot-up performancepower savings and library optimization

Note that Oracle Java SE is a fundamental technology for all of the market areas mentioned above.

Ok, back to the beach…