Login| Sign Up| Help| Contact|

Patent Searching and Data


Title:
COMPARATIVE ADVANTAGE RESOURCE ALLOCATOR
Document Type and Number:
WIPO Patent Application WO/2017/138909
Kind Code:
A1
Abstract:
Examples herein involve allocation of resources. In examples herein, a comparative advantage analysis is perform to allocate computing resources to run computing processes. An examples method involves receiving a set of computing processes to be allocated to a plurality of computing resources, determining execution characteristics of each of the computing processes of the set of computing processes when executed on configurations of the computing resources of the plurality of computing resources, and allocating the set of computing processes to the plurality of computing resources based on a comparative advantage analysis of the execution characteristics.

Inventors:
HUBERMAN BERNARDO (US)
SHARMA PUNEET (US)
Application Number:
PCT/US2016/016922
Publication Date:
August 17, 2017
Filing Date:
February 08, 2016
Export Citation:
Click for automatic bibliography generation   Help
Assignee:
HEWLETT PACKARD ENTPR DEV LP (US)
International Classes:
G06F9/50; G06F17/30
Foreign References:
US6768901B12004-07-27
US8484353B12013-07-09
US20050262509A12005-11-24
US20140089509A12014-03-27
US20150019737A12015-01-15
Attorney, Agent or Firm:
HARTMANN II, Kenneth R. et al. (US)
Download PDF:
Claims:
CLAIMS

What is claimed is:

1. A method comprising:

receiving a set of computing processes to be allocated to a plurality of computing resources;

determining execution characteristics of each of the computing processes of the set of computing processes when executed on configurations of the computing resources of the plurality of computing resources; and

allocating the set of computing processes to the plurality of computing resources based on a comparative advantage analysis of the execution characteristics.

2. The method as defined in claim , further comprising:

determining a plurality of candidate allocations based on the virtual network functions and configurations of the computing resources; and

allocating the set of virtual network functions to a configuration from one of the profiles based on the comparative advantage analysis,

3. The method as defined in claim 1 , further comprising:

referring to a knowledge database including the execution characteristics corresponding to each of the computing resources being executed on configurations of the computing resources.

4. The method as defined in claim 3, wherein the configurations of the computing resources comprise a set of available servers of the computing resources capable of executing the computing processes.

5, The method as defined in claim 1 , wherein the execution characteristics comprise at least throughput capacities corresponding to executing the computing processes on corresponding configurations of the computing resources.

8. The method as defined in claim 1 , further comprising:

performing the comparative advantage analysis by determining, from the execution characteristics, that a first allocation of the set of virtual network functions to a first configuration of the plurality of computing resources achieves a relatively greater throughput capacity than a second allocation of the set of virtual network functions to a second configuration of the plurality of computing resources; and

allocating the set of virtual network functions to corresponding resources of the first configuration according to the first allocation,

7. The method as defined in claim 1 , wherein the computing processes comprise virtual network functions.

8. A non-transitory machine readable storage medium comprising instructions that, when executed, cause a machine to at least: analyze a set of computing processes and a set of computing resources; retrieving, from a database, execution characteristics to run each of the computing processes of the set of computing processes on each of the computing resources of the set of computing resources; and

allocating the computing resources to run corresponding computing processes based on a comparative advantage analysis of the execution characteristics.

9. The non-transitory machine readable storage medium of claim 8, wherein the instructions, when executed, further cause the machine to:

determine candidate allocations based on the set of computing processes and set of computing resources; and

rank the candidate allocations based on the comparative advantage analysis execution characteristics. 0. The non-transitory machine readable storage medium of claim 8, wherein the computing processes comprise virtual network functions. . The non-transitory machine readable storage medium of claim 8, wherein the computing resources comprise a server or a virtual machine.

12. An apparatus comprising:

an allocation analyzer to: receive an allocation request comprising a set of computing processes and a set of computing resources of a system, and determine a set of candidate allocations based on the set of computing processes and computing resources, the candidate allocations mapping the computing processes to the computing resources;

a characteristics analyzer to:

retrieve execution characteristics for the candidate allocations from a knowledge database, and

rank the candidate allocations based on a comparative advantage analysis of the execution characteristics; and a process mapper to:

select a highest ranked candidate allocation that meets execution constraints from the allocation request, and allocate the computing resources of the selected candidate allocation to run the corresponding computing processes of the candidate allocation. 3. The apparatus of claim 1 , wherein the characteristics analyzer ranks the candidate allocation based on the comparative advantage analysis of the execution characteristics by determining the order of candidate allocations based on throughput capacity for the system for each candidate allocation.

14. The apparatus of claim 11 , wherein the computing processes comprise virtual network functions.

15. The apparatus of claim 1 1 , wherein the computing resources comprise a server or a virtual machine.

Description:
COMPARATIVE ADVANTAGE RESOURCE ALLOCATOR

BACKGROUND

[0001] Systems or networks of computing resources may be used to process and execute a variety of computing processes, applications, and functions. Further, the systems of resources may include a variety of computing devices, such as various types of servers, computers, network modules, etc. Resource allocation methods distribute the computing processes, applications, and functions among the computing resources.

BRIEF DESCRIPTION OF THE DRAWINGS

[0002] FIG. 1 is a schematic diagram of an example resource allocation system, including an example compare allocator implemented in accordance with an aspect of this disclosure.

[0003] FIG. 2 a block diagram of an example compare allocator that may be used to implement the compare allocator of FIG, 1 in accordance with an aspect of this disclosure.

[0004] FIG. 3 is an example allocation diagram illustrating example allocation performed by an example compare allocator, which may be implemented by the compare allocator of FIG. 2, in accordance with an aspect of this disclosure.

[0005] FIG. 4 illustrates an example implementation of a knowledge database accessible by the compare allocator of FIG. 2.

[0006] FIG. 5 is a flowchart representative of example machine readable instructions that may be executed to implement the compare allocator 110 of FIG. 2.

[0007] FIG. 6 is a block diagram of an example processor platform capable of executing the instructions of FIG. 5 to implement the compare allocator of FIG. 2. [0008] Wherever possible, the same reference numbers will be used throughout the drawing(s) and accompanying written description to refer to the same or like parts,

DETAILED DESCRIPTION

[0009] Examples herein involve allocating computing resources to run computing processes using a comparative advantage analysis. In examples herein, a compare allocator determines candidate allocations based on a set of computing processes and a set of computing resources received in an allocation request (e.g., from a user, process, application, etc.) and selects a candidate allocation that has a comparative advantage over other candidate allocations based on execution characteristics corresponding to running the computing processes on the respective computing resources.

[0010]As the usage and variety of computing processes (e.g., virtual network functions) and computing resources (e.g., servers, computers, virtual machines, etc.) increases, efficient allocation of the computing resources to run the computing processes can provide both performance and cost effective benefits. Although, a computing process may be allocated to a particular computing resource rather than others because that computing resource has an absolute advantage over the others (e.g., that computing resource can run the computing process faster or more efficiently than others), it may not necessarily provide the best results for a resource allocation system (or system of computing resources) as a whole. For example, that selected computing resource may be overloaded, or that computing process when considered with other computing processes may be allocated to other computing resources to enable the other computing processes to run efficiently. Accordingly, examples herein provide a comparative advantage analysis for optimal allocation of computing resources. In examples herein, a first computing resource has a comparative advantage over a second computing resource when running a computing process if an execution characteristic (e.g., throughput) is increased relatively to the second machine running the computing process. [0011] An example method includes receiving a set of computing processes to be allocated to a plurality of computing resources, determining execution characteristics of each of the computing processes of the set of computing processes when executed on configurations of the computing resources of the plurality of computing resources, and allocating the set of computing processes to the plurality of computing resources based on a comparative advantage analysis of the execution characteristics,

[0012] FIG. 1 is a schematic diagram of an example resource allocation system 100, including an example compare allocator 1 10, constructed in accordance with examples herein. The example resource allocation system 100 of FIG. 1 includes the compare allocator 110, a knowledge database 120, an allocation requester 130, and a plurality of computing resources 140. The example plurality of computing resources 140 may be referred to herein as a system of computing resources 140. In examples herein, the allocation requester 130 provides computing processes (e.g., virtual network functions (VNFs), applications, etc.) along with other associated execution requests to the compare allocator 1 10, which then allocates configurations of the plurality of computing resources 140 to run the computing processes based on the information in the knowledge database 120 and the associated execution requests. The example compare allocator 110 may determine the

configurations based on a comparative advantage analysis of the information in the knowledge database 120.

[0013] The example knowledge database 120 may be any type of data structure (e.g., table, hash table, index, etc.) and/or storage device that stores information used by the compare allocator 1 10 to allocate computing processes to the computing resources 140, For example, the knowledge database 120 may store execution characteristics, such as processing speeds, processing capacity, etc, corresponding to running (or processing) the computing processes on a plurality of configurations of the computing resources 140. The example knowledge database 120 may be loaded with the execution characteristics prior to the compare allocator 1 10 receiving/allocating computing processes and/or after allocating the computing processes. Accordingly, the knowledge database 120 may store historical data based on execution of computing processes in various configurations and/or be updated with feedback information (e.g., following or while computing processes are executed by the computing resources 140).

[0014] The example allocation requester 130 sends requests to the compare allocator 110 that computing processes be distributed to the computing resources 140 (e.g., those selected to be allocated to the computing resources) by the compare allocator 110, The example allocation requester 130 may be implemented by (or include) a user interface (e.g., an input device (e.g., a keyboard, mouse, touchscreen display), an output device (e.g., a display device, speakers, etc.) etc.), such that a user may submit the requests to the compare allocator 1 10. The example requests may include the computing processes (e.g., VNFs, applications, etc.) to be distributed to allocated resources from the system of computing resources 140, a set of resources (e.g., a number of servers, types of servers, virtual machines, etc.) that are to be allocated for the computing resources, and feasibility/execution constraints (e.g., thresholds, execution sequences, etc.) that are to be considered by the compare allocator 110 when allocating configurations of the computing resources 140 for the computing processes.

[0015]The example computing resources 140 of FIG. 1 (or system of computing resources 140) includes a pool of computing resources. For example, the computing resources 140 may be a heterogeneous pool of resources that include various types of servers, computers, virtual machines, or any other type of computing devices or component. Accordingly, each of the computing resources 140 may vary in processing speed, storage, etc.

depending on the computing process (e.g., VNF, application, etc.) that it is executing and/or other computing resources being used to execute all or portions of the computing process, in examples herein, the computing resources 140 may be divided, combined, or arranged into configurations allocated by the compare allocator 110. As used herein, a configuration of the computing resources may include a portion of a processing resource, all of a processing resource, or a plurality of computing resources 140 (or a plurality of portions of the computing resources 140).

[0018] Accordingly, the compare allocator 1 10 determines an appropriate allocation of the computing resources 140 to process computing resources using the knowledge database 120. As further described below, the compare allocator 110 determines a configuration of the computing resources 140 that has a comparative advantage over other potential candidate configurations to effectively process the computing processes. In examples herein, a configuration of the plurality of computing resources that has a comparative advantage over other possible configurations of the plurality of computing resources 40 may be considered an optimal configuration for allocation.

[0017] FIG. 2 is a block diagram of an example implementation of a compare allocator 110, which may be used to implement the compare allocator 110 of FIG. 1. The example compare allocator 10 of FIG. 2 includes an allocation analyzer 210, a characteristics analyzer 220, and a process mapper 230. A communication bus 240 may be used to facilitate communication between the allocation analyzer 210, the characteristics analyzer 220, and the process mapper 230. In examples herein, the allocation analyzer 210 determines candidate configurations for allocation the plurality of computing resources 140 to execute computing processes (e.g., VNFs, applications, etc.) received from the allocation requester 130. The characteristics analyzer 220 compares information from the knowledge database 120 corresponding to the candidate configurations and ranks the candidate configurations in order (e.g., based on comparative advantages between the candidate configurations). The process mapper 230 allocates the computing processes of the request to the highest ranked configuration that satisfies execution constraints (or feasibility constraints) included in the request.

[0018] The example allocation analyzer 210 of FIG. 2 receives/retrieves allocation requests from the allocation requester 130 of FIG. 1. The example allocation analyzer 210 may analyze the allocation requests to identify computing processes that are to be distributed to the computing resources 140 for processing. In examples herein, the allocation requests may include the computing processes, a specified set of computing resources (e.g., based on type, identifier, configurations, etc.) that are to be used in processing the computing resources, feasibility constraints (e.g., threshold capacities, speeds, completion times, etc.), and sequence or pairing constraints (e.g., which computing processes are to be executed by a same resource or a separate resources, which computing processes are to be executed simultaneously or sequentially, etc.). Based on the ailocation requests (e.g., using the set of computing processes, a set of computing resources of the computing resources 140, etc.), the ailocation analyzer 2 0 may determine candidate configurations that may be allocated to the computing processes of the requests, in some examples, the allocation analyzer 210 may refer to the knowledge database to determine whether such configurations exist based on the set of computing resources received in the ailocation requests. The ailocation analyzer 210 may provide the candidate configurations and/or develop mapping profiles of the candidate configurations to the characteristics analyzer 220 to determine and analyze execution characteristics for the configurations to process the computing processes. The example mapping profiles may be candidate mappings of the computing processes to potential configurations.

[0019] In some examples, if specified configurations in the request are not included in the knowledge database 120, the compare allocator 110 may request that a new entry for such configurations be added to the knowledge database. Information (e.g., execution characteristics) corresponding to the new configurations may then be loaded into the knowledge database 120 after a period of time (e.g., after monitoring or determining execution characteristics of the computing processes via the specified configurations).

[0020] The example characteristics analyzer 220 of FIG, 2 refers to the knowledge database 120 of FIG. 1 to analyze information corresponding to the candidate configurations and/or candidate mapping profiles to rank the potential mapping profiles. In examples herein, the characteristics analyzer 220 may perform a comparative advantage analysis (see below discussion in connection with FIG. 3) to determine which of the candidate configurations and/or mapping profiles would provide a comparative advantage over other candidate

«-■·.

- Ό - configurations and/or mapping profiles when processed by the computing resources 140. The characteristics analyzer 220 may rank the candidate configurations or mapping profiles based on the comparative advantage that each has over the other (or vice versa) using the execution characteristics in the knowledge database. For example, the ranking may be determined by ordering the candidate allocations based on a throughput capacity for the system of resources 40. Such a comparative advantage may provide a greater throughput capacity (can process more data in a given time period) for the system of resources 140 when taking into consideration the set of computing processes and set of computing resources in the allocation request from the allocation requester 130. Furthermore, additional considerations may be made, such as whether the computing resources 140 are currently executing other processes not included in the instant allocation request.

[0021] The example process mapper 230 of FIG. 2 analyzes the ranked candidate configurations or mapping profiles from the characteristics analyzer 220 and determines a best mapping (e.g., an optimal mapping) based on satisfaction of the constraints provided in the allocation request. For example, the process mapper 230 may determine whether execution characteristics for a top ranked configuration of the computing resources 140 can satisfy any feasibility or sequential constraints received in the allocation request. If so, then the top ranked configuration may be selected, and the corresponding computing resources may be allocated appropriately to process the computing processes of the allocation request. If the top ranked configuration does not satisfy the constraints of the allocation request, the process mapper 230 analyzes the next highest rank configuration, and so on. Accordingly, the process mapper 230 maps the computing processes to configurations of the computing resources that provide a greatest comparative advantage and satisfies execution constraints among the set of computing processes of an allocation request.

[0022] While an example manner of implementing the compare allocator

110 of FIG. 1 is illustrated in FIG. 2, at least one of the elements, processes and/or devices illustrated in FIG. 2 may be combined, divided, re-arranged, omitted, eliminated and/or implemented in any other way. Further, the allocation analyzer 210, the characteristics analyzer 220, the process mapper 230, and/or, more generally, the example compare allocator 110 of FIG. 2 may be implemented by hardware and/or any combination of hardware and executable instructions (e.g., software and/or firmware). Thus, for example, any of the allocation analyzer 210, the characteristics analyzer 220, the process mapper 230, and/or, more generally, the example compare allocator 110 could be implemented by at least one of an analog or digital circuit, a logic circuit, a programmable processor, an application specific integrated circuit (ASIC), a programmable logic device (PLD) and/or a field programmable logic device (FPLD). When reading any of the apparatus or system claims of this patent to cover a purely software and/or firmware implementation, at least one of the allocation analyzer 210, the characteristics analyzer 220, or the process mapper 230 is/are hereby expressly defined to include a tangible machine readable storage device or storage disk such as a memory, a digital versatile disk (DVD), a compact disk (CD), a Blu-ray disk, etc. storing the executable

instructions. Further still, the example compare allocator 110 of FIG. 2 may include at least one element, process, and/or device in addition to, or instead of, those illustrated in FIG. 2, and/or may include more than one of any or all of the illustrated elements, processes and devices.

[0023] FIG. 3 is an example allocation diagram illustrating an example allocation by a compare allocator 110, which may be implemented by the compare allocator 110 of FIG. 2. in the illustrated example of FIG. 3, the allocation requester 130 requests that a set of servers 334 (or configurations of servers, including SERVER CONFIGi and SERVER CONFIG2) be allocated to execute two computing processes 331 , 332 ( VNF1 and VNF2) under a set of constraints 336 (e.g., threshold capacity, execution time, sequential constraints, etc.). In examples herein, a goal of the compare allocator 110 may be to determine an allocation to optimize (e.g., maximize, minimize, etc.) an execution characteristic (e.g., throughput capacity, execution time, etc.) for the server set 334 (or a portion of the computing resources of the server set 334) to execute the computing processes 331 , 332, given the set of constraints 338. In FIG. 3, using the following analysis, the compare allocator 1 0 allocates server configurations 341 , 342 (SERVER CONFiGi and SERVER CONF!G 2 ) to process/handle execution of the computing processes 331 , 332. Although only two computing processes, VNFi and VNF2, and two computing resources, SERVER CONFiGi and SERVER CONFIG2, are shown in FIG. 3, examples herein may apply to any number of computing processes or any number computing resources. For example, SERVER CONF!Gi and SERVER

CONFIG2 may have been selected from a plurality of server configurations in the server set 334 for allocation.

[0024] In the illustrated example of FIG. 3, compare allocator 1 10 identifies the computing processes 331 , 332 that are to be processed by particular computing resources identified in the server set 334. The example server set 334 may include a list of computing resources (e.g., servers, computers, etc.) that may be used. The example list may include identifiers (e.g., addresses, computing resource types, computing resource threshold characteristics/specifications, etc.) for the computing resources that indicate which computing resources are to be used in the allocation. In examples herein, the compare allocator 110 may determine which servers (e.g., from the plurality of computing resources 140) are to be allocated to execute the computing processes 331 , 332. The compare allocator 1 10 may determine candidate allocations based on the server set 334 and the computing resources 331 , 332. For example, a candidate allocation may be a potential mapping of computing processes to computing resources identified by the server set 334. in FIG. 3, a first candidate allocation may include SERVER CONFIG1 being allocated to VNF1 and SERVER CONFIG2 being allocated to VNF2 and a second candidate allocation may include SERVER CONFIG2 being allocated to VNFi and SERVER CONFIGi being allocated to VNF2. The compare allocator 110 may further identify other candidate allocations that include other computing resources accessible to the compare allocator 1 0 or identified in the server set 334 that do not include the server configurations 341 , 342.

[0025] As an example analysis in FIG. 3, let u be representative of the n x m matrix formed based on n computing processes and m computing resources (e.g., servers, computers, etc.) (e.g., which may correspond to N computing processes and M computing resources of FIG, 4), Accordingly, an entry may represent a fraction of a computing resource / ' being allocated to run a given computing process j. For example a given computing resource (e.g., a server) may perform N computing processes (though this may not be desirable).

Further, let U be a feasible allocation set (e.g., an allocation set that satisfies the execution constraints requested by the allocation requester 30). The feasible allocation set U may be determined by the characteristics analyzer 220 and/or the process mapper 230 based on execution characteristics, availability of computing resources 140, and implementations of the computing processes requested, in examples herein, allocation of a portion of the 'th computing resource (e.g., processing power, or central processing unit (CPU) core) to run a computing process j, a feasible allocation set may be represented as:

[0026] Further, letting x be a non-negative m- vector whose Ah

component x, corresponds to an execution characteristic (e.g., capacity). From the following, /¾ measures an effectives of a computing resource / to run a computing process j corresponding to a given execution characteristic:

¾ = htjUij - J = ... . .

(2)

[0027] More specifically, referring to the example of FIG. 3, which includes two computing processes 331 , 332 to be allocated to two computing resources 341 , 342(or configurations), the compare allocator 110 may use the following analysis to select the computing resources 341 , 342 and allocate the computing resources to run the computing processes 331 , 332.

[0028] After identifying candidate allocations, the compare allocator 110 of FIG. 3 may refer to a knowledge database, such as the knowledge database 400 of FIG. 4, to determine execution characteristics for the candidate allocations. FIG. 4 illustrates an example knowledge database 400, which may be used to implement the knowledge database 120 of FIG. 1. The compare allocator 1 10 of FIG. 3 may refer to the knowledge database 400 of FIG, 4 to identify execution characteristics B (e.g., throughput capacity, execution time, execution speed, etc.) for the server configurations 341 , 342 to execute the computing processes 331 , 332. In FIG. 4, execution characteristics B,y are stored for candidate mappings (or candidate allocations), where ; refers to the computing resource (SERVER CONFIGi to SERVER CON FIG ) and j refers to the computing process (e.g., VNFi to VN FN). Accordingly, knowledge database 400 may include a data structure, such as a table, that stores execution characteristics B/y for N computing processes (VNFi to VN FN) to be executed, respectively, by M computing resources (SERVER CONFIGi to SERVER

[0029] Thus, in the examples of FIGS. 3 and 4, let B,y be a measure of capacity (e.g., processing rate) for the computing resource / ' to run (process) computing process In the example of FIG. 3, the compare allocator 10 may determine that SERVER CONFIGi has a comparative advantage over SERVER CONFIG2 to run VNFi : if

which would further indicate that SERVER CONFIG2 has a comparative advantage over SERVER CONFIGi to run VNF2. Accordingly, in optimal or base-case scenario the compare allocator 1 10 seeks to identify a candidate allocation in which U12 or u∑i would be equal to or nearest zero.

[0030] From the above analysis and example of FIG. 3, which illustrates two computing resources and two computing processes, the comparative advantage analysis performed by the compare allocator 1 10 may be generalized to:

in which, for the computing resources /Ί , h and computing processes " i , j2, one of h , k or j ' i, ]2 would be equal to or near zero (e.g., within a threshold of zero). Accordingly, the compare allocator 110 may rank candidate allocations using the above generalized comparative analysis.

[0031] Accordingly, in examples herein, the compare allocator 110 determines which candidate configurations (e.g., the server configurations 341 , 342) provide a comparative advantage over other possible candidate

configurations using the execution characteristics of the knowledge database 400. The example execution characteristics of the knowledge database 400 may be loaded generated based on historical data and/or by using

characterization frameworks. In some examples, the compare allocator 110 may provide feedback to the knowledge database 400 by updating the execution characteristics based on allocations performed by the compare allocator 1 10.

[0032] A flowchart representative of example machine readable instructions for implementing the compare allocator 1 0 of FIG. 1 is shown in FIG. 5. in this example, the machine readable instructions comprise a program/process for execution by a processor such as the processor 612 shown in the example processor platform 800 discussed below in connection with FIG. 6. The program/process may be embodied in executable instructions (e.g., software) stored on a tangible machine readable storage medium such as a CD- ROM, a floppy disk, a hard drive, a digital versatile disk (DVD), a Blu-ray disk, or a memory associated with the processor 612, but the entire program/process and/or parts thereof could alternatively be executed by a device other than the processor 612 and/or embodied in firmware or dedicated hardware. Further, although the example program is described with reference to the flowchart illustrated in FIG. 5, many other methods of implementing the example compare allocator 110 may alternatively be used. For example, the order of execution of the blocks may be changed, and/or some of the blocks described may be changed, eliminated, or combined.

[0033] The example process 500 of FIG. 5 begins with an initiation of the compare allocator 110 (e.g., upon startup, upon instructions from a user, upon startup of a device or system (e.g., the resource allocation system 100), etc.). The example process 500 of FIG. 5 may be executed to allocate computing resources to computing processes in accordance with examples herein to increase efficiency (e.g., increase capacity) of a system of resources (e.g., the plurality of resources 140). At block 510 of FIG. 5, the allocation analyzer 210 receives a set of computing processes. In some examples, at block 510, the allocation analyzer 210 may additionally receive a specified set of computing resources and/or constraints (e.g., execution constraints, feasibility constraints, etc.) corresponding to the processing of the computing processes.

[0034] At block 520 of the example process 500 of FIG. 5, the

characteristics analyzer 220 determines execution characteristics of each of the computing processes of the set of computing processes when executed on configurations of the computing resources. For example, at block 520, the characteristics analyzer 220 may retrieve execution characteristics from the knowledge database 120 to determine executions characteristics when the computing processes are executed by configurations of the computing resources. In some examples, at block 520 the characteristics analyzer 220 may rank candidate allocations based on a comparative advantage analysis of the execution characteristics. For example, the ranking may be from an allocation that provides a highest throughput capacity for the plurality of resources to an allocation that provides a lowest throughput capacity. At block 530, the process mapper 230 allocates the set of computing processes to the plurality of computing resources based on a comparative advantage analysis of the execution characteristics. In examples herein, the plurality of resources may be a portion of the plurality of resources depending on the execution

characteristics and analysis by the characteristics analyzer 220. After block 530, the example process 500 ends.

[0035]As mentioned above, the example process of FIG. 5 may be implemented using coded instructions (e.g., computer and/or machine readable instructions) stored on a tangible machine readable storage medium such as a hard disk drive, a flash memory, a read-only memory (ROM), a compact disk (CD), a digital versatile disk (DVD), a cache, a random-access memory (RAM) and/or any other storage device or storage disk in which information is stored for any duration (e.g., for extended time periods, permanently, for brief instances, for temporarily buffering, and/or for caching of the information). As used herein, the term tangible machine readable storage medium is expressly defined to include any type of machine readable storage device and/or storage disk and to exclude propagating signals and to exclude transmission media. As used herein, "computer readable storage medium" and "machine readable storage medium" are used interchangeably. Additionally or alternatively, the example processes of FIG. 5 may be implemented using coded instructions (e.g., computer and/or machine readable instructions) stored on a non-transitory computer and/or machine readable medium such as a hard disk drive, a flash memory, a read-only memory, a compact disk, a digital versatile disk, a cache, a random-access memory and/or any other storage device or storage disk in which information is stored for any duration (e.g., for extended time periods, permanently, for brief instances, for temporarily buffering, and/or for caching of the information). As used herein, the term non-transitory machine readable medium is expressly defined to include any type of machine readable storage device and/or storage disk and to exclude propagating signals and to exclude transmission media.

[0038] As used herein, when the phrase "at least" is used as the transition term in a preamble of a claim, it is open-ended in the same manner as the term "comprising" is open ended. As used herein the term "a" or "an" may mean "at least one," and therefore, "a" or "an" do not necessarily limit a particular element to a single element when used to describe the element. As used herein, when the term "or" is used in a series, it is not, unless otherwise indicated, considered an "exclusive or."

[0037] FIG. 6 is a block diagram of an example processor platform 600 capable of executing the instructions of FIG. 5 to implement the compare allocator 110 of FIG. 2. The example processor platform 600 may be or may be included in any type of apparatus, such as a server, a personal computer, or any other type of computing device,

[0038] The processor platform 600 of the illustrated example of FIG. 6 includes a processor 612. The processor 6 2 of the illustrated example is hardware. For example, the processor 612 can be implemented by at least one integrated circuit, logic circuit, microprocessor or controller from any desired family or manufacturer.

[0039] The processor 612 of the illustrated example includes a local memory 613 (e.g., a cache). The processor 612 of the illustrated example is in communication with a main memory including a volatile memory 614 and a nonvolatile memory 616 via a bus 618. The volatile memory 614 may be implemented by Synchronous Dynamic Random Access Memory (SDRAM), Dynamic Random Access Memory (DRAM), RAMBUS Dynamic Random Access Memory (RDRAM) and/or any other type of random access memory device. The non-volatile memory 616 may be implemented by flash memory and/or any other desired type of memory device. Access to the main memory 614, 616 is controlled by a memory controller.

[0040] The processor platform 600 of the illustrated example also includes an interface circuit 620. The interface circuit 620 may be implemented by any type of interface standard, such as an Ethernet interface, a universal serial bus (USB), and/or a peripheral component interconnect (PCI) express interface.

[0041] In the illustrated example, at least one input device 622 is connected to the interface circuit 620. The input device(s) 622 permit(s) a user to enter data and commands into the processor 612. The input device(s) can be implemented by, for example, an audio sensor, a microphone, a camera (still or video), a keyboard, a button, a mouse, a touchscreen, a track-pad, a trackball, isopoint and/or a voice recognition system.

[0042] At least one output device 624 is also connected to the interface circuit 620 of the illustrated example. The output device(s) 624 can be implemented, for example, by display devices (e.g., a light emitting diode (LED), an organic light emitting diode (OLED), a liquid crystal display, a cathode ray tube display (CRT), a touchscreen, a tactile output device, a light emitting diode (LED), a printer and/or speakers). The interface circuit 620 of the illustrated example, thus, may include a graphics driver card, a graphics driver chip or a graphics driver processor. [0043] The interface circuit 620 of the illustrated example also includes a communication device such as a transmitter, a receiver, a transceiver, a modem and/or network interface card to facilitate exchange of data with external machines (e.g., computing devices of any kind) via a network 626 (e.g., an Ethernet connection, a digital subscriber line (DSL), a telephone line, coaxial cable, a cellular telephone system, etc.).

[0044] The processor platform 600 of the illustrated example also includes at least one mass storage device 628 for storing executable instructions (e.g., software) and/or data. Examples of such mass storage device(s) 628 include floppy disk drives, hard drive disks, compact disk drives, Biu-ray disk drives, RAID systems, and digital versatile disk (DVD) drives.

[0045] The coded instructions 632 of FIG. 5 may be stored in the mass storage device 628, in the local memory 613 in the volatile memory 614, in the non-volatile memory 616, and/or on a removable tangible machine readable storage medium such as a CD or DVD.

[0046] From the foregoing, it will be appreciated that the above disclosed methods, apparatus and articles of manufacture provide efficient and cost effect resource allocation for computing processes using a comparative advantage analysis. In examples herein, sets of computing processes and computing resources are analyzed to identify candidate allocations, and the candidate allocations are ranked to determine which candidate allocation has a comparative advantage over the others to optimize execution characteristics (e.g., throughput capacity) of a system or of the computing resources.

Accordingly, examples herein provide optimal resource allocation by considering characteristics of a system as a whole through the use of a comparative advantage analysis.

[0047] Although certain example methods, apparatus and articles of manufacture have been disclosed herein, the scope of coverage of this patent is not limited thereto. On the contrary, this patent covers all methods, apparatus and articles of manufacture fairly falling within the scope of the claims of this patent.