Using constraint programming to set resource allocation limits for allocating resources to consumers
Constraint programming optimizes resource allocation in computing systems by setting limits and guarantees based on historical usage data, addressing inefficiencies and vulnerabilities, thereby improving system performance.
Patent Information
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- ORACLE INT CORP
- Filing Date
- 2026-02-03
- Publication Date
- 2026-06-02
AI Technical Summary
Existing resource allocation methods in computing systems fail to efficiently manage resource usage among consumers due to dynamic load changes and varying consumer attributes, leading to inefficiencies such as underutilization and vulnerability to disruptions.
Utilizing constraint programming (CP) to set resource allocation limits and guarantees by creating a CP data model that includes elements for limits, guarantees, and vulnerabilities, with constraints and search commands to optimize resource allocation based on historical usage data.
This approach ensures optimal resource allocation, reducing the likelihood of vulnerabilities and underutilization by adaptively updating limits and guarantees, thus enhancing system performance and efficiency.
Smart Images

Figure 2026090339000001_ABST
Abstract
Description
Technical Field
[0001] Related Applications; Incorporation by Reference This application is related to U.S. Non-Provisional Patent Application No. 17 / 302,657, filed on May 10, 2021, which is hereby incorporated by reference in its entirety.
[0002] Technical Field This disclosure relates to the use of constraint programming. In particular, this disclosure relates to the use of constraint programming to set resource allocation limits for allocating resources to consumers in a computing system.
Background Art
[0003] Background A computing system includes a set of resources (e.g., a central processing unit (CPU)) that are shared among a set of consumers (e.g., database instances). When one consumer makes a large request for the shared set of resources, that consumer can negatively impact the performance of other consumers.
[0004] One way to mitigate the negative impact among consumers sharing a finite set of resources is to enforce resource allocation limits on the consumers. However, consumers are associated with various process types, priorities, and / or other attributes. Further, the process load of a consumer changes dynamically. If resource allocation limits are set without considering the static attributes and / or dynamic load of a consumer, the allocation of resources can be inefficient. For example, some resources may not be fully utilized while some consumers may resist the limits.
[0005] The approaches described in this section are approaches that can be pursued, but they are not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, none of the approaches described in this section should be assumed to be prior art simply because they are included in this section.
[0006] The embodiments are shown as examples only and are not limited to the figures in the accompanying drawings. It should be noted that references to “one” or “one” embodiment in this disclosure do not necessarily refer to the same embodiment, but rather mean at least one. These are shown in the drawings as follows: [Brief explanation of the drawing]
[0007] [Figure 1] This figure shows a resource manager for managing a computing system, according to one or more embodiments. [Figure 2A] This figure shows a constraint programming data model and a search command generation system according to one or more embodiments. [Figure 2B] This figure shows a constraint programming data model and a search command generation system according to one or more embodiments. [Figure 3] This figure shows an example of a set of actions for updating resource limits and / or resource guarantees for consumers in a computing system based on resource usage over a specific historical period, according to one or more embodiments. [Figure 4] This figure shows an example of a set of actions for generating a constraint programming data model, according to one or more embodiments. [Figure 5A] This figure shows an example of a set of operations for generating constraint programming search commands, according to one or more embodiments. [Figure 5B] This figure shows an example of a set of operations for generating constraint programming search commands, according to one or more embodiments. [Figure 5C] This figure shows an example of a set of operations for generating constraint programming search commands, according to one or more embodiments. [Figure 6] This figure shows an example of a set of operations for applying a constraint programming data model and a constraint programming search command to a constraint programming solver, according to one or more embodiments. [Figure 7] This figure shows an example of a set of actions for specifying resources to a consumer based on resource guarantees updated by a constraint programming solver, according to one or more embodiments. [Figure 8] This figure shows an example of a set of actions for queuing process requests that exceed resource limits updated by a constraint programming solver, according to one or more embodiments. [Figure 9] This is a block diagram showing a computer system in one or more embodiments. [Modes for carrying out the invention]
[0008] Detailed explanation In the following description, many specific details are provided for illustrative purposes to provide a complete understanding. One or more embodiments may be carried out without these specific details. Features described in one embodiment can be combined with features described in a different embodiment. In some examples, well-known structures and devices are described with reference to block diagrams to avoid unnecessarily complicating the invention. 1. Overview 2. Computing System Architecture 3. Constraint Programming Data Model and Search Instruction Generation System Architecture 4. Determining and updating resource allocation limits 5. Generation of Constraint Programming Data Models and Constraint Programming Search Commands and their Application to Constraint Programming Solvers 6. Enforcement of resource guarantees and resource limitations 7. Hardware Overview 8. Other; Extensions 1. Overview One or more embodiments include setting resource allocation limits for allocating resources to consumers within a computing system. Resource allocation limits include resource limits and resource guarantees. A resource limit is an upper limit on the number of resources a particular consumer can use at a given time. A resource guarantee is a lower limit on the number of resources a particular consumer is guaranteed to have access to at a given time. A consumer using resources beyond their guaranteed limits becomes vulnerable to disruption if resource requests from other consumers suddenly increase. As used herein, the term “vulnerability” refers to a consumer’s use of resources beyond their resource guarantees.
[0009] One or more embodiments include using constraint programming (CP) to set resource allocation limits for allocating resources to consumers in a computing system. CP is a type of declarative programming. CP is C Based on the specifications of the P-data model and optionally the CP search command, solutions to real-world problems are obtained. In contrast, imperative programming is based on the specifications of a series of steps.
[0010] A CP data model includes a set of data model elements, a domain (range) of possible values that can be assigned to each element, and one or more constraints that define the combinations of values that can be assigned to an element. Based on the CP data model, a set of values for a set of elements that satisfies all constraints is determined. This set of values for a set of elements that satisfies all constraints may be referred to herein as a "CP solution".
[0011] A CP search command leads to the assignment of a set of values to a set of data model elements that satisfy all constraints specified by the CP data model. A CP search command generates a specific sequence in which value assignments to one or more data model elements are attempted. In addition, or instead, a CP search command prioritizes certain value assignments over others for one or more data model elements. Using different CP search commands for the same CP data model may yield different CP solutions. In addition, or instead, different CP search commands 234 for the same CP data model 232 may result in different levels of efficiency and / or execution time for obtaining a CP solution.
[0012] One or more embodiments include generating a CP data model for determining resource allocation limits for allocating resources to consumers in a computing system. The CP data model includes several sets of data model elements. A set of limit elements represents resource limits for consumers. A set of guarantee elements represents resource guarantees for consumers. A set of vulnerability elements represents the number of data points indicating vulnerabilities (also called "vulnerability counts"). A particular vulnerability element represents the number of data points indicating that a particular consumer is vulnerable with respect to a particular resource guarantee. The number of such data points is based on resource usage data of a particular consumer over a particular historical period.
[0013] The CP data model further includes several constraints. The restriction-guarantee constraint relates a restriction element to a guarantee element. In the restriction-guarantee constraint, the guarantee element (for a particular consumer) is required to be equal to the restriction element (for a particular consumer) divided by the oversubscription rate, where the oversubscription rate is equal to the total of the restriction elements divided by the total number of resources. The total resource constraint relates the guarantee element to the total number of resources within the computing system. In the total resource constraint, it is necessary that the total of the guarantee elements is less than or equal to the total number of resources. The guarantee-vulnerability constraint relates a guarantee element to a vulnerability element. In the guarantee-vulnerability constraint, the vulnerability element (for a particular consumer) is required to be equal to the number of vulnerability corresponding to the guarantee value assigned (or to be assigned) to the guarantee element (for a particular consumer) based on resource usage over a historical period.
[0014] In one embodiment, the guarantee-vulnerability constraint is expressed as an element constraint. The element constraint accepts (a) an index element and (b) a series of values as inputs. The index element serves to index the series of values such that the element constraint returns a particular value corresponding to the value assigned (or to be assigned) to the index element from the series of values. In the case of the guarantee-vulnerability constraint, the index element is the guarantee element (for a particular consumer) and the series of values is the excess distribution (for a particular consumer). The excess distribution indicates the number of data points indicating that the resource usage of a particular consumer exceeds a threshold value, where the threshold value ranges from zero to the total number of resources within the computing system. The number of such data points is based on the resource usage data of a particular consumer over a particular historical period.
[0015] One or more embodiments include generating a CP search command for determining resource allocation limits for allocating resources to consumers in a computing system. In one embodiment, the CP search command includes a minimization objective function associated with the number of vulnerabilities. In one embodiment, the CP search command is to minimize the maximum value of the set of vulnerability elements. In another embodiment, the CP search command is to minimize the average of the set of vulnerability elements. In yet another embodiment, the CP search command is to minimize the sum of vulnerability elements (i.e., to minimize the total number of vulnerabilities in the computing system). In yet another embodiment, the CP search command includes a minimization objective function associated with the number of vulnerabilities and vulnerability costs, where the per-consumer vulnerability cost for a particular consumer is the product of the vulnerability coefficient for that particular consumer and the number of vulnerability elements for that particular consumer. Different consumers may be associated with different vulnerability coefficients. In one embodiment, the CP search command is to minimize the maximum per-consumer vulnerability cost. In another embodiment, the CP search command is to minimize the average per-consumer vulnerability cost. In another embodiment, the CP search command aims to minimize the total vulnerability cost per consumer (i.e., minimize the total vulnerability cost of the computing system).
[0016] One or more embodiments include applying a CP data model and a CP search directive to a CP solver to obtain resource allocation constraints. The resource manager obtains updated resource limits and / or resource guarantees from the CP solver. Based on the resource guarantees for a particular consumer, the resource manager designates resources to the particular consumer. The number of designated resources is the same as the resource guarantee. The resource manager prohibits other consumers from using the designated resources. Further, based on the resource guarantees and / or resource limits for a particular consumer, the resource manager queues or allocates new process requests made by the particular consumer. If the number of pending process requests for a particular consumer is below the resource guarantee, new process requests can be preferentially allocated to the designated resources. If the number of pending process requests exceeds the resource limit, new process requests are added to the queue of the particular consumer. Thus, the resource manager ensures that the process requests allocated to the resources are within the resource limits. If the number of pending process requests exceeds the resource guarantee and is below the resource limit, then a process request that has been removed from the queue of the particular consumer (or, if there is no queue, the new process request itself) can be allocated to the particular resources. The resource manager can interrupt the ongoing execution of process requests made by another consumer on a particular resource in order to allocate the particular resource to the process requests of a particular consumer.
[0017] The choice to use an excess distribution to model the resource allocation problem allows the CP solver to efficiently determine the optimized solution. The large amount of data incorporated into the resource usage history log is compressed into the excess distribution and logically ensures that the element constraints properly address the guaranteed limits. Furthermore, by using the excess distribution and associated element constraints, the CP solver can search for the optimized solution, perform the derivative of the objective function, and / or provide an initial estimate of the CP solution without requiring any requirements regarding the shape of the objective function.
[0018] The CP data model and CP search command enable the CP solver to efficiently determine updated resource allocation limits based on recent resource usage data. Continuously updating resource allocation limits allows computing systems to quickly adapt to changing resource usage patterns. Optimal resource allocation limits enable computing systems to... The likelihood of a Shuma vulnerability occurring and / or resources being underutilized is reduced.
[0019] One or more embodiments described herein and / or claimed herein may not be included in this summary section.
[0020] 2. Computing System Architecture Figure 1 shows a resource manager managing a computing system according to one or more embodiments. As shown in Figure 1, system 100 includes a resource manager 110, a data repository 102, a set of consumers 112, a set of resources 116, and a constraint programming (CP) solver 118. In one or more embodiments, system 100 may include more or fewer components than those shown in Figure 1. The components shown in Figure 1 may reside locally with each other or remotely with each other. The components shown in Figure 1 can be implemented in software and / or hardware. Each component may be distributed across multiple applications and / or machines. Multiple components may be combined into a single application and / or machine. An operation described for one component may instead be performed by another component.
[0021] In one or more embodiments, consumer 112 refers to hardware and / or software that generates the workload of resource 116. Examples of consumer 112 include database instances, virtual machines, and / or hardware servers. The workload generated by consumer 112 can be measured in various units, such as the number of process requests, the amount of data communicated and / or stored, and / or the duration of processing time.
[0022] In one or more embodiments, resource 116 refers to hardware and / or software that services and / or processes the workload generated by consumer 112. Examples of resource 116 include a central processing unit (CPU), disk memory, and / or communication bandwidth.
[0023] In one or more embodiments, the resource manager 110 refers to hardware and / or software configured to allocate resources 116 to a consumer 112. Allocation means assigning resource 116 to a consumer 112's request so that the resources assigned to the request can service and / or process that request. In addition, or instead, allocation means assigning resource 116 to consumer 112 so that resources designated for one consumer cannot service requests of other consumers.
[0024] In one embodiment, the resource manager 110 makes allocation decisions based on a consumer configuration 104 that includes resource limits 106 and / or resource guarantees 108. The resource limit 106 is the maximum number of resources 116 that can be allocated to the consumer 112 at any given time. The resource guarantee 108 is the minimum number of resources 116 that are guaranteed to the consumer 112 at any given time. Examples of operations for applying the resource limit 106 and / or resource guarantees 108 are further described below with reference to Figures 7 and 8.
[0025] Different consumer configurations 104 may correspond to different consumers 112. For example, one set of consumer configurations may correspond to consumer 112a, but another set may correspond to consumer 112a. The consumer configuration can support consumer 112b.
[0026] In one or more embodiments, the data repository 102 is any type of storage unit and / or device for storing data (e.g., a file system, a database, a collection of tables, or any other storage mechanism). Furthermore, the data repository 102 may include multiple different storage units and / or devices. These multiple different storage units and / or devices may or may not be of the same type, and may or may not be located at the same physical site. Furthermore, the data repository 102 may be implemented or run on the same computing system as the resource manager 110. Alternatively or in addition, the data repository 102 may be implemented or run on a computing system separate from the resource manager 110. The data repository 102 may be communicably connected to the resource manager 110 either directly or via a network. Information describing the consumer configuration 104 may be implemented across any components within the system 100. However, this information is illustrated within the data repository 102 for clarity and illustrative purposes.
[0027] In one or more embodiments, the CP solver 118 refers to hardware and / or software configured to determine a CP solution taking into account the CP data model 232 and the CP search command 234. Further embodiments and / or examples of the CP solver 118 are described below with reference to Figures 2A and 2B.
[0028] In one or more embodiments, the system 100 in Figure 1 and the system 200 in Figure 2A may be combined into a single system configured to manage the allocation of resources 116 to the consumer 112. The CP solver 118 in Figure 1 is equivalent to the CP solver 218 in Figure 2A. The resource limits 106 and resource guarantees 108 (used by the resource manager 110) in Figure 1 are equivalent to the resource limits 206 and resource guarantees 208 (output by the CP solver 218) in Figure 2A, respectively.
[0029] 3. Constraint Programming Data Model and Search Instruction Generation System Architecture Figures 2A and 2B illustrate a constraint programming data model and search command generation system according to one or more embodiments. As shown in Figure 2A, system 200 includes an excess distribution generator 222, a model and command generator 224, a data repository 202, a CP solver 218, resource limits 206, and resource guarantees 208. In one or more embodiments, system 200 may include more or fewer components than those shown in Figure 2A. The components shown in Figure 2A may be local or remote to each other. The components shown in Figure 2A may be implemented in software and / or hardware. Each component may be distributed across multiple applications and / or machines. Multiple components may be combined into a single application and / or machine. An operation described for one component may instead be performed by another component. As described above, system 100 in Figure 1 and system 200 in Figure 2A may be combined into a single system configured to allocate resources to a consumer.
[0030] In one or more embodiments, the data repository 202 is any type of storage unit and / or device for storing data (e.g., a file system, a database, a collection of tables, or any other storage mechanism). Furthermore, the data repository 202 may include multiple different storage units and / or devices. These multiple different storage units and / or devices may be of the same type or not, and may be located at the same physical site or distributed across the same physical site. It may not be located there. Furthermore, the data repository 202 may be implemented or run on the same computing system as the excess distribution generator 222, the model and command generator 224, and / or the CP solver 218. Alternatively or in addition, the data repository 202 may be implemented or run on a separate computing system from the excess distribution generator 222, the model and command generator 224, and / or the CP solver 218. The data repository 202 may be communicatively coupled to the excess distribution generator 222, the model and command generator 224, and / or the CP solver 218, either directly or via a network.
[0031] Information describing the resource usage dataset 226, excess distribution 228, vulnerability coefficient 230, CP data model 232, and / or CP search directive 234 may be implemented across any component within the system 200. However, this information is illustrated within the data repository 202 for clarity and explanatory purposes.
[0032] In one or more embodiments, a resource usage dataset 226 for a particular consumer includes data points indicating the amount of resources used by that particular consumer over a period of time. The resource usage dataset 226 may be stored in the form of logs, spreadsheets, and / or any other format. Resource usage can be measured in units of number (e.g., the number of CPUs used), capacity (e.g., the amount of memory space used), time (e.g., the duration of use of a communication channel), and / or other units. The resource usage dataset 226 may include data points at specific time intervals that are fixed and / or variable. Each data point is an actual measurement and / or an aggregated measurement. An actual measurement is the resource usage actually measured at a particular time. An aggregated measurement refers to the result of some operation (e.g., summing or averaging) on the actual measurements across a time window. As an example, a monitoring agent may detect the actual number of CPUs being used per second. The actual measurements of CPU usage starting at time=0 seconds and ending at time=9 seconds could be 2, 3, 4, 4, 4, 2, 3, 4, 5, 6. The monitoring agent can determine a moving average of the number of CPUs used every 3 seconds. At time=2, the average is calculated based on the actual measurements at time=0, time=1, and time=2. Therefore, starting at time=2 and ending at time=9 seconds, the average CPU usage could be 3.00, 3.67, 4.00, 3.33, 3.00, 3.00, 4.00, and 5.00. The monitoring agent may report the average CPU usage as an "aggregated measurement".
[0033] In one or more embodiments, the excess distribution 228 represents the number of data points indicating that a particular consumer's resource usage exceeds a critical value, which ranges from zero to the total number of resources in the computing system. The number of such data points is based on a resource usage dataset 226 of a particular consumer over a specific historical period.
[0034] As an example, a resource usage dataset may include the following data points: January 1, 2021, 10:00 AM: 2 CPUs, January 1, 2021, 10:01 AM: 3 CPUs, January 1, 2021, 10:02 AM: 4 CPUs, January 1, 2021, 10:03 AM: 4 CPUs, January 1, 2021, 10:04 AM: 4 CPUs, January 1, 2021, 10:05 AM: 2 CPUs, January 1, 2021, 10:06 AM: 3 CPUs, January 1, 2021, 10:07 AM: 4 CPUs, January 1, 2021, 10:08 AM: 5 CPUs, January 1, 2021, 10:09 AM: 6 CPUs.
[0035] Therefore, the excess distribution of the resource usage dataset from 10:00 AM to 10:09 AM on January 1, 2021, is as follows: Critical value 0: 10 data points exceeding the critical value. Critical value 1: 10 data points exceeding the critical value, Critical value 2: 8 data points exceeding the critical value, Critical value 3: 6 data points exceeding the critical value. Critical value 4: Two data points exceeding the critical value. Critical value 5: One data point exceeding the critical value, Critical value 6: 0 data points exceeding the critical value.
[0036] An excess distribution omits information greater than the minimum critical value (i.e., 6) associated with no excess. Since zero data points above the critical value of 6 necessarily imply zero data points above the critical values of 7, 8, 9, and 10, such omission of information is permissible. Additionally, or alternatively, such omission is desirable to ensure that resource guarantees are below the minimum critical value associated with no excess.
[0037] In one or more embodiments, the vulnerability coefficient 230 represents a cost coefficient associated with a particular consumer's vulnerability data point. For example, a consumer associated with an uninterruptible workload may be associated with a higher vulnerability coefficient than a consumer associated with an interruptible workload. A consumer (and / or process with a higher priority) associated with a higher priority may be associated with a higher vulnerability coefficient than a consumer associated with a lower priority. A consumer associated with a higher revenue may be associated with a higher vulnerability coefficient than a consumer associated with a lower revenue. If it is assumed that the vulnerability coefficients 230 for all consumers are the same, the vulnerability coefficients 230 for all consumers may be expressed as "1".
[0038] In one or more embodiments, the CP data model 232 refers to a specific organization, structure, and / or representation of information. The CP data model 232 declaratively expresses the combined characteristics of a problem with respect to constraints. The CP data model 232 may be implemented as a software data structure. The software data structure is machine-readable. The CP data model 232 may include a set of data and / or instructions readable by one or more devices, including a hardware processor. The CP data model 232 may be used as an input parameter to hardware and / or software components, such as a CP solver 218.
[0039] Referring to Figure 2B, the CP data model 232 includes a set of data model elements and a domain of possible values that can be assigned to each element. A data model element cannot be assigned a value that is not within the domain of the data model element. Data model elements can be implemented as arrays, vectors, linked lists, tables, software variables, constants, and / or other software data structures or data objects.
[0040] In one embodiment, the CP data model 232 includes several sets of data model elements. The set of limiting elements 252 represents resource limits for the consumer. The domain of each limiting element 252 ranges from zero to the total number of resources in the computing system.
[0041] The set of 254 assurance elements represents resource assurance for the consumer. The domain of each assurance element 254 ranges from zero to the total number of resources in the computing system. That is the case.
[0042] The set of 256 vulnerability elements represents the number of vulnerabilities related to a consumer based on resource usage over a specific historical period. The domain of each vulnerability element 256 ranges from zero to the total number of data points for the corresponding consumer within that specific historical period.
[0043] For example, a computing system could include eight CPUs and four database instances. The resource usage log for each database instance might show one data point per minute. The period in question could be from 10:00 AM to 10:09 AM on January 1, 2021. Therefore, there would be 10 data points for each consumer within the period in question.
[0044] Based on the above settings, the CP data model may have the following data model elements and corresponding domains. L[0]:{0, 1, 2, 3, 4, 5, 6, 7, 8} L[1]:{0, 1, 2, 3, 4, 5, 6, 7, 8} L[2]:{0, 1, 2, 3, 4, 5, 6, 7, 8} L[3]:{0, 1, 2, 3, 4, 5, 6, 7, 8} G[0]:{0, 1, 2, 3, 4, 5, 6, 7, 8} G[1]:{0, 1, 2, 3, 4, 5, 6, 7, 8} G[2]:{0, 1, 2, 3, 4, 5, 6, 7, 8} G[3]:{0, 1, 2, 3, 4, 5, 6, 7, 8} V[0]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} V[1]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} V[2]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} V[3]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} L[i] represents a limiting element, G[i] represents a guaranteeing element, V[i] represents a vulnerability element, and i corresponds to the database instance.
[0045] Optionally, the CP data model 232 includes a set of consumer-specific cost elements 258. The set of consumer-specific cost elements 258 represents the respective costs for each consumer resulting from vulnerabilities over a specific historical period. The consumer-specific cost element 258 for a particular consumer represents the product of (a) the vulnerability coefficient for that particular consumer and (b) the number of vulnerabilities for that particular consumer over a specific historical period. The domain of the consumer-specific cost element 258 for a particular consumer includes the product of (a) the vulnerability coefficient for that particular consumer and (b) each value within the domain of vulnerability elements for that particular consumer.
[0046] For example, a computing system could include eight CPUs and four database instances. The resource usage log for each database instance might contain one data point per minute. The period in question could be from 10:00 AM to 10:09 AM on January 1, 2021. The vulnerability coefficients for the four database instances could be 0.9, 0.6, 0.7, and 0.8, respectively.
[0047] As mentioned above, the CP data model may contain the following vulnerability elements. V[0]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} V[1]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} V[2]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} V[3]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.
[0048] The domain of the per-consumer cost element in the first database instance CC[0] can include the product of 0.9 and each of the values in the domain of V[0]. Therefore, the CP data model may include the following per-consumer cost elements: CC[0]:{0.0, 0.9, 1.8, 3.6, 4.5, 5.4, 6.3, 7.2, 8.1, 9.0} CC[0]:{0.0, 0.6, 1.2, 1.8, 2.4, 3.0, 3.6, 4.2, 4.8, 5.4, 6.0} CC[0]:{0.0, 0.7, 1.4, 2.1, 2.8, 3.5, 4.2, 4.9, 5.6, 6.3, 7.0} CC[0]:{0.0, 0.8, 1.6, 2.4, 3.2, 4.0, 4.8, 5.6, 6.4, 7.2, 8.0}.
[0049] Optionally, the CP data model 232 includes a total cost element 260. The total cost element 260 represents the total cost of consumers in the computing system due to vulnerabilities over a specific historical period. The domain of the total cost element 260 indicates the possible total cost value for consumers in the computing system. The minimum value within a domain is zero. The maximum value within a domain is the sum of the products of (a) each vulnerability coefficient for each consumer and (b) the total number of data points for each consumer over a specific historical period.
[0050] As an example, the computing system may include eight CPUs and four database instances. The resource usage log for each database instance may show one data point per minute per consumer. The period in question may be from 10:00 AM to 10:09 AM on January 1, 2021. The vulnerability coefficients for the four database instances may be 0.9, 0.6, 0.7, and 0.8, respectively. Therefore, the maximum value of the total cost element domain is 0.9 × 10 + 0.6 × 10 + 0.7 × 10 + 0.8 × 10 = 30.
[0051] In one embodiment, the CP data model 232 includes several constraints. The constraints define combinations of values that can be assigned to a set of data model elements (such as the restriction element 252, assurance element 254, and vulnerability element 256 described above).
[0052] The set of restriction-guarantee constraints 262 relates link element 252 to guarantee element 254. The restriction-guarantee constraint 262 requires that guarantee element 254 (for a particular consumer) is equal to the restriction element 252 (for a particular consumer) divided by the oversubscription rate, which is equal to the sum of restriction elements 252 divided by the total number of resources. The restriction-guarantee constraint 262 can be expressed as follows:
[0053]
number
[0054] L[i] represents the limiting element 252, G[i] represents the guaranteeing element 254, L[c] represents the set of limiting elements, and i corresponds to a specific consumer within the computing system.
[0055] The total resource constraint 264 relates the guarantee elements 254 to the total number of resources in the computing system. The total resource constraint 264 requires that the sum of the guarantee elements 254 is less than or equal to the total number of resources. The total resource constraint 264 can be expressed as follows:
[0056]
number
[0057] G[c] represents a set of 254 guarantee elements. The set of assurance-vulnerability constraints 266 relates assurance elements 254 to vulnerability elements 256. The assurance-vulnerability constraints 266 require that the vulnerability elements 256 (for a particular consumer) are equal to the number of vulnerabilities corresponding to the assurance value assigned (or should be assigned) to assurance element 254 (for a particular consumer) based on resource usage over a specific historical period.
[0058] In one embodiment, the assurance-vulnerability constraint 266 is represented as an element constraint. The element constraint accepts (a) an index element and (b) a set of values as input. The index element input is responsible for indexing the set of values so that the element constraint returns a specific value from the set of values that corresponds to the value assigned (or should be assigned) to the index element. In the case of assurance-vulnerability constraint 266, the index element is assurance element 254 and the set of values is excess distribution 228. Furthermore, the index element outputs to vulnerability element 256.
[0059] As an example, a CP data model can include the following data model elements: G[0]:{0, 1, 2, 3, 4, 5, 6, 7, 8} V[0]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} G[0] represents a guarantee element corresponding to a specific consumer, and V[0] represents a vulnerability element corresponding to the same specific consumer.
[0060] The excess distribution could be {10, 8, 7, 6, 4, 1, 1, 0}. The guarantee-vulnerability constraint can be expressed as an element constraint, having (a) G[0] as the input index element, (b) the excess distribution as the set of input values, and (c) V[0] as the output element. Based on the element constraint, the value "0" assigned to G[0] maps to "10" in a specific set of values. Therefore, the value "10" is returned. The value "1" assigned to G[0] maps to "8" in a specific set of values. Therefore, the value "8" is returned. The value "2" assigned to G[0] maps to "7" in a specific set of values. Therefore, the value "7" is returned. The returned value must be within the domain of V[0].
[0061] Optionally, a set of 268 consumer-specific cost constraints relates the consumer-specific vulnerability coefficient and vulnerability elements 256. The consumer-specific cost constraint 268 (for a particular consumer) is the product of (a) the vulnerability coefficient (for that particular consumer) and (b) the vulnerability elements (for that particular consumer). The consumer-specific cost constraint 268 can be expressed as follows: CC[i] = VF[i] × V[i] CC[i] represents the cost element per consumer, VF[i] represents the vulnerability coefficient, V[i] represents the vulnerability element, and i corresponds to the consumer within the computing system.
[0062] Optionally, the total cost constraint 270 relates the vulnerability coefficients and vulnerability elements 256 across all consumers in the computing system. The total cost constraint 270 is the inner product of (a) the vulnerability coefficients and (b) the set of vulnerability elements. The total cost constraint 270 can be expressed as follows: TC = VF·V TC represents the total cost element, VF represents the consumer vulnerability coefficient, and V represents the vulnerability element.
[0063] Alternatively, if consumer-specific cost elements are used, the total cost constraint 270 can be expressed as follows:
[0064]
number
[0065] TC represents the total cost elements, and CC[c] represents the set of cost elements for each consumer.
[0066] Referring back to Figure 2A, the CP search command 234 is a command that guides the CP solver 218 in the process of determining the optimal CP solution given a particular CP data model 232. The CP search command 234 guides the assignment of a set of values to a set of data model elements that satisfy all constraints, as specified by the CP data model 120. The CP search command 234 prioritizes certain value assignments over others for one or more data model elements. Different CP search commands 234 for the same CP data model 232 may result in different CP solutions. In addition, or instead, different CP search commands 234 for the same CP data model 232 may result in different levels of efficiency and / or execution time for obtaining the CP solution. The CP search command 234 may be implemented as a software data structure. The CP search command 234 may contain a set of computer-readable instructions. The CP search command 234 may be used as an input parameter to hardware and / or software components such as the CP solver 218.
[0067] In one embodiment, the CP search command 234 specifies an objective function, which is a minimization function associated with the number of vulnerabilities and / or vulnerability costs of the computing system.
[0068] The CP search directive 234 may include minimizing the maximum value of the vulnerability elements 256. In addition, or instead, the CP search directive 234 may include minimizing the sum of the vulnerability elements 256. In addition, or instead, the CP search directive 234 may include minimizing the mean (e.g., mean, median, or mode) of the vulnerability elements 256.
[0069] If vulnerability costs are considered, the CP search directive 234 may include minimizing the maximum value of the per-consumer cost element 258. In addition, or instead, the CP search directive 234 may include minimizing the sum of the per-consumer cost elements 258 (or total cost elements 260). In addition, or instead, the CP search directive 234 may include minimizing the mean (e.g., mean, median, or mode) of the per-consumer cost elements 258. Additional and / or alternative minimization functions may be used.
[0070] In one or more embodiments, the model and command generator 224 refers to hardware and / or software configured to generate a CP data model 232 and / or a CP lookup command 234. An example of operation for generating a CP data model 232 is described below with reference to Figure 4. An example of operation for generating a CP lookup command 234 is described below with reference to Figures 5A to 5C.
[0071] In one or more embodiments, the model and command generator 224 is one or more It is implemented on a digital device. The term "digital device" generally refers to any hardware device that includes a processor. A digital device can also refer to a physical device that runs an application or virtual machine. Examples of digital devices include computers, tablets, laptops, desktops, netbooks, servers, web servers, network policy servers, proxy servers, general-purpose machines, function-specific hardware devices, mainframes, televisions, content receivers, set-top boxes, printers, mobile phones, smartphones, and personal digital assistants (PDAs).
[0072] In one or more embodiments, the CP solver 218 refers to hardware and / or software configured to determine a CP solution using constraint programming techniques, given a CP data model 232 and a CP search command 234. The CP solution specifies resource limits 206 and / or resource guarantees 208. Constraint programming techniques include back-tracking algorithms, forward-checking algorithms, and constraint propagation, among others. An example of operation for applying the CP data model 232 and the CP search command 234 to the CP solver 218 is described below with reference to Figure 6.
[0073] 4. Determining and updating resource allocation limits One or more operations shown in Figure 3 can be modified, rearranged, and / or omitted collectively. Therefore, the specific sequence of operations shown in Figure 3 should not be interpreted as limiting the scope of one or more embodiments.
[0074] Figure 3 illustrates an example of a set of actions, in one or more embodiments, for updating resource limits and / or resource guarantees for consumers within a computing system based on resource usage over a specific historical period.
[0075] One or more embodiments include determining whether a trigger has occurred to update resource limits and / or resource guarantees (operation 302). A model and command generator (such as model and command generator 224 in Figure 2A) determines whether a trigger has occurred to update resource limits and / or resource guarantees. The trigger may be based on a schedule. For example, the schedule may specify that resource limits should be updated every three hours. In addition, or instead, the trigger may be based on the workload of one or more consumers in the computing system. For example, a trigger may be that the workload of a consumer exceeds a threshold. Another trigger may be that the total workload of consumers exceeds another threshold. Additional and / or alternative triggers may also be used.
[0076] One or more embodiments include determining consumers and resources within a computing system (operation 304). A tracking system (which may be included in the resource manager 110 in Figure 1 and / or the model and command generator) tracks consumers and resources within the computing system via a notification system, a heartbeat system, and / or other approaches. The tracking system stores the identifiers of consumers and resources in a data repository. The model and command generator retrieves the identifiers of consumers and resources within the computing system from the data repository.
[0077] One or more embodiments include obtaining a consumer resource usage dataset over a specific period of time (operation 306). A monitoring system (which may, but may not, be included in the model and command generator) monitors the consumer's resource usage. The monitoring system detects, aggregates, measures, and / or otherwise obtains per consumer resource usage at regular time intervals (e.g., once per second). The monitoring system obtains each resource usage measurement in each consumer's respective resource usage dataset. A single data point is created. The monitoring system stores the resource usage dataset in a data repository. Models and command generators retrieve the resource usage dataset from the data repository.
[0078] In one embodiment, in each iteration to obtain updated resource limits and / or resource guarantees, the model and command generator use resource usage datasets from the most recent historical period. Thus, the CP data model used to determine resource limits and / or resource guarantees is generated based on the most recent historical usage data. Consequently, resource limits and / or resource guarantees are adaptively updated based on changes in consumer resource usage of the computing system.
[0079] As an example, resource limits and resource guarantees for a computing system may be updated hourly. In the first iteration at 11:00 AM on January 1, 2021, the model and command generator can generate a CP data model based on the resource usage log from 10:00 AM to 10:59 AM on January 1, 2021. Thus, resource limits and / or resource guarantees may be determined based on the resource usage data from 10:00 AM to 10:59 AM. In the second iteration at 12:00 PM on January 1, 2021, the model and command generator can generate a new CP data model based on the resource usage log from 11:00 AM to 11:59 AM on January 1, 2021. Thus, resource limits and / or resource guarantees may be determined based on the resource usage data from 11:00 AM to 11:59 AM. Thus, resource limits and / or resource guarantees may be continuously updated to be optimal based on the latest resource usage.
[0080] In one embodiment, in each iteration to obtain updated resource limits and / or resource guarantees, the model and command generator use a forecast of resource usage for the next period. The forecast of resource usage may be based on (a) a resource usage dataset from the most recent historical period, (b) a resource usage dataset from a historical period that shares characteristics with the next period, and / or (c) other coefficients. A historical period that shares characteristics with the next period may, for example, be a historical period associated with the same time, day of the week, and / or day of the month as the next period. Thus, resource limits and / or resource guarantees are adaptively updated based on the forecast of resource usage by consumers of the computing system.
[0081] One or more embodiments include determining a consumer vulnerability coefficient (operation 308). A user and / or application specifies a consumer vulnerability coefficient. The vulnerability coefficient is stored in a data repository. Models and directive generators retrieve the vulnerability coefficient from the data repository.
[0082] One or more embodiments include generating an excess distribution based on a resource usage dataset (operation 310). An excess distribution generator (such as excess distribution generator 222 in Figure 2A, which may but may not be included in the model and command generators) generates an excess distribution based on a resource usage dataset.
[0083] First, the excess distribution generator determines the number of data points in a resource usage dataset for a specific consumer within a given historical period. The excess distribution generator continues the iterative process until the number of data points within the given historical period becomes the upper limit of the iterations. The excess distribution generator starts from a critical value of zero. The excess distribution generator counts the number of data points indicating resource usage exceeding the critical value. The excess distribution generator records the number in relation to the critical value. The excess distribution increases the critical value, and the above process is repeated. The excess distribution generator repeats the above process until the critical value becomes greater than the number of data points within the given historical period. Therefore, the excess distribution generator obtains pairs of values. Each pair contains a critical value and the number of data points indicating resource usage exceeding the critical value. The pairs of values form the excess distribution for a particular consumer. The excess distribution generator also iterates the above process for each consumer to obtain the excess distribution for each consumer.
[0084] The excess distribution generator stores the consumer's excess distribution in a data repository. The model and instruction generator retrieve the consumer's excess distribution from the data repository.
[0085] One or more embodiments include generating a CP data model (operation 312). The model and command generator generates the CP data model. An example of the operation for generating the CP data model is described further below with reference to Figure 4.
[0086] One or more embodiments include generating a CP search command (operation 314). The model and command generator generate a CP search command. Examples of operations for generating a CP search command are further described below with reference to Figures 5A to 5C. Each of Figures 5A to 5C shows an operation for generating a different alternative CP search command. Other CP search commands not described with reference to Figures 5A to 5C may also be used instead.
[0087] One or more embodiments include inputting a CP data model and CP lookup commands into a CP solver to obtain resource limits and / or resource guarantees (operation 316). The model and command generator inputs the CP data model and CP lookup commands into a CP solver (such as CP solver 218 in Figure 2A). An example of the operation of applying the CP data model and CP lookup commands to the CP solver is further described below with reference to Figure 6.
[0088] One or more embodiments include applying resource limits and / or resource guarantees to a computing system (operation 318). The CP solver outputs resource limits and / or resource guarantees to consumers. A resource manager (such as resource manager 110 in Figure 1) manages the computing system using resource limits and / or resource guarantees. An example of the operation of specifying resources to consumers based on resource guarantees is described below with reference to Figure 7. An example of the operation of queuing process requests that exceed resource limits is described below with reference to Figure 8.
[0089] 5. Generation of Constraint Programming Data Models and Constraint Programming Search Commands and their Application to Constraint Programming Solvers One or more operations shown in Figures 4 to 6 can be collectively modified, rearranged, and / or omitted. Therefore, the specific sequence of operations shown in Figures 4 to 6 should not be construed as limiting the scope of one or more embodiments.
[0090] Figure 4 shows an example of a set of operations for generating a constraint programming data model according to one or more embodiments.
[0091] One or more embodiments include specifying a set of limiting elements, each limiting element representing a resource limit for each consumer (operation 402). A model and command generator (such as model and command generator 224 in Figure 2A) specifies a set of limiting elements. The set of limiting elements can be represented as a vector, array, and / or other data structure. Each limiting element represents a resource limit for each consumer in the computing system.
[0092] Furthermore, the model and command generator specify the domains of the limiting elements. Each domain can be represented as a vector, array, and / or other data structure. The domain ranges from zero to the total number of resources in the computing system.
[0093] One or more embodiments include specifying a set of guarantee elements, each guarantee element representing a resource guarantee for each consumer (operation 404). The model and command generator specify a set of guarantee elements. The set of guarantee elements can be represented as a vector, array, and / or other data structure. Each guarantee element represents a resource guarantee for each consumer in the computing system.
[0094] Furthermore, the model and command generator specify the domain of the assurance element. Each domain can be represented as a vector, array, and / or other data structure. The range of each assurance element's domain is from zero to the total number of resources in the computing system.
[0095] One or more embodiments include specifying a set of vulnerability elements, where each vulnerability element represents the number of vulnerabilities for each consumer (operation 406). The model and directive generator specify a set of vulnerability elements. The set of vulnerability elements can be represented as a vector, array, and / or other data structure. Each vulnerability element represents the number of vulnerabilities for each consumer in the computing system.
[0096] Furthermore, the model and directive generator specify the domains of the vulnerability elements. Each domain can be represented as a vector, array, and / or other data structure. The domains of each vulnerability element range from zero to the total number of data points for the corresponding consumer within a given historical period.
[0097] In one embodiment, a user and / or application can specify a particular privileged consumer within a computing system. The user and / or application can specify a specific maximum number of vulnerabilities for the privileged consumer. The model and directive generator can set the domain of vulnerability elements for the privileged consumer according to the specified maximum value. In addition, or alternatively, the user and / or application can also specify a specific minimum value for resource assurance for the privileged consumer. The model and directive generator can set the domain of assurance elements for the privileged consumer according to the specified minimum value.
[0098] For example, a computing system could include eight CPUs and four database instances. The resource usage log for each database instance might show one data point per minute. The period covered could be from 10:00 AM to 10:09 AM on January 1, 2021.
[0099] If the maximum number of vulnerabilities is not specified externally, the set of vulnerability elements could be as follows: V[0]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} V[1]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} V[2]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} V[3]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.
[0100] However, if the user specifies that no vulnerabilities can exist in the first database, the only number of vulnerabilities allowed in the first database is 0. Any values greater than 0 are removed from the domain of vulnerability elements in the first database. Therefore, the set of vulnerability elements can be as follows: V[0]:{0} V[1]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} V[2]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} V[3]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.
[0101] As another example, a computing system could include eight CPUs and four database instances. The resource usage log for each database instance might show one data point per minute. The period covered could be from 10:00 AM to 10:09 AM on January 1, 2021.
[0102] Without an external minimum value for resource guarantees, the set of guarantee elements could be as follows: G[0]:{0, 1, 2, 3, 4, 5, 6, 7, 8} G[1]:{0, 1, 2, 3, 4, 5, 6, 7, 8} G[2]:{0, 1, 2, 3, 4, 5, 6, 7, 8} G[3]:{0, 1, 2, 3, 4, 5, 6, 7, 8}.
[0103] However, if the user specifies that the resource guarantee for the first database must be 4 or higher, then 0, 1, 2, and 3 are not acceptable values for the resource guarantee. Therefore, 0, 1, 2, and 3 are removed from the domain of guarantee elements for the first database. Thus, the set of guarantee elements can be as follows: G[0]:{4, 5, 6, 7, 8} G[1]:{0, 1, 2, 3, 4, 5, 6, 7, 8} G[2]:{0, 1, 2, 3, 4, 5, 6, 7, 8} G[3]:{0, 1, 2, 3, 4, 5, 6, 7, 8}.
[0104] As another example, the two examples above can be combined so that both assurance and vulnerability elements are modified by externally specified requirements. Combining the two examples above, the CP data model may include the following assurance and vulnerability elements: G[0]:{4, 5, 6, 7, 8} G[1]:{0, 1, 2, 3, 4, 5, 6, 7, 8} G[2]:{0, 1, 2, 3, 4, 5, 6, 7, 8} G[3]:{0, 1, 2, 3, 4, 5, 6, 7, 8} V[0]:{0} V[1]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} V[2]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10} V[3]:{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}.
[0105] One or more embodiments include specifying a set of cost elements and / or a total cost element per consumer (operation 408).
[0106] Optionally, the model and command generator specify a set of cost elements per consumer. This set of cost elements per consumer can be represented as a vector, array, and / or other data structure. Each cost element per consumer represents the vulnerability cost for each consumer in the computing system. Furthermore, the model and command generator specify domains for the cost elements per consumer. Each domain can be represented as a vector, array, and / or other data structure. A domain of cost elements per consumer for a particular consumer includes (a) the vulnerability coefficient for that particular consumer and (b) each product of each value within the domain of vulnerability elements for that particular consumer.
[0107] Optionally, the model and command generator specify a total cost element. The total cost element represents the total vulnerability cost of the computing system. Furthermore, the model and command generator specify a domain for the total cost element. A domain can be represented as a vector, array, and / or other data structure. The domain of the total cost element indicates the possible total cost value for consumers in the computing system. The minimum value within a domain is zero. The maximum value within a domain is the sum of the products of (a) each vulnerability coefficient for each consumer and (b) the total number of data points for each consumer over a given historical period.
[0108] One or more embodiments include specifying constraints that relate limiting elements and guaranteeing elements based on the total number of resources (operation 410).
[0109] The model and command generator generate a set of restriction-guarantee constraints. Restriction-guarantee constraint 262 requires that the guarantee element (for a particular consumer) is equal to the restriction element (for a particular consumer) divided by the oversubscription rate, which is equal to the sum of the restriction elements 252 divided by the total number of resources.
[0110] Furthermore, the model and command generator generate a total resource constraint. The total resource constraint 264 requires that the sum of the guarantee elements 254 is less than or equal to the total number of resources.
[0111] One or more embodiments include specifying a constraint that requires assigning a number of vulnerabilities to each vulnerability element that corresponds to a guarantee value assigned to the guarantee element (operation 412). The model and directive generator generate a constraint that requires assigning a number of vulnerabilities to each vulnerability element that corresponds to a guarantee value assigned to the guarantee element, based on resource usage over a specific historical period.
[0112] The model and command generator generate element constraints. The model and command generator input guarantee elements for a particular consumer as index elements into the element constraints. The model and command generator input the excess distribution for a particular consumer (determined, for example, in operation 310 in Figure 3) as a set of values into the element constraints. The model and command generator set the vulnerability elements for a particular consumer as output elements of the element constraints.
[0113] The model and command generator iterate the above process for each consumer to generate a set of guarantee-vulnerability constraints.
[0114] One or more embodiments include specifying one or more constraints relating vulnerability factors to vulnerability elements on a per-consumer and / or across consumers (operation 414).
[0115] Optionally, the model and command generator generate constraints relating vulnerability coefficients and vulnerability elements for each consumer. The model and command generator set constraints requiring that the per-consumer vulnerability cost element for a given consumer is equal to the product of (a) the vulnerability coefficient for that consumer and (b) the vulnerability element for that consumer. The model and command generator iterate through the above process for each consumer to obtain a set of per-consumer cost constraints.
[0116] Optionally, the model and directive generator generate constraints relating vulnerability coefficients to vulnerability elements across all consumers of the computing system. The model and directive generator set constraints requiring that the total vulnerability cost element is equal to the inner product of (a) the vulnerability coefficient for the consumer and (b) the set of vulnerability elements for the consumer. Alternatively, if per-consumer cost elements are used, the model and directive generator A constraint is set requiring that the total vulnerability cost element is equal to the sum of the consumer's individual cost elements.
[0117] One or more embodiments include generating a CP data model that includes data model elements and constraints (operation 416). The model and instruction generator generates a CP data model. The CP data model includes limiting elements, guaranteeing elements, vulnerability elements, and optionally per-consumer cost elements and / or total cost elements. The CP data model further includes limiting-guarantee constraints, total resource constraints, guaranteeing-vulnerability constraints, and optionally per-consumer cost constraints and / or total cost constraints.
[0118] A CP data model can be stored as a software data structure. A CP data model may include one or more arrays, vectors, linked lists, tables, software variables, constants, and / or data objects. A CP data model may include a set of data and / or instructions that can be read by one or more devices, including a hardware processor.
[0119] Figures 5A to 5C illustrate examples of sets of operations for generating constraint programming search commands according to one or more embodiments. Each of Figures 5A to 5C shows operations for generating different alternative CP search commands.
[0120] Referring to Figure 5A, one or more embodiments include generating an objective function that minimizes the maximum value of the set of cost elements per consumer (operation 502). A model and command generator (such as model and command generator 224 in Figure 2A) generates an objective function that minimizes the maximum value of the set of cost elements per consumer. The objective function can be expressed as follows:
[0121] min(max(CC)) CC represents a set of cost elements for each consumer.
[0122] One or more embodiments include generating a CP lookup command that includes an objective function (operation 504). The model and command generator generate a CP lookup command. The CP lookup command includes an objective function. The CP lookup command may be stored as a software data structure. The CP lookup command may include one or more arrays, vectors, linked lists, tables, software variables, constants, and / or data objects. The CP lookup command may include a set of instructions that can be executed by one or more devices, including a hardware processor.
[0123] Referring to Figure 5B, one or more embodiments include generating an objective function that minimizes the sum of the set of cost elements per consumer (operation 506). The model and command generator generate an objective function that minimizes the sum of the set of cost elements per consumer. The objective function can be expressed as follows:
[0124]
number
[0125] CC[i] represents the cost element for each consumer, where i corresponds to the consumer within the computing system.
[0126] Alternatively, the objective function can also be expressed as follows: min(TC) TC represents the total cost element.
[0127] One or more embodiments include generating a CP search command that includes an objective function (operation 508). An example of an operation for generating a CP search command is described above with reference to operation 504.
[0128] Referring to Figure 5C, one or more embodiments include generating an objective function that minimizes the mean of a set of cost elements per consumer (operation 510). The model and instruction generator generate an objective function that minimizes the mean of a set of cost elements per consumer. The objective function can be expressed as follows:
[0129] min(ave(CC)) CC represents a set of cost elements for each consumer.
[0130] One or more embodiments include generating a CP search command that includes an objective function (operation 512). An example of an operation for generating a CP search command is described above with reference to operation 504.
[0131] Figure 6 shows an example of a set of operations for applying a constraint programming data model and a constraint programming search directive to a constraint programming solver according to one or more embodiments. The operations in Figure 6 assume a CP search directive that specifies minimizing the total cost of the computing system. However, modified operations can also be used to realize different CP search directives.
[0132] One or more embodiments include a CP solver accepting a CP data model and a CP search command as input parameters (operation 602). The CP solver (e.g., CP solver 218 in Figure 2A) accepts a CP data model and a CP search command as input parameters. An example of an operation for generating a CP data model is described above with reference to Figure 4. An example of an operation for generating a CP search command is described above with reference to Figures 5A to 5C.
[0133] One or more embodiments include determining whether the CP solver can return a CP solution based on the CP data model and the CP search directive (operation 604). The CP solver applies one or more constraint programming techniques, as guided by the CP search directive, to the CP data model. The CP solver 132 determines a CP solution based on the CP data model and the CP search directive, or determines that no CP solution exists that satisfies all constraints of the CP data model.
[0134] Constraint programming techniques include, for example, constraint propagation, backtracking search algorithms, and / or forward checking algorithms. Constraint propagation involves removing inconsistent values from the domain of data model elements in the CP data model. Backtracking search algorithms involve stepping through candidate CP solutions, such as abandoning a candidate as soon as the CP solver determines it cannot complete a candidate that provides a valid CP solution. Forward checking algorithms involve attempts to predict the impact of choosing one candidate over other candidate CP solutions and determining the order in which candidate CP solutions are tried. In one embodiment, the CP solver updates the domain of data model elements as it traverses the data model elements and assigns values to the data model elements. The CP solver removes values from the domain that are no longer possible, taking into account the pre-assignments made so far. The CP solver violates any constraints in the CP data model. Remove the value from the domain.
[0135] As an example, a CP solver can determine a CP solution by traversing each of the set of constraint elements specified by the CP data model. The CP solver may start with a particular constraint element. Values from the domain of that particular constraint element are pre-assigned to that constraint element. Next, the CP solver removes values from the domains of other data model elements in the CP data model that conflict with the values pre-assigned to that particular constraint element. If this pre-assignment violates a constraint specified by the CP data model (for example, if the domain of another data model element is completely removed), then another value from the domain of that particular constraint element is pre-assigned to that constraint element. If all values from the domain of that particular constraint element are tried and the constraint is not satisfied, a reassignment of one or more previously traversed constraint elements is performed. In particular, if values from the domain of a previously traversed constraint element were pre-assigned to that previously traversed constraint element, then, based on the need for reassignment, another value from the domain of a previously traversed constraint element is pre-assigned to that previously traversed constraint element. Then, the assignment of that particular constraint element is retried.
[0136] Furthermore, the CP solver can be derived from the objective function specified by the CP search command. Based on the CP search command, the CP solver can determine the order in which value assignments to one or more restriction elements and / or guarantee elements are attempted. If the assignment of value A to a particular restriction element is attempted before value B and a valid CP solution is found, the assignment of value A is completed regardless of whether the assignment of value B reaches a valid CP solution. Therefore, the assignment of value A takes precedence over the assignment of value B.
[0137] Therefore, the CP solver can traverse each constraint element until a constraint value is assigned to each constraint element from its respective domain without violating the constraints. The CP solver may decide that the prior assignment is the final assignment. The CP solution may include the final assignment of constraint values to the constraint elements and / or guaranteed values to the guaranteed elements.
[0138] Alternatively, the CP solver may traverse each constraint element, attempting to assign each constraint value to the constraint element until no assignment satisfies the constraint. The CP solver may then determine that there is no valid CP solution for the CP data model. The CP solver may return a message indicating that no CP solution exists.
[0139] If no CP solution is returned, one or more embodiments include using the last determined CP solution to return resource limits and / or resource guarantees (operation 614). Since no CP solution is returned in the current iteration, the CP solver retrieves the CP solution returned in the last iteration. The CP solver identifies the CP solution from the last iteration as the last determined CP solution. The CP solver also identifies the CP solution from the last iteration as the CP solution that satisfies the objective function of the CP lookup directive. If the objective function minimizes total cost, the CP solution from the last iteration is the CP solution associated with the lowest total cost (compared to other CP solutions that satisfy the constraints of the CP data model). The CP solution specifies limit values to be assigned to limit elements and / or guarantee values to be assigned to guarantee elements. The limit values are used as resource limits for consumers in the computing system. The guarantee values are used as resource guarantees for consumers in the computing system.
[0140] If there is no last determined CP solution (i.e., the CP solver is unable to return a CP solution in the first iteration of operation 602), then the CP solution generates a message indicating that no valid CP solution exists for the provided CP data model.
[0141] Conversely, if a CP solution is returned, one or more embodiments include determining whether an interruption to the iterative process has been received (operation 606). As illustrated, operations 602–612 form an iterative process to find the CP solution associated with the lowest total cost. The user and / or application may interrupt the iterative process. For example, the user may indicate through the user interface that they want the best CP solution determined so far without waiting for the iterative process to complete.
[0142] If an interruption is received, one or more embodiments include returning resource limits and / or resource guarantees using the last determined CP solution (operation 614). Since the CP solution is returned in the current iteration, the CP solver identifies the CP solution from the current iteration as the last determined CP solution. An example of operation for determining resource limits and / or resource guarantees based on the CP solution is provided in the above description of operation 614.
[0143] In one embodiment, the CP solver may receive an interruption (in operations 602-604) during the process of determining the CP solution. The interruption is received before the CP solution is returned in the current iteration. Thus, the CP solver identifies the CP solution from the last iteration as the last determined CP solution.
[0144] The last determined CP solution based on the interruption is not necessarily the CP solution associated with the lowest total cost. A request can be received to restart the iterative process to determine the CP solution associated with the lowest total cost. In response to the restart request, the iterative process can continue in operation 608.
[0145] If no interruption is received, one or more embodiments include identifying the total cost associated with the CP solution as the “current minimum total cost” (operation 608). The CP solver identifies the total cost assigned to the total cost element associated with the CP solution obtained in operation 604 of the current iteration. The total cost is identified as the “current minimum total cost”.
[0146] One or more embodiments include removing any value greater than or equal to the current minimum total cost from the domain of total cost elements (operation 610). The CP solver uses the current minimum total cost as an upper limit on the total cost values that may be assigned to the total cost elements during the next iteration. The CP solver removes values greater than or equal to the current minimum total cost from the domain of total cost elements.
[0147] For example, during the current iteration, the CP solver can return the current CP solution. The current CP solution may indicate that the total cost element is assigned a total cost value of "9". The CP solver can determine "9" as the current minimum total cost. The CP solver can determine that the current domain of the total cost element is {0, 4, 5, 8, 9, 11, 12}. The CP solver can remove total cost values greater than or equal to 9 from the domain of the total cost element. Therefore, the CP solver can change the domain of the total cost element to {0, 4, 5, 8}.
[0148] One or more embodiments include modifying the CP data model (operation 612). The CP solver modifies the CP data model to include total cost elements whose domains have been narrowed. Based on operation 610, the domains of the total cost elements include only total cost values that are below the current minimum total cost.
[0149] The CP solver iterates through operations 602-612 for the modified CP data model. In operation 602, the CP solver accepts the modified CP data model as an input parameter. In operations 604-608, the CP solver updates the current minimum total cost, assuming that the CP solver will determine a new CP solution based on the modified CP data model. The CP solver identifies the total cost value assigned to the total cost element associated with the new CP solution as the current minimum total cost. In operation 610, the CP solver removes any values greater than or equal to the current minimum total cost value from the domain of the total cost element. In operation 612, the CP solver modifies the CP data model again. The CP solver continues the iterative process until the CP solver fails to find a CP solution in operation 604 or receives an interruption in operation 606. If the CP solver fails to find a CP solution in operation 604 or receives an interruption in operation 606, as described above with reference to operation 614, the CP solver returns resource limits and / or resource guarantees using the last determined CP solution. If the CP solver completes its iterations without interruption, the last determined CP solution is the optimal solution. In other words, there is no other solution with a lower cost.
[0150] In one or more embodiments, additional and / or alternative operations for applying a constraint programming data model and search directive to a constraint programming solver may be performed based on different search techniques. Examples of various search techniques are described below.
[0151] In one embodiment, the CP data model is modified before it is first applied to the CP solver in operation 602. A specific value within the range of possible total cost values in the domain of total cost elements is determined as the initial cutoff value. The initial cutoff value may be, for example, the median of the possible total cost values. All values exceeding the initial cutoff value are removed from the domain of total cost elements. Therefore, a first run of the CP solver is required to generate a CP solution with a total cost value below the initial cutoff value. If a valid CP solution exists, setting the initial cutoff value allows the CP solver to more efficiently reach a CP solution with a lower total cost.
[0152] In one embodiment, the CP solver iterates until all possible CP solutions are found for a given CP data model. The CP solver does not change the domain of the total cost element based on previous iterations. Therefore, the CP solver may find a CP solution with a higher total cost value than a previous CP solution. After determining all possible CP solutions, the CP solver compares the total cost values associated with each possible CP solution. The CP solver then identifies the CP solution with the lowest total cost value.
[0153] In one embodiment, multiple CP solutions can be associated with the same minimum total cost. The iterative process can be modified to determine such a CP solution. In operation 610, all values greater than the current minimum total cost are removed from the domain of total cost elements (but all values equal to the current minimum total cost are retained). In operation 604, the CP solver attempts to find a CP solution that has not yet been found. If no further CP solutions are found, in operation 614, a set of last determined CP solutions with the same total cost is identified. One CP solution is selected from the set of last determined CP solutions with the same total cost. Any selection criteria can be used. As an example, the CP solver may select a CP solution from the set of last determined CP solutions with the same total cost that is associated with a resource limit that is most evenly distributed across consumers.
[0154] In one or more embodiments, additional and / or alternative operations for applying a constraint programming data model and search directives to the constraint programming solver may be performed based on various CP search directives. Examples of various CP search directives are described below.
[0155] In one embodiment, the CP search command determines the maximum value of the set of cost elements for each consumer. Specify that the cost should be minimized. Operations 602-606 and 612-614 remain the same. However, operation 608 is modified to identify the maximum value of the set of per-consumer cost elements as the "current minimum maximum per-consumer cost". Operation 610 is modified to remove any value greater than or equal to the current minimum maximum per-consumer cost from the domain of each per-consumer cost element.
[0156] In one embodiment, the CP search command specifies minimizing the average of a set of cost elements per consumer. The CP data model includes an additional data model element called the average cost element. The average cost element has a domain containing the possible average cost per consumer in the computing system. The average cost element must be equal to the sum of the cost elements per consumer divided by the total number of consumers. Operations 602-606 and 612-614 remain the same. However, operation 608 is modified to identify the value of the average cost element as the "current minimum average cost". Operation 610 is modified to remove any value greater than or equal to the current minimum average cost from the domain of the average cost element.
[0157] 6. Enforcement of resource guarantees and resource limitations One or more operations shown in Figures 7-8 can be collectively modified, rearranged, and / or omitted. Therefore, the specific sequence of operations shown in Figures 7-8 should not be construed as limiting the scope of one or more embodiments.
[0158] Figure 7 shows an example of a set of actions for specifying resources to a consumer based on resource guarantees updated by a constraint programming solver, according to one or more embodiments.
[0159] One or more embodiments include obtaining resource limits and / or resource guarantees for consumers in a computing system (operation 702). A resource manager (e.g., resource manager 110 in Figure 1) obtains resource limits and / or resource guarantees for consumers in a computing system based on a CP solution determined by a CP solver (e.g., CP solver 218 in Figure 2A). Examples of operations for determining the CP solution are described above with reference to Figure 6 and, in particular, operation 614.
[0160] One or more embodiments include assigning resources to a consumer based on resource guarantees (operation 704). The resource manager assigns resources to a consumer based on resource guarantees. In one embodiment, the resource manager assigns resources to a consumer based on resource guarantees determined by the CP solver without receiving user confirmation of the resource guarantees.
[0161] As an example, a computing system may include three database instances DB1, DB2, and DB3, and eight CPUs: CPU1, CPU2, CPU3, CPU4, CPU5, CPU6, CPU7, and CPU8. The following resource guarantees can be specified in the CP solution. In the case of DB1, 2 CPUs, In the case of DB2, 3 CPUs DB3 uses 1 CPU.
[0162] Therefore, the resource manager can assign two CPUs to DB1, three CPUs to DB2, and one CPU to DB3. Specifically, the resource manager assigns CPU1 and CPU3 to DB1, CPU4, CPU6, and CPU8 to DB2, and CPU2 to DB3. B3 can be designated. The designated resource is reserved for use by the corresponding consumer and cannot be used by other consumers in the computing system. Therefore, the consumer using the designated resource is not vulnerable to interruptions caused by requests from other consumers in the computing system. CPU5 and CPU7, on the other hand, remain undesignated and can be used for sharing between database instances.
[0163] One or more embodiments include determining whether resource limits and / or resource guarantees have been updated (operation 706). The resource manager determines whether resource limits and / or resource guarantees have been updated. If there have been updates, the resource manager re-determines the resource designation in operation 704.
[0164] Figure 8 shows an example of a set of actions for queuing process requests that exceed resource limits updated by a constraint programming solver, according to one or more embodiments.
[0165] One or more embodiments include determining that a particular consumer in the computing system has generated a new process request that requires resources in the computing system (operation 802). The resource manager (such as resource manager 110 in Figure 1) determines that a particular consumer in the computing system has generated a new process request that requires resources in the computing system. The particular consumer may send the new process request to the resource manager for scheduling. In addition, or instead, the particular consumer may send a notification message to the resource manager to inform the resource manager about the new process request.
[0166] One or more embodiments include determining the number of pending process requests made by a particular consumer (operation 804). The resource manager determines the number of process requests (including new process requests) that have been made by a particular consumer and have not yet been fully processed.
[0167] One or more embodiments include determining whether the number of pending process requests is less than or equal to the resource guarantee for a particular consumer (operation 806). The resource manager determines whether the number of pending process requests is less than or equal to the resource guarantee for a particular consumer. In one embodiment, the resource manager uses the resource guarantee determined by the CP solver as a threshold without receiving user confirmation about the resource guarantee determined by the CP solver.
[0168] If the number of pending process requests is less than or equal to the resource guarantee, one or more embodiments include allocating a specified resource to the new process request (operation 808). The resource manager allocates a resource to the new process request. In one embodiment, the resource manager is set to allocate a specified resource whenever possible. Since the number of pending process requests is less than or equal to the resource guarantee, at least one of the specified resources is available. Therefore, the resource manager allocates an available dedicated resource to the new process request.
[0169] If the number of pending process requests exceeds the resource guarantee, one or more embodiments include determining whether the number of pending process requests is greater than the resource limit for a particular consumer (operation 810). The resource manager determines whether the number of pending process requests exceeds the resource limit for a particular consumer. In one embodiment, the resource manager uses the resource limits determined by the CP solver as thresholds without receiving user confirmation about the resource limits determined by the CP solver.
[0170] If the number of pending process requests exceeds the resource limit, one or more embodiments include queuing new process requests (operation 814). The resource manager queues new process requests. Resources in the computing system are not allocated to process requests in the queue until the process requests are removed from the queue.
[0171] If the number of process requests being processed for a particular consumer falls below a resource limit, the resource manager has the option of removing process requests from that consumer's queue. If another resource is available, the resource manager can allocate the available resource to the process request being removed from the queue. If no resources are available, the resource manager may optionally suspend the ongoing execution of a particular resource for a process request made by another consumer. The resource manager allocates a particular resource to the process request being removed from the queue for a particular consumer. Alternatively, if no resources are available, the resource manager may refrain from suspending any ongoing execution. Whether or not to suspend can depend on various factors, which are described below with reference to operation 812.
[0172] If the number of pending process requests is greater than (a) a resource guarantee and less than or equal to (b) a resource limit, one or more embodiments include either allocating resources to a new process request or queuing the process request (operation 812). If at least one resource is available and the queue for a particular consumer is empty, the resource manager allocates the available resources to the new process request. If at least one resource is available and the queue for a particular consumer is not empty, the resource manager removes the process request from the top of the queue and allocates the available resources to the process request. The resource manager adds the new process request to the end of the queue.
[0173] If no resources are available, the resource manager can evaluate various factors to determine whether to interrupt the ongoing execution of a process request made by another consumer. Examples of factors include the priority level associated with a new process request made by a particular consumer and other running process requests, the priority levels associated with a particular consumer and other consumers, the time the other process request is running, the estimated remaining time until the other process request is completed, and the estimated time until the new process request made by a particular consumer is completed. Based on these various factors, the resource manager may interrupt the ongoing execution of a process request by a particular resource. The resource manager may assign a particular resource to a process request that is being removed from a particular consumer's queue (or a new process request being created by a particular consumer if the queue is empty). Alternatively, based on these various factors, the resource manager may queue the new process request and continue to wait before assigning resources to any process request made by a particular consumer.
[0174] 7. Hardware Overview According to one embodiment, the technology described herein is implemented by one or more dedicated computing devices. The dedicated computing device may be wired to perform the technology or may be permanently programmed to perform the technology, and may include one or more application-specific integrated circuits (ASICs), field-programmable gates, etc. The technology may include digital electronic devices such as FPGAs (Field-Programmable Arrays) or Network Processing Units (NPUs), or it may include one or more general-purpose hardware processors programmed to execute the technology according to program instructions in firmware, memory, other storage devices, or a combination thereof. Such a dedicated computing device may also implement the technology by combining custom wiring logic, ASICs, FPGAs, or NPUs with custom programming. The dedicated computing device may be a desktop computer system, a portable computer system, a handheld device, a network device, or any other device incorporating wiring logic and / or program logic for implementing the technology.
[0175] For example, Figure 9 is a block diagram showing a computer system 900 in which an embodiment of the present invention may be implemented. The computer system 900 includes a bus 902 or other communication mechanism for communicating information and a hardware processor 904 coupled to the bus 902 for processing information. The hardware processor 904 may be, for example, a general-purpose microprocessor.
[0176] The computer system 900 also includes main memory 906, such as random access memory (RAM) or other dynamic storage device, coupled to bus 902 for storing information and instructions executed by processor 904. Main memory 906 may also be used to store temporary variables or other intermediate information during the execution of instructions by processor 904. Once such instructions are stored in a non-temporary storage medium accessible to processor 904, they render the computer system 900 into a dedicated machine customized to perform the actions specified by the instructions.
[0177] The computer system 900 further includes a read-only memory (ROM) 908 or other static storage device coupled to the bus 902 for storing static information and instructions for the processor 904. A storage device 910, such as a magnetic disk or optical disk, is provided and coupled to the bus 902 for storing information and instructions.
[0178] The computer system 900 may be coupled to a display 912, such as a cathode ray tube (CRT), via a bus 902 to display information to the computer user. An input device 914, including alphanumeric keys and other keys, is coupled to the bus 902 to communicate information and command selections to the processor 904. Another type of user input device is a cursor control 916, such as a mouse, trackball, or cursor directional keys, to transmit directional information and command selections to the processor 904 and to control the movement of a cursor on the display 912. This input device typically has two degrees of freedom on two axes, a first axis (e.g., x) and a second axis (e.g., y), allowing the device to specify a position in a plane.
[0179] The computer system 900 can implement the techniques described herein using customized wiring logic, one or more ASICs or FPGAs, firmware and / or program logic, which, in combination with the computer system, make the computer system 900 a dedicated machine or programmable. According to one embodiment, the techniques described herein are executed by the computer system 900 in response to the processor 904 executing one or more sequences of one or more instructions contained in the main memory 906. Such instructions may be read into the main memory 906 from another storage medium, such as a storage device 910. After executing the sequence of instructions contained in the main memory 906, the processor 904 performs the process steps described herein. In alternative embodiments, wiring circuits can be used instead of, or in combination with, software instructions.
[0180] As used herein, the term “storage medium” refers to any non-temporary medium that stores data and / or instructions that cause a machine to operate in a particular way. Such storage media may include non-volatile media and / or volatile media. Non-volatile media include, for example, optical or magnetic disks such as storage device 910. Volatile media include dynamic memory such as main memory 906. Common forms of storage media include, for example, floppy disks, flexible disks, hard disks, solid-state drives, magnetic tapes or other magnetic data storage media, CD-ROMs, other optical data storage media, any physical media with a pattern of holes, RAM, PROMs, and EPROMs, FLASH-EPROMs, NVRAMs, other memory chips or cartridges, associative memory (CAM), and tertiary associative memory (TCAM).
[0181] Storage media are separate from transmission media, but can be used in combination with them. Transmission media are involved in the transfer of information between storage media. For example, transmission media include coaxial cables, copper wires, and optical fibers, including the wires that make up bus 902. Transmission media can also take the form of acoustic waves or light waves, such as those generated during radio or infrared data communications.
[0182] Various forms of media may be involved in transporting one or more sequences of one or more instructions to the processor 904 for execution. For example, the instructions may first be stored on a magnetic disk or solid-state drive of a remote computer. The remote computer may load the instructions into dynamic memory and transmit them over a telephone line using a modem. A modem local to computer system 900 may receive data over the telephone line and convert the data into an infrared signal using an infrared transmitter. An infrared detector may receive the data carried by the infrared signal, and appropriate circuitry may place that data on bus 902. Bus 902 transports the data to main memory 906, from which the processor 904 retrieves and executes the instructions. Instructions received by main memory 906 may optionally be stored in storage device 910 either before or after execution by processor 904.
[0183] The computer system 900 also includes a communication interface 918 coupled to the bus 902. The communication interface 918 provides bidirectional data communication coupled to a network link 920 connected to the local network 922. For example, the communication interface 918 may be an Integrated Services Digital Network (ISDN) card, a cable modem, a satellite modem, or a modem that provides data communication connectivity to a corresponding type of telephone line. As another example, the communication interface 918 may be a local area network (LAN) card that provides data communication connectivity to a compatible LAN. A wireless link may also be implemented. In such an implementation, the communication interface 918 sends and receives electrical, electromagnetic, or optical signals that carry digital data streams representing various types of information.
[0184] Network link 920 typically provides data communication to other data devices via one or more networks. For example, network link 920 can provide connection to data devices operated by a host computer 924 or an Internet service provider (ISP) 926 via a local network 922. The ISP 926 then provides data communication services through a global packet data communication network now commonly referred to as the “Internet” 928. Both the local network 922 and the Internet 928 use electrical, electromagnetic, or optical signals to carry digital data streams. Signals across various networks, signals on network link 920, and signals via communication interface 918 that carry digital data to and from the computer system 900 are examples of transmission media. It is a typical form.
[0185] The computer system 900 can send messages and receive data, including program code, via the network, network link 920, and communication interface 918. In the case of the internet, the server 930 can send the requested code of an application program via the internet 928, ISP 926, local network 922, and communication interface 918.
[0186] The received code may be executed by processor 904 when it is received and / or stored in memory device 910 or other non-volatile memory for later execution.
[0187] 8. Other; Extensions Embodiments include a system comprising one or more devices that include a hardware processor and are configured to perform any of the operations described herein and / or in any of the following claims.
[0188] In one embodiment, a non-temporary computer-readable storage medium comprises instructions, when executed by one or more hardware processors, causing them to perform any of the operations described herein and / or any of the claims.
[0189] Any combination of the features and functions described herein may be used according to one or more embodiments. The embodiments described in the foregoing specification refer to many specific details that may differ from implementation to implementation. Therefore, the specification and drawings should be considered illustrative, not restrictive. The sole and exclusive indicator of the scope of the invention, and what the applicant intends to be the scope of the invention, is the literal equivalent scope of the set of claims issued from this application in the particular form in which such claims are issued, including any subsequent amendments.
Claims
1. One or more non-temporary machine-readable media for storing instructions, wherein the instructions are executed by one or more processors. It is tasked with determining the set of consumers and the set of resources within the computing system. Over a specific period, the system retrieves a set of resource usage datasets corresponding to each of the aforementioned sets of consumers. A specific resource usage dataset corresponds to a specific consumer, The system generates a set of excess distributions corresponding to each of the aforementioned sets of consumers. To generate a specific excess distribution corresponding to the aforementioned specific consumer, This includes determining the number of data points in the particular resource usage dataset that indicate that resource usage by the particular consumer exceeds each of the critical values, The task is to generate a constraint programming data model. Generating a constraint programming data model is This includes specifying a set of limit elements, each representing a resource limit for the aforementioned set of consumers, The resource limit for the aforementioned particular consumer is the upper limit on the number of resources that the aforementioned particular consumer is allowed to use at a given time. This includes specifying a set of guarantee elements, each representing a resource guarantee for the aforementioned set of consumers, The resource guarantee for the aforementioned particular consumer is a minimum number of resources that the aforementioned particular consumer can access at a given time. A particular warranty element from the aforementioned set of warranty elements corresponds to the particular consumer, This includes specifying a set of vulnerability elements that represent the number of vulnerabilities in the consumer set, based on the set of resource usage datasets, The number of vulnerabilities for the aforementioned particular consumer is the number of data points indicating vulnerabilities based on the resource usage dataset for the aforementioned particular consumer over the aforementioned specific period. A specific vulnerability element from the aforementioned set of vulnerability elements corresponds to the aforementioned specific consumer, This includes specifying the set of assurance elements and the set of assurance-vulnerability constraints associated with the set of vulnerability elements, The aforementioned guarantee-vulnerability constraint for a particular consumer requires assigning a count value corresponding to the guarantee value assigned to the particular guarantee element based on the particular excess distribution to the particular vulnerability element, The program generates constraint programming search commands. Generating constraint programming search commands is This includes specifying a minimization objective function associated with the set of vulnerability elements, The constraint programming data model and the constraint programming search command are applied to the constraint programming solver to obtain at least one of the resource constraints and resource guarantees for the consumer set. One or more non-temporary machine-readable media.
2. A particular limiting element from the set of limiting elements corresponds to the particular consumer, Generating a constraint programming data model is Further including specifying the set of restriction elements and the set of restriction-guarantee constraints associated with the set of guarantee elements, The aforementioned restriction-guarantee constraint corresponding to a particular consumer requires that the particular guarantee element is equal to the particular restriction element divided by the oversubscription rate. The one or more media according to claim 1, wherein the oversubscription rate is equal to the sum of the sets of limiting elements divided by the total number of resources.
3. A particular limiting element from the set of limiting elements corresponds to the particular consumer, Generating a constraint programming data model is Further including specifying the total resource constraints and the total number of resources associated with the set of guarantee elements, The total resource constraint requires that the sum of the sets of guarantee elements is less than or equal to the total number of resources, one or more media according to claim 1.
4. The aforementioned minimization objective function is: The maximum value of the aforementioned set of vulnerability elements, The sum of the aforementioned set of vulnerability elements, and The average of the aforementioned set of vulnerability elements One or more media according to claim 1, which minimizes at least one of the following.
5. The one or more media further store instructions, and the instructions are, The system is made to obtain a set of vulnerability coefficients corresponding to each of the aforementioned sets of consumers. A specific vulnerability coefficient corresponds to the aforementioned specific consumer, Generating a constraint programming data model is Further including specifying a set of per-consumer cost elements representing the costs incurred by each consumer due to the vulnerability over the specified period, wherein a particular per-consumer cost element corresponds to a particular consumer, Further comprising specifying a set of per-consumer cost constraints associated with the set of vulnerability coefficients and the set of vulnerability elements, wherein the per-consumer cost constraint corresponding to the particular consumer requires that the per-consumer cost element of the particular consumer is equal to the product of (a) the particular vulnerability coefficient and (b) the particular vulnerability element. The minimization objective function is further associated with the set of cost elements for each consumer, one or more media according to claim 1.
6. The aforementioned minimization objective function is: The maximum value of the aforementioned set of cost elements for each consumer, The sum of the aforementioned set of cost elements for each consumer, and The average of the aforementioned set of cost elements for each consumer One or more media according to claim 5, which minimizes at least one of the following.
7. The one or more media further store instructions, and the instructions are, The system is made to obtain a set of vulnerability coefficients corresponding to each of the aforementioned sets of consumers. A specific vulnerability coefficient corresponds to the aforementioned specific consumer, Generating a constraint programming data model is Further including specifying a total cost element that represents the total cost incurred by the consumer due to the vulnerability over the aforementioned specific period, Further comprising specifying a total cost constraint associated with the set of vulnerability coefficients and the set of vulnerability elements, wherein the total cost constraint requires that the total cost element is equal to the inner product of (a) the set of vulnerability coefficients and (b) the set of vulnerability elements, The one or more media according to claim 1, wherein the minimization objective function is further associated with the total cost element.
8. The one or more media further store instructions, and the instructions are, The system is made to obtain a set of vulnerability coefficients corresponding to each of the aforementioned sets of consumers. A specific vulnerability coefficient corresponds to the aforementioned specific consumer, Generating a constraint programming data model is Further including specifying a set of per-consumer cost elements representing the costs incurred by each consumer due to the vulnerability over the specified period, wherein a particular per-consumer cost element corresponds to a particular consumer, Further including specifying a total cost element that represents the total cost incurred by the consumer due to the vulnerability over the specified period, Further comprising specifying a set of per-consumer cost constraints associated with the set of vulnerability coefficients and the set of vulnerability elements, wherein the per-consumer cost constraint corresponding to the particular consumer requires that the per-consumer cost element of the particular consumer is equal to the product of (a) the particular vulnerability coefficient and (b) the particular vulnerability element. Further comprising specifying a total cost constraint associated with the set of vulnerability coefficients and the set of vulnerability elements, wherein the total cost constraint requires that the total cost elements are equal to the sum of the set of cost elements per consumer, The minimization objective function is further associated with (a) the set of cost elements per consumer, and (b) at least one of the total cost elements, according to claim 1.
9. The aforementioned assurance-vulnerability constraints are expressed as elemental constraints, The aforementioned specific guarantee element is used as an input index element to the element constraint, The aforementioned specific excess distribution is used as the set of values input to the element constraint, and The specific vulnerability element is used as an output to the element constraint, one or more media according to claim 1.
10. The set of resource usage datasets over the specified period includes resource usage data measured over a historical period, one or more media according to claim 1.
11. The set of resource usage datasets over a specific period includes projected resource usage data over a future period, one or more media according to claim 1.
12. The one or more media further store instructions, and the instructions are, One or more media according to claim 1, which causes the particular consumer to specify the number of sets of resources equal to the resource guarantee determined for the particular consumer by the constraint programming solver.
13. The resource designated for the particular consumer cannot be used by other consumers in the set of the consumer, according to claim 12, one or more media.
14. The one or more media further store instructions, and the instructions are, The program determines whether the number of pending process requests made by the aforementioned particular consumer is greater than the resource limit determined for the aforementioned particular consumer by the constraint programming solver. One or more media according to claim 1, which, in response to determining that the number of pending process requests exceeds the resource limit, cause the new process request made by the particular consumer to be added to a queue rather than allocating resources to a new process.
15. One or more media according to claim 14, wherein no resources are allocated to any process requests within the queue.
16. The one or more media further store instructions, and the instructions are, Over a second period, the system is made to obtain a second set of resource usage datasets corresponding to each of the aforementioned sets of consumers. Based on the resource usage dataset of the second set, the system generates an excess distribution of the second set corresponding to each of the consumer sets. The system generates a second constraint programming data model based on the second set of excess distributions. One or more media according to claim 1, wherein at least the second constraint programming data model is applied to the constraint programming solver to obtain at least one of updated resource limits and updated resource guarantees for the set of consumers.
17. The constraint programming solver periodically updates at least one of the resource limits and resource guarantees for the consumer set based on an updated resource usage dataset, one or more media according to claim 1.
18. The one or more media further store instructions, and the instructions are, The system is made to obtain a set of vulnerability coefficients corresponding to each of the aforementioned sets of consumers. A specific vulnerability coefficient corresponds to the aforementioned specific consumer, A particular limiting element from the set of limiting elements corresponds to the particular consumer, Generating a constraint programming data model is Further including specifying the set of restriction elements and the set of restriction-guarantee constraints associated with the set of guarantee elements, The aforementioned restriction-guarantee constraint corresponding to a particular consumer requires that the particular guarantee element is equal to the particular restriction element divided by the oversubscription rate. The oversubscription rate is equal to the sum of the set of limiting elements divided by the total number of resources. Further including specifying the total resource constraints and the total number of resources associated with the set of guarantee elements, The aforementioned total resource constraint requires that the sum of the sets of guarantee elements is less than or equal to the total number of resources. Further including specifying a set of per-consumer cost elements representing the costs incurred by each consumer due to the vulnerability over the specified period, wherein a particular per-consumer cost element corresponds to a particular consumer, Further including specifying a total cost element that represents the total cost incurred by the consumer due to the vulnerability over the specified period, Further comprising specifying a set of per-consumer cost constraints associated with the set of vulnerability coefficients and the set of vulnerability elements, wherein the per-consumer cost constraint corresponding to the particular consumer requires that the per-consumer cost element of the particular consumer is equal to the product of (a) the particular vulnerability coefficient and (b) the particular vulnerability element. Further including specifying a total cost constraint associated with the set of vulnerability coefficients and the set of vulnerability elements, the total cost constraint includes, (i) the total cost element is equal to the dot product of (a) the set of vulnerability coefficients and (b) the set of vulnerability elements, and (ii) The total cost element is equal to the sum of the set of cost elements for each consumer. At least one of the following is required: The aforementioned minimization objective function is: The maximum value of the aforementioned set of vulnerability elements, The sum of the aforementioned set of vulnerability elements, and The average of the aforementioned set of vulnerability elements, The maximum value of the aforementioned set of cost elements for each consumer, The sum of the aforementioned sets of cost elements for each consumer, The average of the aforementioned set of cost elements for each consumer, and The aforementioned total cost elements, Minimize at least one of the following: The aforementioned assurance-vulnerability constraints are expressed as elemental constraints, The aforementioned specific guarantee element is used as an input index element to the element constraint, The aforementioned specific excess distribution is used as the input set of values to the element constraint, and The aforementioned specific vulnerability element is used as the output to the element constraint, The set of resource usage datasets over a specific period includes at least one of (a) resource usage data measured over a historical period, and (b) resource usage data projected over a future period. The constraint programming solver causes the particular consumer to specify the number of sets of resources equal to the resource guarantee determined for that particular consumer, The resources designated for the aforementioned specific consumer cannot be used by other consumers in the aforementioned set of consumers. The program determines whether the number of pending process requests made by the aforementioned particular consumer is greater than the resource limit determined for the aforementioned particular consumer by the constraint programming solver. In response to determining that the number of pending process requests exceeds the resource limit, instead of allocating resources to the new process, the new process request made by the particular consumer is added to the queue. No resources were allocated to any process requests within the aforementioned queue. Over a second period, the system is made to obtain a second set of resource usage datasets corresponding to each of the aforementioned sets of consumers. Based on the resource usage dataset of the second set, the system generates an excess distribution of the second set corresponding to each of the consumer sets. The system generates a second constraint programming data model based on the second set of excess distributions. Apply at least the second constraint programming data model to the constraint programming solver to obtain at least one of the updated resource limits and updated resource guarantees for the set of consumers, The constraint programming solver periodically updates at least one of the resource limits and resource guarantees for the consumer set based on an updated resource usage dataset, one or more media according to claim 1.
19. A method comprising the operation described in any one of claims 1 to 18.
20. A system including a hardware processor and configured to perform the operations described in any one of claims 1 to 18.
21. A system comprising means for performing the operation described in any one of claims 1 to 18.