WO2017138909A1 - Comparative advantage resource allocator - Google Patents

Comparative advantage resource allocator Download PDF

Info

Publication number
WO2017138909A1
WO2017138909A1 PCT/US2016/016922 US2016016922W WO2017138909A1 WO 2017138909 A1 WO2017138909 A1 WO 2017138909A1 US 2016016922 W US2016016922 W US 2016016922W WO 2017138909 A1 WO2017138909 A1 WO 2017138909A1
Authority
WO
WIPO (PCT)
Prior art keywords
computing
computing resources
processes
allocation
resources
Prior art date
Application number
PCT/US2016/016922
Other languages
French (fr)
Inventor
Bernardo Huberman
Puneet Sharma
Original Assignee
Hewlett Packard Enterprise Development Lp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development Lp filed Critical Hewlett Packard Enterprise Development Lp
Priority to PCT/US2016/016922 priority Critical patent/WO2017138909A1/en
Publication of WO2017138909A1 publication Critical patent/WO2017138909A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Debugging And Monitoring (AREA)

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.

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!G2) 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
Figure imgf000011_0001
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:
Figure imgf000011_0002
[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
Figure imgf000012_0001
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:
Figure imgf000012_0002
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.

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.
PCT/US2016/016922 2016-02-08 2016-02-08 Comparative advantage resource allocator WO2017138909A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
PCT/US2016/016922 WO2017138909A1 (en) 2016-02-08 2016-02-08 Comparative advantage resource allocator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2016/016922 WO2017138909A1 (en) 2016-02-08 2016-02-08 Comparative advantage resource allocator

Publications (1)

Publication Number Publication Date
WO2017138909A1 true WO2017138909A1 (en) 2017-08-17

Family

ID=59563953

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2016/016922 WO2017138909A1 (en) 2016-02-08 2016-02-08 Comparative advantage resource allocator

Country Status (1)

Country Link
WO (1) WO2017138909A1 (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6768901B1 (en) * 2000-06-02 2004-07-27 General Dynamics Decision Systems, Inc. Dynamic hardware resource manager for software-defined communications system
US20050262509A1 (en) * 2004-05-19 2005-11-24 Kelly Terence P Method of allocating computing resources
US8484353B1 (en) * 2010-09-28 2013-07-09 Amazon Technologies, Inc. Resource placement templates for virtual networks
US20140089509A1 (en) * 2012-09-26 2014-03-27 International Business Machines Corporation Prediction-based provisioning planning for cloud environments
US20150019737A1 (en) * 2013-07-09 2015-01-15 Korea Institute Of Science & Technology Information (Kisti) Method and apparatus for allocating resource reflecting adaptive evaluation in cloud computing for high-throughput computing

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6768901B1 (en) * 2000-06-02 2004-07-27 General Dynamics Decision Systems, Inc. Dynamic hardware resource manager for software-defined communications system
US20050262509A1 (en) * 2004-05-19 2005-11-24 Kelly Terence P Method of allocating computing resources
US8484353B1 (en) * 2010-09-28 2013-07-09 Amazon Technologies, Inc. Resource placement templates for virtual networks
US20140089509A1 (en) * 2012-09-26 2014-03-27 International Business Machines Corporation Prediction-based provisioning planning for cloud environments
US20150019737A1 (en) * 2013-07-09 2015-01-15 Korea Institute Of Science & Technology Information (Kisti) Method and apparatus for allocating resource reflecting adaptive evaluation in cloud computing for high-throughput computing

Similar Documents

Publication Publication Date Title
US10635664B2 (en) Map-reduce job virtualization
US11036552B2 (en) Cognitive scheduler
US10826980B2 (en) Command process load balancing system
US11570272B2 (en) Provisioning using pre-fetched data in serverless computing environments
US8261266B2 (en) Deploying a virtual machine having a virtual hardware configuration matching an improved hardware profile with respect to execution of an application
US10346206B2 (en) System, method and computer program product for resource management in a distributed computation system
US20160188207A1 (en) Electronic system with learning mechanism and method of operation thereof
US10496447B2 (en) Partitioning nodes in a hyper-converged infrastructure
US9807008B2 (en) Tournament scheduling
US20150081914A1 (en) Allocation of Resources Between Web Services in a Composite Service
JP2017526049A5 (en)
US10698785B2 (en) Task management based on an access workload
EP3304294A1 (en) Method and system for allocating resources for virtual hosts
KR20200122589A (en) Apparatus and method for allocating cloud resources
US8458719B2 (en) Storage management in a data processing system
JP2013125548A (en) Virtual machine allocation system and method for using the same
CN107045452B (en) Virtual machine scheduling method and device
JP5043166B2 (en) Computer system, data search method, and database management computer
CN108228323B (en) Hadoop task scheduling method and device based on data locality
US20140047454A1 (en) Load balancing in an sap system
WO2017138909A1 (en) Comparative advantage resource allocator
US11586475B2 (en) Application aware resource allocation for deep learning job scheduling
CN110719306B (en) Network request limiting method, computer equipment and storage medium
JP2017174194A (en) Image processing apparatus, load distribution method and load distribution program
CN117009069A (en) Scheduling method and device for virtual cloud computing resources

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16890032

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 16890032

Country of ref document: EP

Kind code of ref document: A1