Dynamic license reservations let you optimize license usage by reserving required licenses in advance. In this way, you can ensure there are no license usage denials, no gaps in license usage, and no under-utilization of licenses.
Dynamic license reservations work only with virtual and terminal server sharing; they do not work with user, host or custom sharing. |
Unlike a normal checkout/checkin, a reservation performed by one client can be consumed by any other client, including a different physical machine.
You can use reservations in the following ways:
If you consume (checkout) a reservation and then later do a return (checkin), the licenses will be returned to the reservation pool, not to the general license pool. You can checkout and checkin a reservation multiple times using multiple clients, and the reservation pools will be maintained. The reservation remains valid until it expires or is explicitly returned using LMX_Admin_ReserveEarlyReturn.
For example, a job scheduler handling batch jobs could reserve a license using reservation token 9876 for a specific length of time, say 10 minutes. Within that reservation time, the batch job application can then consume (checkout) the reservation by providing reservation token 9876 to the license server. This ensures that the application requiring the checkout will be able to get a license when needed.
A standard workflow for implementing dynamic license reservations is as follows:
The following table shows an example progression of how licenses are reserved and consumed. This example is for a single feature with a pool of 10 licenses.
Action | Licenses in Pool | Reserved Licenses | Licenses Consumed by Client 1 | Licenses Consumed by Client 2 |
---|---|---|---|---|
Default state, before reservations/consumptions | 10 | 0 | 0 | 0 |
Reserve 8 licenses of feature using token ABC | 2 | 8 using token ABC | 0 | 0 |
Reserve 2 licenses of feature using token XYZ | 0 | 8 using token ABC; 2 using token XYZ | 0 | 0 |
Any client attempts normal checkout of 1 license (returns LMX_NOT_ENOUGH_LICENSES) | 0 | 8 using token ABC; 2 using token XYZ | 0 | 0 |
Client 1 consumes 1 reservation using token ABC | 0 | 7 using token ABC; 2 using token XYZ | 1 using token ABC | 0 |
Client 2 consumes 1 reservation using token XYZ | 0 | 7 using token ABC; 1 using token XYZ | 1 using token ABC | 1 using token XYZ |
Client 1 consumes 5 reservations using token ABC | 0 | 2 using token ABC; 1 using token XYZ | 6 using token ABC | 1 using token XYZ |
Client 2 attempts normal checkout of 1 license (returns LMX_FEATURE_ALREADY_RESERVED) | 0 | 2 using token ABC: 1 using token XYZ | 6 using token ABC | 1 using token XYZ |
Client 1 checks in all licenses | 0 | 8 using token ABC: 1 using token XYZ | 0 | 1 using token XYZ |
Client 2 performs early return using token XYZ | 2 | 8 using token ABC | 0 | 0 |
Client 2 performs early return using token ABC | 10 | 0 | 0 | 0 |