ARM Technical Support Knowledge Articles

What is a suitable number of floating license seats required for building my application?

Applies to: Tool Licensing (License Management)

Answer

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.

Parallel Builds 

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

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

Build Farms

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?

Conclusion

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

Rate this article

[Bad]
|
|
[Good]
Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential