Application-negotiable resource director technology for efficient platform resource management

AnRDT enables dynamic resource negotiation in cloud computing, addressing scalability and 'noisy neighbor' issues by allowing applications to adjust resource allocations, enhancing performance and utilization in hyperscale data centers.

JP7845831B2Active Publication Date: 2026-04-14INTEL CORP
View PDF 2 Cites 0 Cited by

Patent Information

Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
INTEL CORP
Filing Date
2021-08-16
Publication Date
2026-04-14

AI Technical Summary

Technical Problem

Conventional resource management in cloud computing environments lacks scalability and results in sub-optimal performance and SLA violations due to static resource allocation and 'noisy neighbor' issues, leading to lower fleet-level utilization.

Method used

An application-negotiable resource director (AnRDT) approach that allows applications to dynamically negotiate resource allocations based on tolerance factors, enabling node-level and cluster-level optimizations through a bidirectional interface and orchestrator, facilitating efficient placement strategies and runtime adjustments.

Benefits of technology

Enhances performance by achieving higher fleet-level utilization and improved scalability, handling dynamic resource requirements, and ensuring acceptable performance for all tenants, particularly in hyperscale data centers.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure 0007845831000001
    Figure 0007845831000001
  • Figure 0007845831000002
    Figure 0007845831000002
  • Figure 0007845831000003
    Figure 0007845831000003
Patent Text Reader

Abstract

To provide an application negotiable resource director technology for efficient platform resource management.SOLUTION: Systems, apparatuses and methods may provide a technology that automatically determines a first proposed change in an existing resource allocation associated with a first application in a first node, where the first proposed change is determined at least partially based on a requested resource allocation associated with a pending application and on a first tolerance associated with the first application. The technology may also issue the first proposed change in the first application, and automatically conduct the first proposed change if the first application accepts the first proposed change.SELECTED DRAWING: Figure 1
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] Embodiments generally relate to managing computing platform resources. More particularly, embodiments relate to application negotiable resource director technology (RDT) for efficient platform resource management.

Background Art

[0002] Cloud service providers typically deploy server systems to run multiple tenant applications or virtual machine (VM) instances (e.g., “tenants”), and each tenant may compete for shared resources such as cache, memory bandwidth, etc. Further, a “noisy neighbor” condition may exist when the performance of a given tenant is being adversely affected by neighboring tenants. Conventional solutions to achieving fairness in resource sharing lack scalability and can consequently result in lower fleet-level utilization. Thus, sub-optimal performance may be experienced, which can cause service level agreement (SLA) violations for one or many tenants.

Brief Description of the Drawings

[0003] Various advantages of the embodiments will become apparent to those skilled in the art by reading the following specification and the appended claims, and by referring to the following drawings. [Figure 1] FIG. 1 is a block diagram of an example comparison between a conventional computing architecture and a computing architecture according to an embodiment. [Figure 2] FIG. 2 is a flowchart of an example method of operating a performance-enhanced computing system according to an embodiment. [Figure 3A]This is a flowchart illustrating an example of how to implement changes to existing resource allocations according to the embodiment. [Figure 3B] This is a flowchart illustrating an example of how to implement changes to existing resource allocations according to the embodiment. [Figure 4A] This is a block diagram of an example resource bidding scenario according to an embodiment. [Figure 4B] This is a block diagram of an example resource bidding scenario according to an embodiment. [Figure 5] This is a flowchart illustrating an example of a method for managing application bids according to one embodiment. [Figure 6] This is a flowchart illustrating a more detailed method for operating a performance-enhanced computing system according to one embodiment. [Figure 7] This is a flowchart illustrating an example of a method for negotiating an RDT profile configuration and enforcing the newly negotiated RDT profile configuration, according to one embodiment. [Figure 8] This is a block diagram of an example of a performance-enhanced computing system according to one embodiment. [Figure 9] This is an explanatory diagram of an example of a semiconductor device according to one embodiment. [Figure 10] This is a block diagram of an example of a processor according to one embodiment. [Figure 11] This is a block diagram of an example of a multiprocessor-based computing system according to one embodiment. [Modes for carrying out the invention]

[0004] Next, referring to Figure 1, a conventional computing architecture 20 in which static resource allocation is used is shown. In the illustrated example, the class of service (CLoS) and resource management identifier (RMID) settings are provided statically and offline (e.g., before execution time) within the software domain 22 by the operating system (OS, e.g., kernel) or virtual machine monitor (VMM, e.g., hypervisor). The provided settings can be exposed to the hardware domain 24 via RDT or speed select technology (SST), and the hardware domain 24 also configures resource management offline. Thus, the illustrated resource allocation is based solely on prior knowledge of the system requirements for each application, without the involvement of user space 28.

[0005] When incoming tenants 26 (e.g., new VMs, application instances, workloads, etc.) are unknown or require alternative resource configurations at runtime (e.g., service level agreements / SLAs), there may be no effective solution to easily add incoming tenants 26 to the traditional computing architecture 20. For example, CLoS is determined on a pre-deployment timeframe within a single-node scope of architecture 20. Such an approach may not be scalable with respect to hyperscale data centers where resource management occurs in a "scale up" (e.g., node to data center) and "scale out" (e.g., data center to cluster) manner. Furthermore, static pre-allocation of resources may result in lower fleet-level utilization due to the dynamicity of public cloud requirements.

[0006] In contrast, the enhanced computing architecture 30 employs an application-negotiable RDT (AnRDT) approach, in which applications can dynamically negotiate resource allocations based on tolerance factors (e.g., "hints") defined by existing applications and incoming tenants 26 to achieve node-level and cluster-level optimizations. More specifically, the illustrated architecture 30 exposes RDT settings (e.g., SLAs) from the software domain 36 to user space 34 via a bidirectional interface 35, and uses an orchestrator 32 to negotiate with existing workloads via a bidirectional interface 37 for efficient placement strategies using the exposed SLAs. The hardware domain 38 can provide runtime information, such as power information (e.g., obtained from a power unit / Punit RDT), to the software domain 36, which then dynamically updates the RDT settings exposed to user space 34.

[0007] In the proposed AnRDT, applications can dynamically negotiate resource allocations based on an acceptance factor defined by the application. This approach helps achieve effective colocation at the cluster level and improved fleet-level utilization, along with acceptable / guaranteed performance for all tenants (resulting in overall total cost of ownership / TCO benefits at the data center level, for example). The enhanced computing architecture 30 further makes system resource allocation more scalable for hyperscale data centers where resource management occurs in a scale-up and scale-out manner (e.g., from a single node to a cluster of racks at the data center level). In addition, architecture 30 can effectively handle tenants with alternative resource requirements at runtime (e.g., dynamically), which is common in public cloud environments. Thus, higher fleet-level utilization can be achieved, which leads to performance enhancements.

[0008] Figure 2 shows a method 40 for operating a performance-enhanced computing system. Method 40 can generally be implemented in an orchestrator, for example, the orchestrator 32 (Figure 1) already discussed. More specifically, Method 40 may be implemented in one or more modules as a set of logic instructions stored in a machine or computer-readable storage medium such as random access memory (RAM), read-only memory (ROM), programmable ROM (PROM), firmware, flash memory, etc., in configurable logic such as a programmable logic array (PLA), a field-programmable gate array (FPGA), a composite programmable logic device (CPLD), in fixed-function logic hardware using circuit technologies such as application-specific integrated circuits (ASICs), complementary metal-oxide-semiconductor (CMOS), transistor-transistor logic (TTL) technology, or in any combination thereof.

[0009] For example, the computer program code that performs the operations shown in Method 40 may be written in any combination of one or more programming languages, including object-oriented programming languages ​​such as JAVA®, SMALLTALK®, and C++, and conventional procedural programming languages ​​such as the C programming language or similar programming languages. Furthermore, the logical instructions may include assembler instructions, instruction set architecture instructions (ISA), machine instructions, machine-dependent instructions, microcode, state setting data, integrated circuit configuration data, and state information that personalizes other structural components native to the electronic circuit and / or hardware (e.g., host processor, central processing unit / CPU, microcontroller, etc.).

[0010] The illustrative processing block 42 provides for automatically determining a first proposed change to an existing resource allocation associated with a first application (e.g., an existing workload, instance, VM, tenant, etc.) in a first node (e.g., a server rack). In the illustrated example, the first proposed change is determined at least in part on a requested resource allocation (e.g., an SLA) associated with a pending application (e.g., an incoming tenant) and a first tolerance associated with the first application. In one embodiment, the first tolerance includes migration tolerance parameters (e.g., indicating tolerance for application migration), frequency tolerance parameters (e.g., operating frequency range, minimum, and / or target), memory bandwidth (BW) tolerance parameters (bandwidth, minimum, and / or target), cache size tolerance parameters (e.g., cache size range, minimum, and / or target), thermal design power (TDP) tolerance parameters (e.g., TDP range, minimum, and / or target), instructions per clock (IPC) tolerance parameters (e.g., IPC range, minimum, and / or target), or any combination thereof. Furthermore, the first proposed modification may include a reduction in existing resource allocation and / or migration of the first application to a second node. A decision to migrate an application across nodes may result in the migration of application tolerances (e.g., RDT settings) along with the application.

[0011] [Application tolerance]

[0012] Application tolerance is specified by the application and may be a factor ranging from 0 to 1 (for example, representing the application's tolerance for potential changes to system resources and / or resulting node migrations). For example, a condition factor of 0 may indicate that the application cannot tolerate any changes to system resources, while a condition factor of 1 may indicate that the application is flexible to any changes to system resources.

[0013] In one embodiment, the application tolerance assigns values ​​to system resource requirements such as frequency range, memory BW range, cache size range, TDP range, migration tolerance, IPC range, accelerator configuration, and reserved fields. For example, a typical application tolerance might be Struct SLA_Template {Fmin, Ftarget, MemBWmin, MemBWdesired, CacheSizemin, CacheSizetarget, generational IPCmin, MigrationTolerance, IPC requirement, Accelerator Config, ReservedFields}.

[0014] Migration tolerance can indicate the tolerance of an application (e.g., an instance / VM) to migrate to a different node due to resource constraints. In one embodiment, migration involves halting processes within the application (typically on a millisecond scale) until negotiation with the different node is successful. The optional field generational IPC range may indicate IPC requirements (e.g., higher IPC for artificial intelligence / AI training and / or inference using instructions such as AX512_VNNI, AVX512_BF16, etc.). In one example, the optional field accelerator configuration indicates accelerator dependencies such as graphics processing units (GPUs) and inference neural processors. Reserved fields may provide further system resource parameters for future scalability.

[0015] Block 44 issues a first proposed change to the first application (for example, as part of a negotiation session), and Block 46 determines whether the first proposed change has been accepted by the first application. If so, the exemplary Block 48 implements the first proposed change. In one example, Block 46 determines whether the pending application and the first application are trusted (for example, via a programmable whitelist manifest and a trusted entity such as a baseboard management controller / BMC or trusted execution environment / TEE). In such a case, if the pending application and / or the first application are determined to be untrusted, Block 46 can override the proposed change and bypass Block 48. Furthermore, if the trusted entity is determined to be untrusted, it may take configured policy-based actions. Thus, Method 40 can provide an additional layer of protection against the pending application attempting to maliciously occupy system resources, the first application being exploited to release necessary resources, and so on. If block 46 determines that the first application has not accepted the proposed changes, block 50 may issue one or more further proposed changes to one or more corresponding applications in the first node. In a single bidding scenario, all proposed changes may be issued in parallel, which will be discussed in more detail. If one of the further proposed changes is accepted by a corresponding application (e.g., the winning bidder), that further change may be implemented automatically.

[0016] The exemplary method 40 enhances performance by using application tolerance to dynamically adapt to incoming tenants that are unknown or require alternative resource configurations (e.g., SLAs) at runtime. The ability to automatically adjust existing resource allocations when acceptable by the corresponding application results in a more scalable architecture. Further, negotiating with existing applications as shown further enhances flexibility, scalability, and performance, particularly under dynamic conditions (e.g., changing power consumption conditions).

[0017] FIG. 3A shows a method 60 of implementing a variant that includes a reduction to an existing resource allocation (e.g., within the tolerance specified by a first application). The method 60 may generally be incorporated into the block 48 (FIG. 2) already discussed. More specifically, the method 60 may be implemented in one or more modules as a set of logical instructions stored in a machine or computer readable storage medium such as RAM, ROM, PROM, firmware, flash memory, etc., in configurable logic such as PLA, FPGA, CPLD, etc., in fixed function logic hardware using circuit technologies such as ASIC, CMOS, or TTL technology, or any combination thereof.

[0018] The exemplary processing block 62 implements the requested resource allocation (e.g., associated with a pending application) on the first node. In one embodiment, the block 62 includes reducing the processor operating frequency, allocating a portion of the memory bandwidth to the pending application, allocating a portion of the cache to the pending application, etc. Further, the block 64 can activate the pending application on the first node. Thus, the method 60 further enhances performance by dynamically adjusting the resource allocation.

[0019] Figure 3B shows a method 70 for implementing the proposed change, which includes migrating the first application to a second node (for example, the first and second nodes may reside in the same or different racks, servers, or data centers). Method 70 can generally be incorporated into block 48 (Figure 2), which has already been discussed. More specifically, Method 70 may be implemented in one or more modules as a set of logic instructions stored in a machine or computer-readable storage medium such as RAM, ROM, PROM, firmware, or flash memory; in configurable logic such as PLA, FPGA, or CPLD; in fixed-function logic hardware using circuit technology such as ASIC, CMOS, or TTL technology; or in any combination thereof.

[0020] The exemplary processing block 72 determines a second proposed change to an existing resource allocation associated with a second application (e.g., an existing workload, instance, VM, tenant, etc.) at a second node. In one example, the second proposed change is determined at least in part based on an existing resource allocation associated with a first application and a second tolerance associated with the second application. The second tolerance may include a migration tolerance parameter, a frequency tolerance parameter, a BW tolerance parameter, a cache size tolerance parameter, a TDP tolerance parameter, an IPC tolerance parameter, etc., or any combination thereof. In one embodiment, block 74 issues the second proposed change to the second application, whereupon, at block 76, a determination is made as to whether the second application has accepted the second proposed change. If so, block 78 implements the second proposed change, which may include a reduction to an existing resource allocation of the second application and / or a migration of the second application to a third node. Block 76 may further invalidate the second proposed change and bypass block 78 if untrusted code is detected. The exemplary block 79 issues one or more further proposed changes to one or more corresponding applications at the second node if the second proposed change is not accepted by the second application. If one of the further proposed changes is accepted by the corresponding application (e.g., the winner), that further proposed change may be automatically implemented.

[0021] Figure 4A illustrates a resource bidding scenario in which the orchestrator 80 detects an incoming tenant 82 ("App-New"). In the illustrated example, node 84 contains several existing applications ("App-1" to "App-N"), each of which has minimum requirements (e.g., application tolerance and / or hints). In one embodiment, the orchestrator 80 notifies the existing applications of proposed changes to the resources allocated to them, and the existing applications bid (e.g., in parallel) in terms of currency or time (e.g., hour credit) to accept the proposed changes. In the illustrated example, existing application App-2 wins the bid and shares resources with incoming tenant 82, which is "spun up" and joins the other existing applications on node 84.

[0022] Figure 4B illustrates another resource bidding scenario in which the orchestrator 80 detects an incoming tenant 82 ("App-New"). In the illustrated example, the first node 86 ("Node 1") contains several existing applications ("App-1" to "App-N"), where existing applications App-1 and App-N have low tolerance for migration, and existing application App-2 is relatively tolerant of migration. In one embodiment, the orchestrator 80 notifies the existing applications of proposed changes to the resources allocated to them via the first bidirectional interface 81, and the existing applications bid via the first bidirectional interface 81 in terms of currency or time (e.g., hourly credits) to accept the proposed changes. In the illustrated example, existing application App-2 on the first node 86 wins the bid and is migrated to the second node 88 ("Node N"), which has a second bidirectional interface 83 with the orchestrator 80. The second node 88 may contain multiple existing applications ("App-1" through "App-N"), where existing applications App-1 and App-N have high resource requirements, and existing application App-2 is relatively tolerant of sharing resources. In such a case, existing application App-2 on the second node 88 wins the bid and shares resources with existing App-2 from the first node 86 (e.g., an incoming tenant).

[0023] Figure 5 shows a method 71 for managing application bids. Method 71 can generally be implemented in orchestrators such as the orchestrator 32 (Figure 1) and / or orchestrator 80 (Figures 4A and 4B) discussed earlier. More specifically, method 71 may be implemented in one or more modules as a set of logic instructions stored in a machine or computer-readable storage medium such as RAM, ROM, PROM, firmware, or flash memory; in configurable logic such as PLA, FPGA, or CPLD; in fixed-function logic hardware using circuit technology such as ASIC, CMOS, or TTL technology; or in any combination thereof.

[0024] The exemplary processing block 73 receives multiple bids from corresponding applications via a bidirectional interface. In one embodiment, block 75 performs a comparison of the multiple bids (for example, in terms of currency, time, credits, etc.), and block 77 selects an application as the winning bidder based on the comparison.

[0025] Figure 6 shows a more detailed method 90 for operating a performance-enhanced computing system. Method 90 can generally be implemented by an orchestrator, for example, the orchestrator 32 (Figure 1) and / or orchestrator 80 (Figures 4A and 4B) discussed earlier. More specifically, Method 90 may be implemented in one or more modules as a set of logic instructions stored in a machine or computer-readable storage medium such as RAM, ROM, PROM, firmware, or flash memory; in configurable logic such as PLA, FPGA, or CPLD; in fixed-function logic hardware using circuit technology such as ASIC, CMOS, or TTL technology; or in any combination thereof.

[0026] The exemplary processing block 91 provides a determination of whether AnRDT is supported. If not, exemplary method 90 terminates. If AnRDT is supported, block 92 determines that a new, higher-priority application (App) and / or guest is considered to be scheduled by the orchestrator. In such a case, a whitelist manifest match is triggered (e.g., “kicked off”). Block 93 determines whether the match was successful. If not, exemplary method 90 terminates. Otherwise, block 94 exposes the current CLoS, RMID, and / or TDP configuration to the matched application and / or guest. Based on the available guest / app and / or orchestrator guidelines, the platform negotiates an RDT profile. In one embodiment, block 95 enforces the newly negotiated configuration, and method 90 terminates.

[0027] Figure 7 shows a method 96 for negotiating an RDT profile configuration and forcing the newly negotiated RDT profile configuration. Method 96 can generally be incorporated into blocks 94 and / or 95 (Figure 6) which have already been discussed. More specifically, method 96 may be implemented in one or more modules as a set of logic instructions stored in a machine or computer-readable storage medium such as RAM, ROM, PROM, firmware, flash memory, in configurable logic such as PLA, FPGA, CPLD, for example, in fixed-function logic hardware using circuit technology such as ASIC, CMOS, or TTL technology, or in any combination thereof.

[0028] In block 97, the user can issue a request to spin up an instance and / or application with QoS=func(Frequency, Cache, Mem-BW, Power, IPC, Migration-tolerance), which is validated in block 98. If the request is invalid, exemplary method 96 prompts the user for a valid request and returns to block 97. If the request is valid, block 99 performs an availability check (e.g., to find a free machine ready to negotiate). If no availability is found in block 99, exemplary block 100 triggers components such as the BMC and / or manageability engine (ME) to take policy-based action. Otherwise, block 101 negotiates with the platform RDT (e.g., mapping CLoS and / or RMID). In block 102, the RDT negotiates with an existing instance / application. If negotiation fails, method 96 returns to block 99. If negotiation is successful, block 103 determines whether the proposed changes include migration of an existing instance / application. If so, another node (e.g., node N in Figure 4B) is selected, and method 96 returns to block 99. If the proposed changes do not include migration, block 104 updates the CLoS of the existing instance / application, and block 105 spins up the requested instance using the negotiated RDT.

[0029] Next, referring to Figure 8, we show a performance-enhanced computing system 110. System 110 may generally be part of an electronic device / platform having computing functions (e.g., personal digital assistants / PDAs, notebook computers, tablet computers, convertible tablets, servers), communication functions (e.g., smartphones), imaging functions (e.g., cameras, camcorders), media playback functions (e.g., smart televisions / TVs), wearable functions (e.g., watches, eyewear, headwear, footwear, jewelry), vehicle functions (e.g., cars, trucks, motorcycles), robotic functions (e.g., autonomous robots), Internet of Things (IoT) functions, or any combination thereof. In the illustrated example, system 110 includes a host processor 112 (e.g., a central processing unit / CPU) having an integrated memory controller (IMC) 114 coupled to a system memory 116.

[0030] The exemplary system 110 further includes an input / output (IO) module 118 implemented on a semiconductor die 122 as a system-on-a-chip (SoC) together with a host processor 112 and a graphics processor 120 (e.g., a GPU). The exemplary IO module 118 communicates with, for example, a display 124 (e.g., a touchscreen, liquid crystal display / LCD, light-emitting diode / LED display), a network controller 126 (e.g., wired and / or wireless), and mass storage devices 128 (e.g., hard disk drive / HDD, optical disc, solid state drive / SSD, flash memory).

[0031] In one embodiment, the host processor 112, the graphics processor 120, and / or the IO module 118 execute program instructions 134 retrieved from the system memory 116 and / or the mass storage device 128 to perform one or more aspects of the methods 40 (Figure 2), 60 (Figure 3A), 70 (Figure 3B), 90 (Figure 6), and / or 96 (Figure 7) discussed earlier. Thus, the execution of instructions 134 can cause the semiconductor die 122 and / or the computing system 110 to automatically determine a first proposed change to an existing resource allocation associated with a first application at a first node of the computing system 110, the first proposed change being determined at least in part on the requested resource allocation associated with the pending application and a first tolerance associated with the first application. The execution of instruction 134 can further cause the semiconductor die 122 and / or computing system 110 to issue the first proposed change to the first application and to automatically implement the first proposed change if the first application accepts it.

[0032] Therefore, the computing system 110 is enhanced in performance to the extent that it dynamically adapts to incoming tenants that are unknown or have alternative resource requirements (e.g., SLAs) at runtime, using application tolerance. The ability to automatically adjust existing resource allocations when acceptable to the corresponding application results in a more scalable architecture. Furthermore, negotiating with existing applications as described further enhances flexibility, scalability, and performance, especially under dynamic conditions (e.g., changing power consumption conditions).

[0033] Figure 9 shows a semiconductor packaging apparatus 140. The exemplary apparatus 140 includes one or more substrates 142 (e.g., silicon, sapphire, gallium arsenide) and logic 144 (e.g., transistor arrays and other integrated circuit / IC components) coupled to the substrates 142. The logic 144 can be at least partially implemented in configurable logic or fixed-function logic hardware. In one example, the logic 144 implements one or more embodiments of methods 40 (Figure 2), 60 (Figure 3A), 70 (Figure 3B), 90 (Figure 6), and / or 96 (Figure 7) already discussed. Thus, the logic 144 can automatically determine a first proposed change to an existing resource allocation associated with a first application at a first node, the first proposed change being determined at least in part on a requested resource allocation associated with a pending application and a first tolerance associated with the first application. Logical 144 can further issue the first proposed change to the first application, and if the first application accepts the first proposed change, it can automatically implement the first proposed change.

[0034] Therefore, the device 140 is enhanced in performance to the extent that it dynamically adapts to incoming tenants that are unknown or have alternative resource requirements (e.g., SLAs) at runtime, using application tolerance. The ability to automatically adjust existing resource allocations when acceptable to the corresponding application results in a more scalable architecture. Furthermore, negotiating with existing applications as described further enhances flexibility, scalability, and performance, especially under dynamic conditions (e.g., changing power consumption conditions).

[0035] In one example, logic 144 includes a transistor channel region located (e.g., embedded) within the substrate 142. Therefore, the interface between logic 144 and the substrate 142 does not have to be a step junction. Logic 144 may further be considered to include an epitaxial layer growing on the initial wafer of the substrate 142.

[0036] Figure 10 shows a processor core 200 according to one embodiment. The processor core 200 may be the core of any type of processor, such as a microprocessor, an embedded processor, a digital signal processor (DSP), a network processor, or any other device that executes code. Although only one processor core 200 is shown in Figure 10, the processing element may instead include two or more processor cores 200 as shown in Figure 10. The processor core 200 may be a single-threaded core, or, in at least one embodiment, the processor core 200 may be multithreaded in that each core may contain two or more hardware thread contexts (or “logical processors”).

[0037] Figure 10 also shows a memory 270 coupled to the processor core 200. The memory 270 may be any of the broad types of memory (including various layers of the memory hierarchy) known to those skilled in the art or otherwise available. The memory 270 may contain one or more code 213 instructions executed by the processor core 200, and the code 213 may implement one or more embodiments of the methods 40 (Figure 2), 60 (Figure 3A), 70 (Figure 3B), 90 (Figure 6), and / or 96 (Figure 7) discussed earlier. The processor core 200 follows a program sequence of instructions indicated by the code 213. Each instruction enters the front-end portion 210 and may be processed by one or more decoders 220. The decoders 220 may, as their output, generate microoperations such as fixed-width microoperations of a predetermined format, or other instructions, microinstructions, or control signals that reflect the original code instructions. The illustrative front-end portion 210 further includes register renaming logic 225 and scheduling logic 230, which generally allocate resources and queue operations corresponding to translation instructions for execution.

[0038] The processor core 200 is shown to include an execution logic 250 having a set of execution units 255-1 to 255-N. Some embodiments may include multiple execution units dedicated to a particular function or set of functions. Other embodiments may include only one execution unit or one execution unit capable of performing a particular function. The exemplary execution logic 250 performs the operation specified by the code instruction.

[0039] After the completion of the operation specified by the code instruction, the backend logic 260 retires the instruction of code 213. In one embodiment, the processor core 200 enables out-of-order execution but requires in-order retirement of the instruction. The retirement logic 265 can take various forms known to those skilled in the art (e.g., a reorder buffer). In this way, the processor core 200 is transformed during the execution of code 213 in terms of at least the output generated by the decoder, the hardware registers and tables used by the register renaming logic 225, and any registers (not shown) modified by the execution logic 250.

[0040] Although not shown in Figure 10, the processing element may include other elements on the chip having the processor core 200. For example, the processing element may include memory control logic together with the processor core 200. The processing element may include I / O control logic and / or I / O control logic integrated with the memory control logic. The processing element may further include one or more caches.

[0041] Next, referring to Figure 11, a block diagram of an embodiment of computing system 1000 according to one embodiment is shown. Figure 11 shows a multiprocessor system 1000 including a first processing element 1070 and a second processing element 1080. Although two processing elements 1070 and 1080 are shown, it should be understood that an embodiment of system 1000 may include only one such processing element.

[0042] System 1000 is shown as a point-to-point interconnect system, where the first processing element 1070 and the second processing element 1080 are connected via the point-to-point interconnect 1050. It should be understood that any or all of the interconnects shown in Figure 11 may be implemented as a multidrop bus instead of a point-to-point interconnect.

[0043] As shown in Figure 11, each of the processing elements 1070 and 1080 may be a multicore processor including first and second processor cores (i.e., processor cores 1074a and 1074b, and processor cores 1084a and 1084b). Such cores 1074a, 1074b, 1084a, and 1084b may be configured to execute instruction code in a manner similar to that discussed above in relation to Figure 10.

[0044] Each processing element 1070, 1080 may include at least one shared cache 1896a, 1896b. The shared caches 1896a, 1896b may store data (e.g., instructions) used by one or more components of the processor, such as cores 1074a, 1074b and 1084a, 1084b, respectively. For example, the shared caches 1896a, 1896b may locally cache data stored in memory 1032, 1034 for faster access by components of the processor. In one or more embodiments, the shared caches 1896a, 1896b may include one or more intermediate-level caches, such as Level 2 (L2), Level 3 (L3), Level 4 (L4), or other levels of caches, a Last Level Cache (LLC), and / or a combination thereof.

[0045] Although only two processing elements 1070 and 1080 are shown, it should be understood that the scope of the embodiments is not so limited. In other embodiments, one or more further processing elements may be present within a given processor. Alternatively, one or more of the processing elements 1070 and 1080 may be non-processor elements such as accelerators or field-programmable gate arrays. For example, the further processing elements may include a further processor identical to the first processor 1070, a further processor heterogeneous or asymmetrical to the first processor 1070, an accelerator (e.g., a graphics accelerator or a digital signal processing (DSP) unit), a field-programmable gate array, or any other processing element. There may be various differences between the processing elements 1070 and 1080 in terms of the spectrum of merit metrics, including architecture, microarchitecture, thermal, and power consumption characteristics. These differences may effectively manifest as asymmetry and heterogeneity between the processing elements 1070 and 1080. In at least one embodiment, various processing elements 1070, 1080 may be located within the same die package.

[0046] The first processing element 1070 may further include a memory controller logic (MC) 1072 and point-to-point (PP) interfaces 1076 and 1078. Similarly, the second processing element 1080 may include an MC 1082 and PP interfaces 1086 and 1088. As shown in Figure 11, the MCs 1072 and 1082 connect the processors to their respective memories, namely memory 1032 and memory 1034, which may also be parts of main memory locally attached to their respective processors. Although the MCs 1072 and 1082 are shown as integrated into the processing elements 1070 and 1080, in alternative embodiments the MC logic may be separate logic outside of the processing elements 1070 and 1080 instead of being integrated within them.

[0047] The first processing element 1070 and the second processing element 1080 may be coupled to the I / O subsystem 1090 via PP interconnects 1076 and 1086, respectively. As shown in Figure 11, the I / O subsystem 1090 includes PP interfaces 1094 and 1098. Furthermore, the I / O subsystem 1090 includes an interface 1092 that couples the I / O subsystem 1090 with the high-performance graphics engine 1038. In one embodiment, a bus 1049 may be used to couple the graphics engine 1038 with the I / O subsystem 1090. Alternatively, a point-to-point interconnect may couple these components.

[0048] Next, the I / O subsystem 1090 may be coupled to the first bus 1016 via interface 1096. In one embodiment, the first bus 1016 may be a Peripheral Component Interconnect (PCI) bus, a PCI Express bus, or other third-generation I / O interconnect bus, but the scope of the embodiment is not limited in this way.

[0049] As shown in Figure 11, various I / O devices 1014 (e.g., biometric scanners, speakers, cameras, sensors) may be coupled to the first bus 1016, along with a bus bridge 1018 that can couple the first bus 1016 to the second bus 1020. In one embodiment, the second bus 1020 may be a low-pin-count (LPC) bus. Various devices may be coupled to the second bus 1020, for example, in one embodiment, a keyboard / mouse 1012, a communication device 1026, and a data storage unit 1019 such as a disk drive or other mass storage device that may include code 1030. The exemplary code 1030 can implement one or more embodiments of methods 40 (Figure 2), 60 (Figure 3A), 70 (Figure 3B), 90 (Figure 6), and / or method 96 (Figure 7) that have already been discussed. Furthermore, the audio I / O 1024 may be coupled to a second bus 1020, and the battery 1010 may supply power to the computing system 1000.

[0050] It should be noted that other embodiments are possible. For example, instead of the point-to-point architecture of Figure 11, the system may implement a multidrop bus or other such communication topology. Furthermore, the elements of Figure 11 may instead be separated using more or fewer integrated chips as shown in Figure 11.

[0051] [Further notes and examples]

[0052] Example 1 includes a performance-enhanced computing system, the computing system includes a network controller, a processor coupled to the network controller, and memory coupled to the processor, the memory including a set of executable program instructions, the instructions, when executed by the processor, cause the processor to determine a first proposed change to an existing resource allocation associated with a first application at a first node of the computing system, the first proposed change being determined at least in part on a requested resource allocation associated with a pending application and a first tolerance associated with the first application, the first proposed change being issued to the first application via a first bidirectional interface, and the first application being instructed to implement the first proposed change if it accepts it via the first bidirectional interface.

[0053] Example 2 includes the computing system described in Example 1, wherein the first proposed modification includes a reduction to the existing resource allocation within the tolerance limits specified by the first application, and the instruction, when executed, further causes the processor to implement the requested resource allocation on the first node and activate the pending application on the first node.

[0054] Example 3 includes the computing system described in Example 1, wherein the first proposed change includes the migration of the first application to a second node, and the instruction, when executed, further causes the processor to determine a second proposed change to the existing resource allocation associated with the second application on the second node of the computing system, the second proposed change being determined at least in part on the existing resource allocation associated with the first application and a second tolerance associated with the second application, the second proposed change being issued to the second application via a second bidirectional interface, and the second application being instructed to implement the second proposed change if it accepts it via the second bidirectional interface.

[0055] Example 4 includes the computing system described in Example 1, wherein, when the instruction is executed, the processor further causes the processor to receive multiple bids from corresponding multiple applications via the first bidirectional interface, perform a comparison between the multiple bids, and select the first application as the successful bidder based on the comparison.

[0056] Example 5 includes the computing system described in Example 1, wherein when the instruction is executed, the processor further determines, based on a programmable whitelist manifest, whether one or more of the pending applications or the first applications are untrusted; if it is determined that one or more of the pending applications or the first applications are untrusted, it disables the first proposed change; and if it is determined that one or more of the pending applications or the first applications are untrusted, it takes configured policy-based action.

[0057] Example 6 includes the computing system described in any one of Examples 1 to 5, wherein the instruction, when executed, causes the processor to issue one or more further modifications to one or more corresponding applications on the first node if the first application does not accept the first modification.

[0058] Example 7 includes a semiconductor device, the device including one or more substrates and logic coupled to the one or more substrates, the logic being at least partially implemented in one or more configurable logics or fixed-function hardware logics, the logic coupled to the one or more substrates determining a first proposed change to an existing resource allocation associated with a first application at a first node, the first proposed change being determined at least in part on a requested resource allocation associated with a pending application and a first tolerance associated with the first application, issuing the first proposed change to the first application via a first bidirectional interface, and implementing the first proposed change if the first application accepts it via the first bidirectional interface.

[0059] Example 8 includes the apparatus described in Example 7, wherein the first proposed modification includes a reduction to the existing resource allocation within the tolerance limits specified by the first application, and the logic coupled to one or more boards performs the requested resource allocation at the first node and activates the pending application at the first node.

[0060] Example 9 includes the apparatus described in Example 7, wherein the first proposed change includes the migration of the first application to a second node, the logic coupled to one or more boards determines a second proposed change to an existing resource allocation associated with the second application at the second node, the second proposed change is determined at least in part on the existing resource allocation associated with the first application and a second tolerance associated with the second application, the second proposed change is issued to the second application via a second bidirectional interface, and the second proposed change is implemented if the second application accepts the second proposed change via the second bidirectional interface.

[0061] Example 10 includes the apparatus described in Example 7, wherein the logic coupled to one or more boards receives multiple bids from corresponding multiple applications via the first bidirectional interface, performs a comparison between the multiple bids, and selects the first application as the successful bidder based on the comparison.

[0062] Example 11 includes the device described in Example 7, wherein the logic coupled to one or more of the above-mentioned boards determines, based on a programmable whitelist manifest, whether one or more of the above-mentioned pending applications or the above-mentioned first applications are untrusted, and if it is determined that one or more of the above-mentioned pending applications or the above-mentioned first applications are untrusted, it disables the first proposed change, and if it is determined that one or more of the above-mentioned pending applications or the above-mentioned first applications are untrusted, it takes configured policy-based action.

[0063] Example 12 includes the apparatus described in any one of Examples 7 to 11, wherein the logic coupled to one or more boards issues one or more further modifications to one or more corresponding applications in the first node if the first application does not accept the first modification.

[0064] Example 13 includes the apparatus described in any one of Examples 7 to 12, wherein the logic coupled to the one or more substrates includes transistor channel regions located on the one or more substrates.

[0065] Example 14 includes at least one computer-readable storage medium containing an executable program instruction set, which, when executed by a computing system, causes the computing system to determine a first proposed change to an existing resource allocation associated with a first application on a first node, the first proposed change being determined at least in part on a requested resource allocation associated with a pending application and a first tolerance associated with the first application, the first proposed change being issued to the first application via a first bidirectional interface, and the first application implementing the first proposed change if it accepts it via the first bidirectional interface.

[0066] Example 15 includes at least one computer-readable storage medium as described in Example 14, wherein the first proposed modification includes a reduction to the existing resource allocation within the limits specified by the first application, and the instruction, when executed, further causes the computing system to implement the requested resource allocation on the first node and activate the pending application on the first node.

[0067] Example 16 includes at least one computer-readable storage medium as described in Example 14, wherein the first proposed change includes the migration of the first application to a second node, the instruction, when executed, further causes the computing system to determine a second proposed change to an existing resource allocation associated with the second application on the second node, the second proposed change being determined at least in part on the existing resource allocation associated with the first application and a second tolerance associated with the second application, the second proposed change being issued to the second application via a second bidirectional interface, and the second application being instructed to implement the second proposed change if it accepts it via the second bidirectional interface.

[0068] Example 17 includes at least one computer-readable storage medium as described in Example 14, wherein the instruction, when executed, further causes the computing system to receive a plurality of bids from a plurality of corresponding applications via the first bidirectional interface, to perform a comparison between the plurality of bids, and to select the first application as the successful bidder based on the comparison.

[0069] Example 18 includes at least one computer-readable storage medium as described in Example 14, wherein the instruction, when executed, further causes the computing system to determine, based on a programmable whitelist manifest, whether one or more of the pending applications or the first applications are untrusted; if it is determined that one or more of the pending applications or the first applications are untrusted, it disables the first proposed change; and if it is determined that one or more of the pending applications or the first applications are untrusted, it takes configured policy-based action.

[0070] Example 19 includes at least one computer-readable storage medium as described in any one of Examples 14 to 18, wherein the instruction, when executed, causes the computing system to issue one or more further modifications to one or more corresponding applications on the first node if the first application does not accept the first modification.

[0071] Example 20 includes a method for operating a performance-enhanced computing system, the method comprising the steps of: determining a first proposed change to an existing resource allocation associated with a first application on a first node, the first proposed change being determined at least in part on a requested resource allocation associated with a pending application and a first tolerance associated with the first application; issuing the first proposed change to the first application via a first bidirectional interface; and, if the first application accepts the first proposed change via the first bidirectional interface, implementing the first proposed change.

[0072] Example 21 includes the method described in Example 20, wherein the first proposed modification includes a reduction to the existing resource allocation within the tolerance limits specified by the first application, the method further including the steps of implementing the requested resource allocation on the first node and activating the pending application on the first node.

[0073] Example 22 includes the method described in Example 20, wherein the first proposed change includes migrating the first application to a second node, the method comprising the steps of determining a second proposed change to an existing resource allocation associated with the second application on the second node, the second proposed change being determined at least in part on the existing resource allocation associated with the first application and a second tolerance associated with the second application; issuing the second proposed change to the second application via a second bidirectional interface; and implementing the second proposed change if the second application accepts it via the second bidirectional interface.

[0074] Example 23 includes the method described in Example 20, further comprising the steps of receiving multiple bids from corresponding multiple applications via the first bidirectional interface, performing a comparison among the multiple bids, and selecting the first application as the successful bidder based on the comparison.

[0075] Example 24 includes the method described in Example 20, further comprising the steps of: determining whether one or more of the pending applications or the first applications are untrusted based on a programmable whitelist manifest; disabling the first proposed change if it is determined that one or more of the pending applications or the first applications are untrusted; and taking configured policy-based action if it is determined that one or more of the pending applications or the first applications are untrusted.

[0076] Example 25 includes the method described in any one of Examples 20 to 24, further comprising the step of issuing one or more further proposed modifications to one or more corresponding applications in the first node if the first application does not accept the first proposed modification.

[0077] Example 26 includes means for carrying out the method described in any one of Examples 20 to 25.

[0078] Therefore, the techniques described herein enable applications to dynamically negotiate resource allocations based on an application-defined tolerance factor. Such an approach helps achieve effective colocation at the cluster level and improved fleet-level utilization, along with acceptable / guaranteed performance for all tenants, resulting in overall TCO benefits at the data center level. This technique makes system resource allocation scalable for hyperscale data centers where resource management occurs in a scale-up and scale-out manner. Furthermore, this technique effectively handles tenants that require alternative resource configurations at runtime (e.g., dynamically), which is common in public cloud environments, resulting in higher fleet-level utilization.

[0079] The embodiments are applicable to use in all types of semiconductor integrated circuit ("IC") chips. Examples of these IC chips include, but are not limited to, processors, controllers, chipset components, programmable logic arrays (PLAs), memory chips, network chips, system-on-a-chip (SoCs), SSD / NAND controller ASICs, and the like. Furthermore, in some of the drawings, signal conductor lines are represented as lines. Some differ to indicate more component signal paths, having numerical labels to indicate multiple component signal paths and / or having arrows at one or more ends to indicate the primary information flow direction. However, this should not be interpreted restrictively. Rather, such additional details may be used in relation to one or more exemplary embodiments to facilitate a more easily understood circuit. Any represented signal line may actually contain one or more signals that can travel in multiple directions, with or without further information, and may be implemented in any suitable type of signaling scheme, e.g., digital or analog lines implemented in differential pairs, optical fiber lines, and / or single-ended lines.

[0080] Exemplary sizes / models / values / ranges may be given, but embodiments are not limited to the same. As manufacturing technologies (e.g., photolithography) mature over time, it is expected that smaller devices will be manufactured. Furthermore, well-known power / ground connections to IC chips and other components may or may not be shown in the figures for the sake of simplicity of illustration and discussion, and to avoid obscuring specific aspects of the embodiments. Furthermore, configurations may be shown in the form of block diagrams to avoid obscuring embodiments, and further, details relating to the implementation of such block diagram configurations may be shown considering the fact that the embodiment depends heavily on the computing system in which it is implemented, i.e., such details should be within the scope of those skilled in the art. Where certain details (e.g., circuits) are described to illustrate an exemplary embodiment, it should be obvious to those skilled in the art that the embodiment can be implemented without these specific details or using variations thereof. Therefore, this description should be considered illustrative and not limiting.

[0081] The term "combined" may be used herein to refer to any type of direct or indirect relationship between the components in question, and may apply to electrical, mechanical, fluid, optical, electromagnetic, electromechanical, or other connections. Furthermore, terms such as "first," "second," etc., may be used herein solely for the purpose of facilitating discussion and, unless otherwise indicated, do not have any specific temporal or chronological meaning.

[0082] When used in this application and claims, a list of items joined by the term "one or more of ~" may mean any combination of the enumerated terms. For example, the phrase "one or more of A, B, or C" may mean A, B, C, A and B, A and C, B and C, or A, B and C.

[0083] Those skilled in the art will understand from the foregoing description that the broad techniques of the embodiments can be implemented in various forms. Therefore, although the embodiments have been described in relation to specific examples, the true scope of the embodiments should not be limited in this way, as other modifications will become apparent to those skilled in the art based on the drawings, specification and the following claims.

Claims

1. A computing system, Network controller and A processor coupled to the aforementioned network controller, The processor includes, The memory includes a set of executable program instructions, and when the instructions are executed by the processor, the processor... Determine a first proposed change to an existing resource allocation associated with a first application on a first node of the computing system, the first proposed change being determined at least in part on the requested resource allocation associated with the pending application and a first tolerance associated with the first application. The first proposed modification is issued to the first application via the first bidirectional interface. If the first application accepts the first proposed modification via the first bidirectional interface, the first proposed modification is implemented. A computing system that makes something happen.

2. The first proposed modification includes a reduction to the existing resource allocation within the tolerance limits specified by the first application, and the instruction, when executed, further to the processor, The first node performs the requested resource allocation, Activate the pending application on the first node. A computing system according to claim 1, which causes the following to happen.

3. The first proposed modification includes migrating the first application to a second node, and the instruction, when executed, further to the processor, Determine a second proposed change to the existing resource allocation associated with the second application on the second node of the computing system, the second proposed change being determined at least in part on the existing resource allocation associated with the first application and the second tolerance associated with the second application. The second proposed change is issued to the second application via the second bidirectional interface. If the second application accepts the second proposed modification via the second bidirectional interface, it implements the second proposed modification. A computing system according to claim 1, which causes the following to happen.

4. When the aforementioned instruction is executed, it further instructs the processor to: Multiple bids are received from corresponding applications via the first bidirectional interface. A comparison of the aforementioned multiple bids was conducted, Based on the above comparison, the first application is selected as the successful bidder. A computing system according to claim 1, which causes the following to happen.

5. When the aforementioned instruction is executed, it further instructs the processor to: Based on a programmable whitelist manifest listing trusted applications used for matching, determine whether one or more of the pending applications or the first applications are not trusted. If one or more of the pending applications or the first applications are determined to be untrusted, the first proposed change will be invalidated and measures will be taken based on the configured policy. A computing system according to claim 1, which causes the following to happen.

6. The computing system according to any one of claims 1 to 5, wherein the instruction, when executed, causes the processor to issue one or more further modifications to one or more corresponding applications in the first node if the first application does not accept the first modification.

7. A semiconductor device, One or more circuit boards, Includes logic coupled to one or more substrates, The logic is at least partially implemented in one or more configurable logics or fixed-function hardware logics, and the logic coupled to one or more boards is Determine a first proposed change to an existing resource allocation associated with a first application on a first node, the first proposed change being determined at least in part on the requested resource allocation associated with a pending application and a first tolerance associated with the first application. The first proposed modification is issued to the first application via the first bidirectional interface. If the first application accepts the first proposed modification via the first bidirectional interface, the first proposed modification is implemented. Device.

8. The first proposed modification includes a reduction to the existing resource allocation within the tolerance limits specified by the first application, and the logic coupled to one or more boards is The first node performs the requested resource allocation, Activate the pending application on the first node. The apparatus according to claim 7.

9. The first proposed modification includes migrating the first application to a second node, wherein the logic coupled to one or more boards is Determine a second proposed change to the existing resource allocation associated with the second application in the second node, the second proposed change being determined at least in part on the existing resource allocation associated with the first application and the second tolerance associated with the second application. The second proposed change is issued to the second application via the second bidirectional interface. If the second application accepts the second proposed modification via the second bidirectional interface, the second proposed modification is implemented. The apparatus according to claim 7.

10. The logic coupled to one or more substrates is Multiple bids are received from corresponding applications via the first bidirectional interface. A comparison of the aforementioned multiple bids was conducted, Based on the above comparison, the first application is selected as the successful bidder. The apparatus according to claim 7.

11. The logic coupled to one or more substrates is Based on a programmable whitelist manifest listing trusted applications used for matching, determine whether one or more of the pending applications or the first applications are not trusted. If one or more of the pending applications or the first applications are determined to be untrusted, the first proposed change is invalidated and measures are taken based on the configured policy. The apparatus according to claim 7.

12. The apparatus according to any one of claims 7 to 11, wherein the logic coupled to one or more substrates issues one or more further modifications to one or more corresponding applications in the first node if the first application does not accept the first modification.

13. The apparatus according to any one of claims 7 to 11, wherein the logic coupled to one or more substrates includes transistor channel regions disposed on the one or more substrates.

14. A computer program comprising a set of executable program instructions, wherein, when executed by a computing system, the instructions are configured to perform the following actions on the computing system: Determine a first proposed change to an existing resource allocation associated with a first application on a first node, the first proposed change being determined at least in part on the requested resource allocation associated with a pending application and a first tolerance associated with the first application. The first proposed modification is issued to the first application via the first bidirectional interface. If the first application accepts the first proposed modification via the first bidirectional interface, the first proposed modification is implemented. A computer program that makes something happen.

15. The first proposed modification includes a reduction to the existing resource allocation within the tolerance limits specified by the first application, and the instruction, when executed, further affects the computing system. The first node performs the requested resource allocation, Activate the pending application on the first node. A computer program according to claim 14 that causes something to happen.

16. The first proposed modification includes migrating the first application to a second node, and the instruction, when executed, further affects the computing system. Determine a second proposed change to the existing resource allocation associated with the second application in the second node, the second proposed change being determined at least in part on the existing resource allocation associated with the first application and the second tolerance associated with the second application. The second proposed change is issued to the second application via the second bidirectional interface. If the second application accepts the second proposed modification via the second bidirectional interface, it implements the second proposed modification. A computer program according to claim 14 that causes something to happen.

17. When the instruction is executed, it further commands the computing system Multiple bids are received from corresponding applications via the first bidirectional interface. A comparison of the aforementioned multiple bids was conducted, Based on the above comparison, the first application is selected as the successful bidder. A computer program according to claim 14 that causes something to happen.

18. When the instruction is executed, it further commands the computing system Based on a programmable whitelist manifest listing trusted applications used for matching, determine whether one or more of the pending applications or the first applications are not trusted. If one or more of the pending applications or the first applications are determined to be untrusted, the first proposed change will be invalidated and measures will be taken based on the configured policy. A computer program according to claim 14 that causes something to happen.

19. The computer program according to any one of claims 14 to 18, wherein the instruction, when executed, causes the computing system to issue one or more further modifications to one or more corresponding applications on the first node if the first application does not accept the first modification.

20. A method performed by at least one processor of a computing system, wherein the method is: A step of determining a first proposed change to an existing resource allocation associated with a first application on a first node, wherein the first proposed change is determined at least in part on a requested resource allocation associated with a pending application and a first tolerance associated with the first application. The steps include issuing the first proposed change to the first application via a first bidirectional interface, If the first application accepts the first proposed change via the first bidirectional interface, the steps include implementing the first proposed change, A method that includes this.

21. The first proposed modification includes a reduction to the existing resource allocation within the tolerance limits specified by the first application, and the method is: The first node performs the requested resource allocation, The steps include activating the pending application at the first node, The method according to claim 20, further comprising:

22. The first proposed modification includes migrating the first application to a second node, and the method is as follows: A step of determining a second proposed change to an existing resource allocation associated with a second application in the second node, wherein the second proposed change is determined at least in part on the existing resource allocation associated with the first application and a second tolerance associated with the second application. The steps include issuing the second proposed change to the second application via a second bidirectional interface, If the second application accepts the second proposed modification via the second bidirectional interface, the steps include implementing the second proposed modification, The method according to claim 20, further comprising:

23. The steps include receiving multiple bids from corresponding applications via the first bidirectional interface, The steps include: conducting a comparison between the aforementioned multiple bids, A step of selecting the first application as the successful bidder based on the above comparison, The method according to claim 20, further comprising:

24. A step of determining whether one or more of the pending applications or the first applications are not trusted, based on a programmable whitelist manifest listing trusted applications used for matching, If it is determined that one or more of the pending applications or the first applications are not trusted, the first proposed change is disabled and measures are taken based on the configured policy. The method according to claim 20, further comprising:

25. If the first application does not accept the first proposed change, the step of issuing one or more further proposed changes to one or more corresponding applications on the first node. The method according to any one of claims 20 to 24, further comprising:

26. A computer-readable storage medium storing a computer program according to any one of claims 14 to 19.

Citation Information

Patent Citations

  • Resource accommodation negotiation system

    JP1999212930A

  • Technologies for cache side channel attack detection and mitigation

    US20190042739A1