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.
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.
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.