|ARM Technical Support Knowledge Articles|
Applies to: Tool Licensing (License Management)
There are a number of factors that need to be considered when deciding how many licenses (license seats) are needed to build an application as quickly as possible using the ARM Compiler toolchain:
All the above considerations, and more, will influence the number of seats required to fulfil your usage requirements.
Most C/C++ development environments depend on some version of the
make program to manage the build process. A
make program can be invoked using the
-j flag, for example:
> make -j 4
The argument given to
-j is the number of jobs the
make program should attempt to run in parallel. The above command would invoke a parallel build, running four jobs in parallel. Each job requests one seat, so in this case the client would attempt to check out four seats. If there are sufficient seats available, the client should observe optimal build times. If the license server only has one seat available, the additional requests will be queued and the client would not benefit from using the
It is common to run parallel builds on multi-core machines (machines containing a processor with more than one CPU/core) to improve build times. If the operating system is capable of scheduling different jobs to different CPUs, then it is possible to run separate jobs on each core. So for a quad-core machine to operate at its optimum performance, when running a parallel build, it will require at least four seats, otherwise the build might be delayed. For example, if the client machine is a quad-core machine and runs a parallel build using a single seat license, it will request four seats and will check out one seat. The remaining requests will be queued until the seat is returned to the license pool. Whilst the license seat is checked-out, the remaining requests are likely to result in the following message:
Warning: C9933W: Waiting for license...
A build farm, also known as a server farm or compile farm, is a type of super-client that contains one or more "servers" that client machines access to build applications/projects. For example, a build farm might be used for an overnight build. Build farms typically support parallel jobs (mentioned above), and also remote access to allow cross-platform development.
A number of clients send their builds to the "server farm" which then runs the builds, requesting seats from the license server. Server farms typically run more than one build in parallel using multiple cores, which can lead to a very high frequency of attempts to checkout a license.
Different Versions of ARM Tools
ARM licenses are backward compatible, so the latest license will enable the use of all versions of the tools up to and including that version of the license. Conversely, the tools require a license of the same version number or higher to operate.
When you have clients running different versions of the tools, you must ensure that you have sufficient seats of licenses to enable the use of the different tools, especially if your license file contains a mix of license versions. Also, it is recommend to use an options file to prevent older versions of the ARM Compiler consuming licenses that enable newer versions of the ARM Compiler. For more information, please see the FAQ: Can I reserve floating licenses for particular users?
It is important when planning your license requirements to take into account all of the above points. It is also very important when upgrading your client machine specifications, that your server(s) are of a suitable specification to handle the clients' demands.
Article last edited on: 2013-01-15 15:38:40
Did you find this article helpful? Yes No
How can we improve this article?