Starvationless kernel-aware distributed scheduling of software licenses
AssigneeAlcatel-Lucent USA Inc.
InventorsMartin D. Carroll, William Katsak, Hans C. Woithe
Life of this patent
Estimating the term…
Abstract
Methods, systems, and apparatuses for implementing shared-license software management are provided. Shared-license software management may be performed by generating a request for a license for running a process of a shared-license software application. The request is communicated to a license server, and the process is made available for scheduling an operation when a grant for the requested license is received from the license server, wherein the grant comprises a license quantum, which is an amount of central processing unit time for which the license has been granted to the process.
Claims23
A system, comprising:
- a memory;
- and
- a processor in communication with the memory, the processor configured to:
- execute a local scheduler as a hook into an existing kernel scheduler of a client device, wherein the local scheduler is configured to:
- receive a set of license needs for running a process of a shared-license software application on a client device, the set of license needs comprising license needs served by different ones of a plurality of license servers;
- partition the set of license needs into buckets, each bucket associated with one of the plurality of license servers, wherein each license need is partitioned into the bucket that is associated with the license server from which the license need is served;
- determine a priority order for the buckets based on a priority of their associated license server;
- generate requests for the license needs in each bucket according to the priority order such that a grant for a request for a license need in a particular bucket is received from its respective license server prior to generating a request for a license need in a next bucket in the priority order;
- communicate each of the generated requests to its respective license server;
- receive a respective grant for each of the generated requests from its respective license server, wherein the respective grant comprises a license quantum representing an amount of central processing unit (CPU) time which has been granted to the process;
- and
- schedule the process of the shared-license software application for running on the client device when the respective grant for each of the generated requests is received and when the process of the shared-license software application is permitted to run based on semantics of the existing kernel-scheduler.
A method comprising:
- executing a local scheduler as a hook into an existing kernel scheduler of a client device:
- receiving, by the local scheduler, a set of license needs for running a process of a shared-license software application on a client device, the set of license needs comprising license needs served by different ones of a plurality of license servers;
- partitioning, by the local scheduler, the set of license needs into buckets, each bucket associated with one of the plurality of license servers, wherein each license need is partitioned into the bucket that is associated with the license server from which the license need is served;
- determining, by the local scheduler, a priority order for the buckets based on a priority of their associated license server;
- generating, by the local scheduler, requests for the license needs in each bucket according to the priority order such that a grant for a request for a license need in a particular bucket is received from its respective license server prior to generating a request for a license need in a next bucket in the priority order;
- communicating, by the local scheduler, each of the generated requests to its respective license server;
- receiving, by the local scheduler, a respective grant for each of the generated requests from its respective license server, wherein the respective grant comprises a license quantum representing an amount of central processing unit (CPU) time which has been granted to the process;
- and
- scheduling, by the local scheduler, the process of the shared-license software application for running on the client device when the respective grant for each of the generated requests is received and when the process of the shared-license software application is permitted to run based on semantics of the existing kernel-scheduler.
An article of manufacture including a non-transitory computer-readable medium having instructions stored thereon, that in response to execution by a computing device causes the computing device to perform operations comprising:
- executing a local scheduler as a hook into an existing kernel scheduler of a client device;
- receiving, by the local scheduler, a set of license needs for running a process of a shared-license software application on a client device, the set of license needs comprising license needs served by different ones of a plurality of license servers;
- partitioning, by the local scheduler, the set of license needs into buckets, each bucket associated with one of the plurality of license servers, wherein each license need is partitioned into the bucket that is associated with the license server from which the license need is served;
- determining, by the local scheduler, a priority order for the buckets based on a priority of their associated license server;
- generating, by the local scheduler, requests for the license needs in each bucket according to the priority order such that a grant for a request for a license need in a particular bucket is received from its respective license server prior to generating a request for a license need in a next bucket in the priority order;
- communicating, by the local scheduler, each of the generated requests to its respective license server;
- receiving, by the local scheduler, a respective grant for each of the generated requests from its respective license server, wherein the respective grant comprises a license quantum representing an amount of central processing unit (CPU) time which has been granted to the process;
- and
- scheduling, by the local scheduler, the process of the shared-license software application for running on the client device when the respective grant for each of the generated requests is received and when the process of the shared-license software application is permitted to run based on semantics of the existing kernel-scheduler.
Dependencies are inferred from the claim text.