Overview
ARM stands for Application Response Measurement. ARM 1.0 was originally developed by Tivoli and Hewlett Packard and released in 1996. Today the current ARM 4.0 is a vendor independent standard defined by The Open Group. The aim of ARM is to get an insight view of the performance of applications, even if they are distributed over different processes on the same computer or over different hosts on a network. To achieve this goal a concept of so called transactions is introduced. For a more "academic" description of transactions and applications see the excursus in chapter "Calling it quits" . For a first understanding an example of how ARM works should be enough.

Figure: Transaction example
In "Transaction example", the "request transaction" is the one that is seen by a user in front of a computer who tries to download a file. He sends the request to another machine (he might not be aware of this) which searches for the file (the "search transaction" starts) by asking a different host for the file (the third transaction is started on host 3). Host 3 finds the file and returns back the location to host 2 (the "ask transaction stops"), the "search transaction" on host 2 is finished, too. After the file is sent to our user in front of host 1, the "request transaction" is stopped as well. The user now might ask why it takes 20 seconds to retrieve the file. Having knowledge about the whole process would maybe lead to a solution to upgrade the CPU on host 3 to get faster answers.
The questions raised in such a scenario are :
- What is the response time of the main transaction (the file request in our example)?
- What are the sub-transactions involved? How often are they involved?
- Which sub-transaction is the most time consuming one (bottleneck)?
- Which sub-transaction is responsible in case of failure?
ARM 4.0 provides a standardised way to answer these questions regardless if processes are written in different languages or executed on different computers in a network. Right now, C and Java are supported. The documents as well as the source code for these so called "language bindings" can be obtained free of charge from The Open Group website.
Besides the interface definition an efficient interface implementation (a so called ARM library, e. g. libarm4.so), an agent application which efficiently collects the transaction measurements and a manager application which helps to understand the measured data by operating with statistics etc. (see "ARM applications and libraries" ). A 30-day trial license of these libraries and applications can be generated and downloaded from the MyARM website.

Figure: ARM applications and libraries
But the most interesting part of all this is that popular applications such as SQLite or the apache web server have already implemented the ARM 4.0 interface. Their source code is available for free. Both will play a role in the following tutorial. By providing the QArm framework with an easy to use ARM interface this will spread the standard over a higher number of libraries and applications allowing the programmers and users benefit from each other's work.