Starvationless kernel-aware distributed scheduling of software licenses
First Claim
Patent Images
1. 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.
2 Assignments
0 Petitions
Accused Products
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.
13 Citations
23 Claims
-
1. 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. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. 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. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
-
-
23. 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.
-
Specification