License Overbooking

Advantages of Overbooking

If there are 10 licenses of a simulator, the scheduler (that is, Accelerator) dispatches 10 jobs using those licenses. However, many jobs do not use the licenses for 100% of their lifespan. If one checks how many licenses are checked out at any one time, for example with lmstat, one may find out that occasionally there are less that 10 licenses in use. Experienced users who look directly at the license daemon statistics may wonder why there are jobs in the queue while licenses are available. From Accelerator's point of view, those licenses are not available because they are reserved for those running jobs, which may check out the licenses at any time.

This problem is greatly amplified if instead of 10 licenses there are 1,000 licenses. In such a case, you may notice that 1,000 licenses are never fully checked out, although there are 1,000 running jobs at all times. For example, one customer had about 2,000 licenses of a simulator and even with 2,000 running jobs, only 1,750 to 1,900 licenses were checked out.

Those unused licenses create an opportunity to run more jobs than licenses, which is accomplished by "license overbooking".

Activate Overbooking

For overbooking to work well, you have to activate vendor-queueing for the license. If a job cannot find a license, it waits for the license to become available instead of failing. Allocator and Accelerator are capable of overbooking licenses so that only a small number of running jobs are waiting for a license.
Note: The activation of vendor queueing is application dependent.

Overbooking Operation

The normal approach for managing licenses in Accelerator is setting the maximum number of licenses equal to the number available from the license daemons. Allocator and/or Accelerator issue jobs using this fixed number as an upper bound. In overbooking, tell Allocator and Accelerator to keep issuing jobs until it sees the actual license count (from the license daemon) fully depleted. The overbooking function acts as a classic control loop:


Figure 1.

The Reference is the number of licenses available, the Measured output is the number of licenses in use and the Measured error is the difference in the two. The Controller is the actual overbooking function that converts the license available into the number of jobs to issue - this is the System input. The System output is the launched jobs and the Sensor is the Monitor.

The Overbooking function (Controller) is vtk_flexlm_overbook for vovresourced and LA::AddResource in Allocator. These procedures have a number of tuning parameters for overbooking.