Adjusting performance of a computing system
Patent Information
- Application Number
- CN202180022002.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-03-17
- Filing Date
- 2021-01-19
- Publication Date
- 2026-10-09
- Estimated Expiration
- 2041-01-19
AI Technical Summary
在大多数计算环境中,峰值资源要求是不需要的,导致云服务提供商对资源的低效使用以及云服务消费者的成本升高
Smart Images

Figure CN115298651B_ABST
Abstract
Description
Technical Field
[0001] The field of this invention generally relates to tuning the performance of computing systems, and more specifically, to minimizing the amount of unused resources allocated in cloud-based service systems. Background Technology
[0002] Computing systems can perform compute-as-a-service. For example, a computing system connected to the World Wide Web can accept commands to execute computing workloads and then perform those workloads. A computing system can consist of multiple networked computing devices. In some instances, this computing system may be referred to as a cloud computing system.
[0003] The performance of a computing system depends on the types of resources it uses. For example, a computing system's performance may be affected by its CPU, its GPU or other accelerator resources, its memory resources, and its network resources. Some computing systems allow dynamic swapping of system resources designated for performing specific tasks.
[0004] Sometimes, the size of cloud services is determined and sold accordingly based on meeting estimated peak resource requirements. In most computing environments, peak resource requirements are unnecessary, leading to inefficient use of resources by cloud service providers and increased costs for cloud service consumers. If allocated cloud service resources could be more closely mapped to the computing needs of cloud service consumers, both cloud service providers and consumers could make better use of computing resources. Summary of the Invention
[0005] Various embodiments provide methods for tuning the performance of a computing system. Further embodiments provide a computing system configured to implement the methods described above. Additionally, embodiments of computer program products are provided that enable the computing system to operate according to the methods described above. Advantageous embodiments are described in the dependent claims. Embodiments of the invention can be freely combined with each other, provided they are not mutually exclusive.
[0006] Various embodiments provide methods for tuning the performance of a computing system, including:
[0007] The computing system receives at least one command from the client to execute a computing workload;
[0008] The computing system allocates its system resources to the client and performs the computing workload.
[0009] The computing system uses an identification method to identify the first system resource that limits the execution performance of the computing workload.
[0010] The computing system performs temporary adjustments to the allocation of resources from the first system to the client;
[0011] The computing system evaluates whether temporary adjustments to the allocation of first-system resources to clients improve the performance of computing workloads.
[0012] If a temporary adjustment to the allocation of the first system resources to the client improves the performance of the computing workload, the computing system sends a message to the client indicating that the allocation of the first system resources to the client can be permanently adjusted; and
[0013] When the computing system receives an instruction from the client to perform a permanent adjustment to the allocation of the first system resources to the client, the computing system performs the permanent adjustment to the allocation of the first system resources to the client.
[0014] In another aspect, the present invention relates to a computing system configured to implement the methods described above. In yet another aspect, the present invention relates to a computer program product for operating a computing system, the computer program product comprising a computer-readable storage medium having program instructions implemented therewith, the program instructions being executable by a processor to cause the computing system to operate according to the methods described above. Attached Figure Description
[0015] The embodiments will now be explained in more detail by way of example only, with reference to the accompanying drawings, in which:
[0016] Figure 1 It describes a cloud computing environment.
[0017] Figure 2 It describes a set of functional abstraction layers provided by the cloud computing environment.
[0018] Figure 3 A block diagram of the computing system is depicted.
[0019] Figure 4 A flowchart detailing how a computing system tunes its performance is presented.
[0020] Figure 5 A flowchart detailing an example of how a computing system can determine how temporary adjustments to the allocation of first-system resources to clients improve the performance of computing workloads, and...
[0021] Figure 6 A block diagram depicts clients competing for system resources in an auction, as well as other clients. Detailed Implementation
[0022] The various embodiments of the present invention are described for illustrative purposes and are not intended to be exhaustive or limited to the disclosed embodiments. Many modifications and variations will be apparent to those skilled in the art without departing from the scope and spirit of the described embodiments. The terminology used herein is chosen to best explain the principles of the embodiments, their practical application, or improvements to existing technologies in the market, or to enable others skilled in the art to understand the embodiments disclosed herein.
[0023] Cloud infrastructure removes a significant burden from a company's IT department. IT departments no longer need to build data centers, maintain servers, networks, storage, and support infrastructure such as cooling and power; these can be delegated to cloud service providers. However, because some companies cannot achieve their business goals with sufficient performance using smaller, cheaper configurations, some rely on large and expensive cloud service packages and instances. Consequently, some companies incur significant costs for cloud services. Often, because companies rarely rent cloud services based on the actual data or computing workload they perform, but rather on estimated peak resource requirements, most rented cloud services are unused most of the time.
[0024] Given this context, a growing number of cloud infrastructure providers are offering so-called serverless, lambda, or function-as-a-service (CAS) provisioning. With these services, users no longer need to submit requests for infrastructure resources on which they can run their applications. Instead, they can simply submit the individual functions that make up their applications and thus delegate the scaling and scheduling of the infrastructure resources required to execute those functions to the cloud service provider. With this serverless provision, the end user typically provides the functions to be performed along with some information about resource requirements. This is preferable for both users and cloud service providers if the amount of unused resources is minimized and more closely linked to the business benefits achievable by running a given computing workload.
[0025] In one aspect, the present invention relates to a method for tuning the performance of a computing system. According to an embodiment, the computing system may be a PC, a group of PCs, a server system connected to the World Wide Web, a group of servers, or a cloud computing system. The method includes the computing system receiving from a client at least one command to execute a computing workload. The workload may include a computing task or multiple computing subtasks to be performed by the computing system. For example, a computing task or subtask may include performing calculations, analyzing and storing data, serving web pages, or providing database functionality. Subtasks of the computing workload may be completed within a continuous time period or within multiple separate time periods. According to an embodiment, the computing workload is submitted to the computing system as a separate function by the client.
[0026] According to an embodiment, the computing system can receive a request for system resources from the client before receiving a command to execute a computing workload. By requesting system resources, the client can specify which system resources the computing system will make available for executing the computing workload. Depending on which system resources the client selects, the task can be executed more or less quickly.
[0027] The method also includes allocating system resources of the computing system to a client from the computing system, and executing computational workloads by the computing system. According to embodiments, system resources can be allocated to a client according to specifications submitted by the client or the computing system itself. The computing system can use the system resources allocated to the client to execute computational workloads delegated by the client. The computing system can then apply an identification method to identify a first system resource among the system resources that limits the performance of the computational workload. Therefore, the computing system can identify bottlenecks preventing the computational workload from executing faster, more efficiently, or more economically. The computing system then performs a temporary adjustment to the allocation of the first system resources to the client. According to embodiments, this may include exchanging the provision of the first system resources with another system component. For example, a different CPU may be allocated to the client. According to other embodiments, the adjustment may include adjusting the amount of the first system resources, such as the amount of memory. According to some embodiments, the temporary adjustment may be temporary, meaning it is restored after a predetermined amount of time, or meaning it is restored under certain conditions, such as if the computing system resources need to be used for other tasks.
[0028] The method also includes the computing system evaluating whether a temporary adjustment to the allocation of first system resources to the client improves the performance of the computing workload. According to an embodiment, this can be achieved by monitoring whether the computing workload or portions of the computing workload perform faster when the allocation of the first system resources is adjusted. If the temporary adjustment to the allocation of the first system resources to the client improves the performance of the computing workload, the computing system sends a message to the client indicating that the allocation of the first system resources to the client can be permanently adjusted. According to an embodiment, this message can be a system call, a network message, an email, a text message displayed within the computing system's management interface, or any other type of message.
[0029] Upon receiving an instruction from the client to permanently adjust the allocation of a first system resource to the client, the computing system performs the permanent adjustment. According to an embodiment, the instruction is received by the computing system via its management interface. According to some embodiments, when the allocation of the first system resource to the client is changed, the allocation of at least one additional system resource to the client can also be changed. The proposed method can have the advantage of allowing the identification and removal of bottlenecks, enabling faster execution of computing workloads.
[0030] According to one embodiment, the computing system is characterized by at least one service gateway configured to communicate with clients. According to another embodiment, the service gateway is a web server. According to yet another embodiment, the computing system is characterized by a resource allocator that allows the allocation of resources to clients. According to some embodiments, the resource allocator is configured to identify a first system resource that limits the performance of a computing workload. According to other embodiments, the task can be performed by another entity within the computing system. According to yet another embodiment, the computing system may be characterized by multiple partitions, each containing multiple resources under the control of a resource allocator within the computing system.
[0031] According to embodiments, system resources are selected from a group including central processing unit (CPU) resources, graphics processing unit (GPU) resources, quantum processing unit (QPU) resources, field-programmable gate array (FPGA) resources, dedicated accelerator resources, network resources, random access memory resources, non-volatile data storage resources, and database resources. This can have the advantage that a wide range of system resource allocations can be tailored to the requirements of the computing workload. Other types of system resources can also be used. CPU and GPU resources are the primary computing resources required for computationally intensive tasks such as scientific computing, cryptographic and cryptocurrency computing, and various types of data analysis and processing. QPUs utilize quantum effects to perform computations. Field-programmable gate arrays are logic blocks with customizable functionality. Therefore, they can be programmed to perform specific tasks with a high degree of efficiency. Other types of dedicated accelerators can also be used. Increasing network resources may be beneficial if network connectivity is congested or for network-intensive tasks such as providing online services. Many types of computing workloads benefit from increasing the amount of available random access memory. Tasks that process large amounts of data typically benefit from increasing or upgrading non-volatile data storage resources. Non-volatile data storage resources are data storage devices that retain their state when their power is lost, such as hard disk drives (HDDs), solid-state drives (SDDs), or non-volatile memory (NVMe) drives. Finally, database-intensive tasks should be run with sufficient database resources. According to embodiments, the allocation of these resources can be adjusted by swapping the allocation of underlying components of the computing system. For example, different hard disk drives can be allocated to clients. According to further embodiments, resource allocation can be adjusted by increasing or decreasing the amount of resources provided to clients. For example, 1000GB of storage can be allocated to a client, and adjustments may involve allocating more storage space to the client. According to other embodiments, adjustments may also involve changing other parameters, such as disk access speed limits, network priorities, etc.
[0032] According to an embodiment, the identification method includes executing at least one algorithm selected from the group consisting of heuristic algorithms, machine learning algorithms, and algorithms for multivariate analysis. This algorithm can allow identification of which resources should be modified to improve the performance of a computational workload. A heuristic algorithm is one that can provide a near-optimal solution to a given problem. Heuristic algorithms generally have the advantage of being easier to implement than exact algorithms and do not necessarily have to find the optimal solution, but rather find an appropriate solution quickly. Machine learning algorithms can utilize various machine learning methods. Machine learning methods are generally divided into a learning or training phase and an application or inference phase. In the learning phase, the machine learning algorithm can use real-world data to acquire information. In the application phase, the machine learning algorithm can apply this knowledge to identify system resources that can be adjusted to improve the performance of a computational workload. The application of machine learning algorithms can have the advantage of identifying bottlenecks with a very low error rate. Algorithms for multivariate analysis allow estimation of the effects of simultaneously changing multiple parameters. Applying this algorithm is advantageous for determining the effects of simultaneously adjusting the allocation of multiple system resources.
[0033] According to some embodiments, the method further includes: if a temporary adjustment to the allocation of a first system resource to the client does not improve the performance of the computing workload, adjusting the identification method; applying the adjusted identification method to the computing system, the adjusted identification method identifying a second system resource among the system resources that limits the performance of the computing workload; performing a temporary adjustment to the allocation of the second system resource to the client; evaluating whether the temporary adjustment to the allocation of the second system resource to the client improves the performance of the computing workload; if the temporary adjustment to the allocation of the second system resource to the client improves the performance of the computing workload, sending a message to the client indicating that the allocation of the second system resource to the client can be permanently adjusted; and, if the computing system receives an instruction from the client to perform a permanent adjustment to the allocation of the second system resource to the client, performing the permanent adjustment to the allocation of the second system resource to the client. If the temporary adjustment to the allocation of the first system resource to the client is unsuccessful, this may indicate that the identification method is incorrect or insufficient for the situation at hand. The proposed method may have the advantage that the identification method can be modified to successfully identify the system resource that truly represents the bottleneck in performing the computing workload.
[0034] According to one embodiment, if a temporary adjustment to the client's second system resources improves the execution of the computing workload, the computing system will not introduce further identification methods. According to another embodiment, the computing system can change the identification method again and repeat the process. According to some embodiments, the process is repeated multiple times until an identification method is selected that successfully identifies the system resources representing the bottleneck. According to one embodiment, the process can be repeated a fixed number of times. According to another embodiment, the process can be repeated until a fixed amount of time has elapsed.
[0035] According to another embodiment, identifying the first system resource may further include the computing system classifying the type of computation performed or the type of software run during the execution of the computing workload, and the computing system consulting a resource usage profile associated with the type of computation or software, which specifies that the first system resource may limit execution performance. This can have the advantage of quickly and accurately identifying bottlenecks by considering the type of computation performed or the type of software run. Specific types of computation will typically have unique resource usage patterns. The computing system may include, or be accessible to, a database that identifies the types of system resources heavily used when performing a specific type of computation or when using a specific type of software. The identification method may use this information to determine whether the first system resource should be adjusted. For example, the computing workload may include running scientific software. The identification method may then access the database to obtain information that the specific scientific software requires a large amount of RAM. The computing system may then temporarily adjust the amount of RAM allocated to the client and assess whether this changes the execution performance of the computing workload.
[0036] According to another embodiment, temporarily and / or permanently adjusting the allocation of first system resources to the client includes increasing or decreasing a portion of the first system resources allocated to the client. For example, the amount of RAM allocated to the client may be increased. It should be noted that decreasing the amount of resources allocated to the client can also be beneficial. This may be useful, for example, in reducing the client's operating costs or expenses without compromising performance. This can have the benefits of improved customer satisfaction, increased customer retention, and thereby increased revenue for the cloud service provider.
[0037] According to a further embodiment, the evaluation by the computing system of whether a temporary adjustment to the allocation of first system resources to the client improves the performance of the computing workload includes: quantifying a first performance of the computing workload before the temporary adjustment; quantifying a second performance of the computing workload during the temporary adjustment; and determining that the temporary adjustment improves the performance of the computing workload if the second performance exceeds the first performance. The computing system compares the performance before the temporary adjustment to the allocation with the performance when the temporary adjustment to the allocation takes effect. This can have the advantage of providing a rapid comparison between the performance with and without the adjustment.
[0038] According to another embodiment, the method may further include: quantifying a third execution performance of the computational workload after temporarily adjusting the allocation of first system resources to clients; and determining that the temporary adjustment improved the execution performance of the computational workload if the second execution performance exceeds the third execution performance and exceeds the first execution performance. Therefore, the third execution performance is quantified after the temporary adjustment has been reversed. If the temporary adjustment was beneficial, the third execution performance will be inferior to the second execution performance. In some cases, simply comparing the first execution performance with the second execution performance may produce inaccurate results. For example, the improved execution performance when the temporary adjustment is in effect may be due to external factors unrelated to the temporary adjustment. The temporary adjustment of the first system resources may also cause changes within the computational system that persist even after the temporary adjustment to the allocation of the first system resources to clients has been reversed. In this case, a permanent adjustment to the allocation of the first system resources to clients is not required. Therefore, this embodiment may have the advantage of allowing a more accurate determination of whether a permanent adjustment to the allocation of the first system resources to clients would be beneficial.
[0039] According to another embodiment, the method further includes, by the computing system, data obtained by quantifying the first and second execution performance, included in a message to the client to provide the client with a prediction of performance enhancements that could be obtained by performing a permanent adjustment to the allocation of the first system resources to the client. This can have the advantage of providing the client with information indicating the effect of adjusting the allocation of the first system resources to the client. According to embodiments, the message may also contain further information about the proposed adjustment, such as the resource type of the first system resources (CPU, RAM, etc.), the extent to which the first system resources will be adjusted (e.g., the amount of RAM added), or a timeline detailing when and / or for how long the adjustment will take effect.
[0040] According to other embodiments, the method may further include having the computing system calculate the difference between a first execution performance and a second execution performance, and including this performance difference in a message to the client. According to embodiments, the difference in execution time of the computing workload can be provided to the client. The client can then compare the execution times and determine whether the allocation of the first system resources to the client should be permanently adjusted. This embodiment may have the advantage of allowing the quantification and transmission of the effects of adjusting the allocation of the first system resources to the client.
[0041] According to another embodiment, the method further includes receiving a first command from the computing system from the client to execute a subtask of a computing workload, and, while executing the subtask, performing a temporary adjustment by the computing system to the allocation of first system resources to the client. According to this embodiment, the subtask can be triggered to execute by a command from the client. According to this embodiment, while executing the subtask, the computing system temporarily adjusts the allocation of first system resources to the client. This can have the advantage of allowing an immediate and rapid comparison of performance with and without temporary adjustments regarding a particular subtask.
[0042] According to other embodiments, the method further includes: receiving a command from a client by a computing system to execute a subtask of a computing workload, and executing the subtask until completion; after the subtask is completed, performing a temporary adjustment by the computing system to the allocation of first system resources to the client; and re-executing the subtask of the computing workload if the temporary adjustment takes effect. According to this embodiment, the temporary adjustment is only effective when the subtask is re-executed. This can have the advantage that the subtask is not disturbed by any adjustment during its first execution. According to an embodiment, evaluating whether the temporary adjustment to the allocation of first system resources to the client improves the performance of the computing workload may include comparing the performance during the execution of the subtask with the performance during the re-execution of the subtask. According to some embodiments, the subtask is aborted when it is first executed or when it is executed again. For example, the re-execution of the subtask may be aborted when sufficient data for comparing the performance of subtasks with and without adjustments has been collected.
[0043] According to another embodiment, the method further includes receiving a first command from the client by the computing system to execute a first subtask of the computing workload, and executing the first subtask until completion; after the first subtask is completed, performing a temporary adjustment to the allocation of first system resources to the client by the computing system; and receiving a second command from the client by the computing system to execute a second subtask of the computing workload, and executing the second subtask of the computing workload. According to the embodiment, evaluating whether the temporary adjustment to the allocation of first system resources to the client improves the performance of the computing workload may include comparing the performance during the execution of the first subtask with the performance during the execution of the second subtask. According to this embodiment, the temporary adjustment is not performed while the first subtask is being executed. Instead, the computing system waits for the first subtask to complete. Only the second subtask is executed while the temporary adjustment is in effect. This can have the advantage that resource reallocation does not need to be performed while the subtask is being executed, and that the subtask does not need to be re-executed to obtain comparison data.
[0044] According to a further embodiment, the method may further include the computing system inserting a price for permanently adjusting the allocation of a first computing resource to the client into a message to the client, and, in response to receiving an instruction from the client, if the instruction contains information indicating that the client agrees to the price, performing the permanent adjustment of the allocation of the first computing resource to the client. Therefore, the message from the computing system to the client can be a proposal for adjusting the first resource. This can have the advantage that a price for permanently adjusting the allocation of the first system resource can be presented to the client. The client can then decide to purchase the adjusted allocation of the first system resource. According to an embodiment, the instruction for performing the permanent adjustment of the allocation of the first system resource to the client is a purchase order. According to some embodiments, the purchase order is linked to a financial transaction or includes confirmation of a financial transaction.
[0045] According to some embodiments, the instruction from the client includes a bid, and the method further includes the computing system determining that a temporary adjustment to the allocation of a first system resource to another client improves the performance of additional computing workloads on the other client; the computing system sending a message to the other client indicating that the allocation of the first system resource to the other client can be permanently adjusted; in response, the computing system receiving additional instructions from the other client to perform a permanent adjustment to the allocation of the first system resource to the other client, the additional instructions including an additional bid; and in response to receiving the instructions and the additional instructions, if the bid is higher than the additional bid, the computing system performing the permanent adjustment to the allocation of the first system resource to the client. Therefore, a method is provided that allows multiple clients to bid for a system resource. This can have the advantage of determining an appropriate market price for providing system resources. For example, in a partition of a cloud computing system with a limited amount of RAM resources, the computing system can send a message to a first client and multiple other clients indicating that adding one gigabyte of RAM resources will improve the performance of the corresponding workloads on the clients. Each client can then make a bid. If the first client sets the maximum bid, the amount of RAM allocated to the first client increases by one gigabyte. If another client bids higher than the first client, that amount of RAM is allocated to that other client.
[0046] According to an embodiment, computational workloads are executed on virtual machines within a computing system. The virtual machine allows the computing system to run an operating system in an encapsulated manner. The computing system may feature multiple virtual machines, and these virtual machines may run on only a single processor. This can have the advantages of allowing more efficient use of hardware resources and allowing for the separation of applications, user space, and operating systems for different clients. Resource usage and allocation can be more easily tuned. According to an embodiment, the computing system is characterized by virtual machines that allow for adjustments to resource allocation to clients. For example, the virtual machine may allow for adjustments to how much RAM is allowed to be used when executing client-side computational workloads.
[0047] According to an embodiment, computational workloads can be executed within Linux containers on a computing device of a computing system. Linux containers allow the computing system to run processes in an encapsulated manner. The computing system may feature multiple Linux containers, and these multiple Linux containers can run on a single processor. This can have the advantages of Linux containers allowing for more efficient use of hardware resources and separating applications, user spaces, and operating systems from different clients. Resource usage and allocation can be more easily tuned. According to an embodiment, the computing system features Linux containers that allow for adjustments to the allocation of resources to clients. For example, a Linux container may allow adjustments to how much RAM is allowed to be used when executing computational workloads on clients.
[0048] According to one embodiment, the system resources of the computing system are distributed across multiple networked computing devices. This can have the advantage of easily sharing resources within the computing system. The system resources of the computing system can be distributed across multiple networked computing devices within a local network. According to another embodiment, the system resources can be distributed across computing devices connected to the World Wide Web. The computing devices can be ordinary computers, web servers, database servers, or other types of computing devices. According to one embodiment, the computing devices are connected to the system resources of the computing system via a network. In some embodiments, the computing devices of the computing system can be dedicated to providing specific types of resources. For example, the computing devices can be dedicated to providing additional computing power via accelerators such as GPUs, QPUs, or FPGAs, and therefore can be equipped with multiple accelerators or accelerators of different performance levels. Another computing device can be dedicated to providing persistent storage on storage devices such as HDDs, SSDs, NVMes, or other storage devices, and can be characterized as an array of individual storage devices. Because the computing devices are networked within the computing system, resources can be quickly allocated to computing workloads that require these resources.
[0049] According to another embodiment, a computing system provides Infrastructure as a Service (IaaS) in a cloud computing environment by executing computing workloads. This can have the advantage of providing infrastructure on demand in a convenient manner. The term cloud computing refers to a type of computing infrastructure that allows computing resources to be provided on demand. According to an embodiment, the computing system can execute workloads on demand in a cloud environment. According to an embodiment, the computing system may include a service gateway that allows access to cloud services provided by the computing system. According to an embodiment, the service gateway is a web server. According to an embodiment, the computing system is characterized by a resource allocator. The resource allocator may be a computing device that allows the allocation of resources within the computing system. According to an embodiment, the resource allocator also provides scheduling capabilities for scheduling resources within the cloud. According to another embodiment, the resource allocator includes a mechanism for identifying a first system resource among system resources that limits the execution performance of computing workloads.
[0050] The present invention also relates to a computing system configured to receive at least one command from a client to execute a computing workload, allocate system resources of the computing system to the client and execute the computing workload, apply an identification method to identify a first system resource among the system resources that limits the execution performance of the computing workload, perform a temporary adjustment to the allocation of the first system resource to the client, evaluate whether the temporary adjustment to the allocation of the first system resource to the client improves the execution performance of the computing workload, and if the temporary adjustment to the allocation of the first system resource to the client improves the execution performance of the computing workload, send a message to the client indicating that the allocation of the first system resource to the client can be permanently adjusted, and, upon receiving an instruction from the client to perform a permanent adjustment to the allocation of the first system resource to the client, perform the permanent adjustment to the allocation of the first system resource to the client. Embodiments of the computing system may implement variations of the above methods in any combination.
[0051] The present invention also relates to a computer program product for operating a computing system, the computer program product including a computer-readable storage medium having program instructions embodied therein, the program instructions being executable by a processor to cause a physical computing system to receive at least one command from a client to execute a computing workload, allocate system resources of the computing system to the client and execute the computing workload, apply an identification method to identify a first system resource among the system resources that limits the execution performance of the computing workload, perform a temporary adjustment to the allocation of the first system resource to the client, evaluate whether the temporary adjustment to the allocation of the first system resource to the client improves the execution performance of the computing workload, if the temporary adjustment to the allocation of the first system resource to the client improves the execution performance of the computing workload, send a message to the client indicating that the allocation of the first system resource to the client can be permanently adjusted, and, upon receiving an instruction from the client to perform a permanent adjustment to the allocation of the first system resource to the client, perform the permanent adjustment to the allocation of the first system resource to the client. Embodiments of the computer program product can allow the computing system to perform any combination of the above-described methods in variations.
[0052] It is understood that although this disclosure includes a detailed description of cloud computing, the implementation of the teachings set forth herein is not limited to a cloud computing environment. Rather, embodiments of the invention can be implemented in conjunction with any other type of computing environment now known or developed hereafter.
[0053] Cloud computing is a service delivery model that enables convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, network bandwidth, servers, processing, storage, applications, virtual machines, and services) that can be rapidly provisioned and released with minimal management effort or interaction with service providers. This cloud model may include at least five features, at least three service models, and at least four deployment models.
[0054] The characteristics are as follows:
[0055] On-demand self-service: Cloud consumers can unilaterally and automatically supply computing power, such as server time and network storage, on demand without human interaction with service providers.
[0056] Wide Area Network (WAN) Access: Capabilities are available on the network and accessed through standard mechanisms that facilitate use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs).
[0057] Resource pooling: The provider's computing resources are pooled to serve multiple consumers using a multi-tenant model, where different physical and virtual resources are dynamically allocated and reallocated based on demand. Location independence has significance because consumers typically do not control or know the exact location of the resources provided, but can specify the location at a higher level of abstraction (e.g., country, state, or data center).
[0058] Rapid Flexibility: In some cases, the ability to scale outwards and inwards quickly and flexibly can be provided. For consumers, the available capacity often appears unlimited and can be purchased in any quantity at any time.
[0059] Measurement services: Cloud systems automatically control and optimize resource usage by leveraging metering capabilities at a level of abstraction appropriate to the service type (e.g., storage, processing, bandwidth, and active user accounts). Resource usage can be monitored, controlled, and reported, providing transparency to both the providers and consumers of the services being utilized.
[0060] The service model is as follows:
[0061] Software as a Service (SaaS): The capability offered to consumers is the ability to use the provider's applications running on cloud infrastructure. Applications can be accessed from various client devices through thin client interfaces such as web browsers (e.g., web-based email). Consumers do not manage or control the underlying cloud infrastructure, including the network, servers, operating system, storage, or even individual application capabilities, with the possible exception of limited user-specific application configuration settings.
[0062] Platform as a Service (PaaS): This provides consumers with the ability to deploy consumer-created or acquired applications onto cloud infrastructure using programming languages and tools supported by the provider. Consumers do not manage or control the underlying cloud infrastructure, including networks, servers, operating systems, or storage, but they have control over the deployed applications and the configuration of any application hosting environments.
[0063] Infrastructure as a Service (IaaS): This provides consumers with the capability to deliver processing, storage, networking, and other basic computing resources that enable them to deploy and run any software, which may include operating systems and applications. Consumers do not manage or control the underlying cloud infrastructure, but they do have control over the operating system, storage, deployed applications, and possibly limited control over chosen networking components (e.g., host firewalls).
[0064] The deployment model is as follows:
[0065] Private cloud: Cloud infrastructure operated solely by an organization. It can be managed by the organization or a third party and can exist on-site or off-site.
[0066] Community cloud: Cloud infrastructure shared by several organizations and supporting a specific community with shared concerns (e.g., tasks, security requirements, policies, and compliance considerations). It can be managed by an organization or a third party and can exist on-site or off-site.
[0067] Public cloud: Cloud infrastructure available to the general public or large industrial groups and owned by organizations that sell cloud services.
[0068] Hybrid cloud: A cloud infrastructure is a combination of two or more clouds (private, community, or public) that remain a single entity but are bound together by standardized or proprietary technologies that enable data and applications to be ported together (e.g., cloud bursting for load balancing between clouds).
[0069] Cloud computing environments are service-oriented, focusing on statelessness, loose coupling, modularity, and semantic interoperability. At the heart of cloud computing is the infrastructure of a network of interconnected nodes.
[0070] This invention can be a system, method, and / or computer program product at any possible level of technical detail integration. The computer program product may include a computer-readable storage medium (or media) having computer-readable program instructions thereon for causing a processor to perform aspects of the invention.
[0071] Computer-readable storage media can be tangible devices capable of retaining and storing instructions for use by an instruction execution device. Computer-readable storage media can be, for example, but not limited to, electronic storage devices, magnetic storage devices, optical storage devices, electromagnetic storage devices, semiconductor storage devices, or any suitable combination of the foregoing. A non-exhaustive list of more specific examples of computer-readable storage media includes the following: portable computer disks, hard disks, random access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random access memory (SRAM), portable optical disc read-only memory (CD-ROM), digital multifunction disc (DVD), memory sticks, floppy disks, mechanical encoding devices such as punch cards or recessed structures with instructions recorded thereon, and any suitable combination of the foregoing. As used herein, computer-readable storage media should not be construed as transient signals themselves, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through waveguides or other transmission media (e.g., light pulses through fiber optic cables), or electrical signals transmitted through wires.
[0072] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to a suitable computing / processing device, or via a network, such as the Internet, a local area network (LAN), a wide area network (WAN), and / or a wireless network, to an external computer or external storage device. The network may include copper cables, optical fibers, wireless transmission, routers, firewalls, switches, gateway computers, and / or edge servers. A network adapter card or network interface in each computing / processing device receives the computer-readable program instructions from the network and forwards them to a computer-readable storage medium within the respective computing / processing device.
[0073] Computer-readable program instructions used to perform the operations of this invention may be assembly instructions, instruction set architecture (ISA) instructions, machine instructions, machine-dependent instructions, microcode, firmware instructions, status setting data, integrated circuit configuration data, or source code or object code written in any combination of one or more programming languages (including object-oriented programming languages such as Smalltalk, C++, etc.) and procedural programming languages (such as the "C" programming language or similar programming languages). The computer-readable program instructions may be executed entirely on the user's computer, partially on the user's computer, as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter case, the remote computer may be connected to the user's computer via any type of network, including a local area network (LAN) or a wide area network (WAN), or may be connected to an external computer (e.g., via the Internet using an Internet service provider). In some embodiments, to perform aspects of this invention, electronic circuits, including, for example, programmable logic circuits, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), may execute computer-readable program instructions to personalize the electronic circuits by utilizing the status information of the computer-readable program instructions.
[0074] Various aspects of the present invention are described herein with reference to flowchart illustrations and / or block diagrams of methods, apparatus (systems), and computer program products according to embodiments of the invention. It will be understood that each block of the flowchart illustrations and / or block diagrams, as well as combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.
[0075] These computer-readable program instructions may be provided to a processor of a computer or other programmable data processing apparatus to produce a machine, such that the instructions, which execute via the processor of the computer or other programmable data processing apparatus, create means for implementing the functions / actions specified in one or more blocks of a flowchart and / or block diagram. These computer-readable program instructions may also be stored in a computer-readable storage medium that can direct a computer, programmable data processing apparatus, and / or other devices to operate in a particular manner, such that the computer-readable storage medium in which the instructions are stored includes an article of writing comprising instructions for implementing aspects of the functions / actions specified in one or more blocks of a flowchart and / or block diagram.
[0076] Computer-readable program instructions may also be loaded onto a computer, other programmable data processing apparatus or other device to cause a series of operational steps to be performed on the computer, other programmable apparatus or other device to produce a computer-implemented process, such that the instructions, which execute on the computer, other programmable apparatus or other device, perform the functions / actions specified in one or more boxes of a flowchart and / or block diagram.
[0077] The flowcharts and block diagrams in the figures illustrate the architecture, functionality, and operation of possible implementations of systems, methods, and computer program products according to various embodiments of the present invention. In this regard, each block in a flowchart or block diagram may represent a module, segment, or portion of instructions comprising one or more executable instructions for implementing a specified logical function. In some alternative embodiments, the functions marked in the blocks may occur in a non-linear order. For example, two blocks shown consecutively may actually be implemented as a single step, executed simultaneously, substantially simultaneously, with partial or complete time overlap, or these blocks may sometimes be executed in reverse order, depending on the functions involved. It will also be noted that each block in the block diagrams and / or flowcharts, and combinations of blocks in the block diagrams and / or flowcharts, may be implemented by a dedicated hardware-based system that performs the specified function or action or executes a combination of dedicated hardware and computer instructions.
[0078] Now for reference Figure 1 The diagram illustrates an illustrative cloud computing environment 50. As shown, the cloud computing environment 50 includes one or more cloud computing nodes 10 to which local computing devices used by cloud consumers can communicate. These local computing devices include, for example, personal digital assistants (PDAs) or cellular phones 54A, desktop computers 54B, laptop computers 54C, and / or automotive computer systems 54N. The nodes 10 can communicate with each other. They can be physically or virtually grouped (not shown) in one or more networks, such as private clouds, community clouds, public clouds, or hybrid clouds, or combinations thereof, as described above. This allows the cloud computing environment 50 to provide infrastructure, platform, and / or software as a service, without requiring cloud consumers to maintain resources on their local computing devices. It should be understood that... Figure 1 The types of computing devices 54A-N shown are for illustrative purposes only, and computing node 10 and cloud computing environment 50 can communicate with any type of computing device over any type of network and / or network-addressable connection (e.g., using a web browser).
[0079] Now for reference Figure 2 This demonstrates a cloud computing environment of 50 ( Figure 1 This provides a set of functional abstractions. These can be understood in advance. Figure 2 The components, layers, and functions shown are for illustrative purposes only, and embodiments of the invention are not limited thereto. As depicted, the following layers and corresponding functions are provided:
[0080] The hardware and software layer 60 includes hardware and software components. Examples of hardware components include: a host 61; a server 62 based on a RISC (Reduced Instruction Set Computer) architecture; a server 63; a blade server 64; a storage device 65; and a network and network components 66. In some embodiments, software components include network application server software 67 and database software 68.
[0081] The virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual server 71; virtual storage 72; virtual network 73, including virtual private network; virtual application and operating system 74; and virtual client 75.
[0082] In one example, management layer 80 can provide the following functionalities: Resource Provisioning 81 provides dynamic procurement of computing resources and other resources used to perform tasks within the cloud computing environment. Metering and Pricing 82 provides cost tracking when utilizing resources in the cloud computing environment, as well as billing or invoicing for consuming these resources. In one example, these resources may include application software licenses. Security provides authentication for cloud consumers and tasks, as well as protection for data and other resources. User Portal 83 provides access to the cloud computing environment for consumers and system administrators. Service Level Management 84 provides cloud resource allocation and management to meet the required service level. According to the present invention, this may include receiving at least one command from a client to execute a computing workload, allocating system resources to the client and executing the computing workload, applying an identification method to identify a first system resource among the system resources that limits the execution performance of the computing workload, performing a temporary adjustment to the allocation of the first system resource to the client, evaluating whether the temporary adjustment to the allocation of the first system resource to the client improves the execution performance of the computing workload, and if the temporary adjustment to the allocation of the first system resource to the client improves the execution performance of the computing workload, sending a message to the client indicating that the allocation of the first system resource to the client can be permanently adjusted, and, upon receiving an instruction from the client to perform a permanent adjustment to the allocation of the first system resource to the client, performing a permanent adjustment to the allocation of the first system resource to the client. Service Level Agreement (SLA) planning and fulfillment 85 provides for the pre-arrangement and procurement of cloud computing resources, wherein future needs are anticipated according to the SLA.
[0083] Workload 90 provides examples of functionalities that can be leveraged in a cloud computing environment. Examples of workloads and functionalities that can be provided from this layer include: mapping and navigation 91; software development and lifecycle management 92; virtual classroom delivery of education 93; data analytics and processing 94; transaction processing 95; and mobile desktop 96.
[0084] Figure 3A block diagram of computing system 301 is depicted. According to some examples, computing system 301 may be a cloud computing system. Computing system 301 is characterized by multiple networked computing devices. According to this example, one computing device of computing system 301 is a service gateway 302. Service gateway 302 may be a web server or another computing device that allows computing system 301 to communicate with external entities. Service gateway 302 can be accessed by client 303. Client 303 can use computing system 301 to perform computing workloads. For example, client 303 may send a request for system resources to service gateway 302. Service gateway 302 can then communicate with resource allocator 304 contained within partition 305 of computing system 301. Partition 305 includes a set of resources that can be used to perform computing workloads within computing system 301. Upon receiving a request for system resources, resource allocator 304 allocates system resources to client 303 according to the request. During the execution of computing workloads, resource allocator 304 may be used to temporarily or permanently change the allocation of system resources to client 303. According to some examples, resource allocator 304 can be configured to identify system resources that limit the performance of computational workloads. Partition 305, according to this example, includes three CPUs 306, three accelerators 307 (e.g., GPUs, FPGAs, or QPUs), three RAM units 308, and three data storage devices 309 (e.g., HDDs or SDDs). Other partitions 305 of computing system 301 may include resources in other combinations. Multiple clients 303 can use computing system 301 to perform computational workloads.
[0085] Figure 4 A flowchart detailing how a computing system can function is depicted. The computing system receives at least one command from a client to execute a computing workload (401). The computing system then allocates its system resources to the client and executes the computing workload (402). According to this example, the computing system applies an identification method to identify a first system resource that limits the execution performance of the computing workload (403). This can be achieved in various ways, such as through heuristic algorithms, machine learning algorithms, or algorithms used for multivariate analysis. According to some examples, more than one system resource that limits the execution performance of the computing workload can be identified.
[0086] The computing system can then perform a temporary adjustment to the allocation of the first system resources to the client (404). This could mean swapping a CPU allocated to the client with another CPU, or swapping a storage device allocated to the client with another storage device. Depending on other instances, this could mean allocating more or less RAM to the client, or increasing or decreasing the network bandwidth available for performing the computing workload. The computing system then evaluates whether the temporary adjustment to the allocation of the first system resources to the client improves the performance of the computing workload (405). The result of the evaluation forms the basis for subsequent decisions (406). If the performance is not improved, the allocation of the first system resources to the client is not made permanent (407). If the performance is improved, the computing system can send a message to the client that the allocation of the first system resources to the client can be permanently adjusted (408). This message may contain a quote indicating the price of the permanent adjustment and detailing the expected performance improvement relative to the proposed adjustment to the allocation of the first system resources.
[0087] If the computing system receives an instruction (409) to permanently adjust the first system resources, the computing system performs the permanent adjustment of the first system resources for the client (410). If the computing system does not receive the message, it does not permanently adjust the allocation of the first system resources to the client (407).
[0088] Figure 5 A flowchart detailing an example of how a computing system determines that a temporary adjustment to the allocation of first system resources to the client improves the execution performance of a computing workload is described. The computing system quantifies the first execution performance of the computing workload before the temporary adjustment (501). The computing system may also quantify the second execution performance of the computing workload during the temporary adjustment (502). According to this example, the computing system also quantifies the third execution performance of the computing workload after the temporary adjustment (503). The computing system then evaluates whether the second execution performance exceeds the third execution performance in addition to exceeding the first execution performance (504). If this is the case, the computing system may send a message to the client indicating that the allocation of the first system resources to the client can be permanently adjusted (505). If the second execution performance does not exceed the first and third execution performance, this means that the execution performance before or after the temporary adjustment to the allocation of the first system resources to the client is better than the execution performance at the time of the temporary adjustment. In this case, the computing system does not send a message to the client indicating that the allocation of the first system resources to the client can be permanently adjusted (506).
[0089] Figure 6A block diagram depicts client 601 and another client 604 competing for system resources of a computing system in an auction. After receiving a message from the computing system that allows adjustments to the allocation of system resources to client 601, client 601 can send a bid 602 to the computing system's service gateway 603. The computing system notifies the other client 604 that the allocation of system resources to the other client 604 can improve the performance of the other client's corresponding computing workload. The other client can then issue another bid 605. In this scenario, client 601 and the other client 604 participate in an auction for the computing system's limited resources. For example, both client 601 and the other client 604 may wish to utilize a specific CPU of the computing system. The computing system's service gateway 603 receives bid 602 from client 601 and another bid 605 from the other client 604. According to this example, either client 601 or the other client 604, which issues the highest bid, wins the auction and can utilize the computing system's CPU.
Claims
1. A method for tuning the performance of a computing system, comprising: The computing system receives at least one command from the client for executing a computing workload; The computing system allocates its system resources to the client, and the computing system executes the computing workload. The computing system applies an identification method to identify a first system resource among the system resources that limits the execution performance of the computing workload; The computing system performs a temporary adjustment to the allocation of the first system resources to the client; The computing system evaluates whether the temporary adjustment to the allocation of the first system resources to the client improves the execution performance of the computing workload; If the temporary adjustment to the allocation of the first system resources to the client improves the performance of the computing workload, then the computing system sends a message to the client indicating that the allocation of the first system resources to the client can be permanently adjusted; as well as When the computing system receives an instruction from the client to perform a permanent adjustment to the allocation of the first system resources to the client, the computing system performs the permanent adjustment to the allocation of the first system resources to the client. The computing system receives a first command from the client to execute a subtask of the computing workload; as well as When the subtask is executed, the computing system performs the temporary adjustment to the allocation of the first system resources to the client.
2. The method according to claim 1, wherein the system resources are selected from a group, the group including central processing unit (CPU) resources, graphics processing unit (GPU) resources, field-programmable gate array (FPGA) resources, dedicated accelerator resources, network resources, random access memory (RAM) resources, non-volatile data storage resources, and database resources.
3. The method of claim 1, wherein the identification method comprises executing at least one algorithm selected from a group, the group comprising heuristic algorithms, machine learning algorithms, and algorithms for multivariate analysis.
4. The method according to claim 1, further comprising: If the temporary adjustment to the allocation of the first system resources to the client does not improve the performance of the computing workload, then the identification method is adjusted. The identification method is adjusted by the computing system application, the adjusted identification method identifies a second system resource among the system resources, the second system resource limiting the execution performance of the computing workload; Perform a temporary adjustment to the allocation of the second system resources to the client; The computing system evaluates whether the temporary adjustment to the allocation of the second system resources to the client improves the execution performance of the computing workload; If the temporary adjustment to the allocation of the second system resources to the client improves the execution performance of the computing workload, then the computing system sends a message to the client indicating that the allocation of the second system resources to the client can be permanently adjusted; as well as When the computing system receives an instruction from the client to perform a permanent adjustment to the allocation of the second system resources to the client, the computing system performs the permanent adjustment to the allocation of the second system resources to the client.
5. The method according to claim 1, wherein, Identifying the first system resource includes: The computing system classifies the type of software running or the type of computation performed during the execution of the computing workload; and The computing system references a resource usage profile associated with the type of computing or the type of software, which indicates that the first system resources may limit the execution performance.
6. The method according to claim 1, wherein, The temporary and / or permanent adjustments to the allocation of the first system resources to the client include increasing or decreasing a portion of the first system resources allocated to the client.
7. The method according to claim 1, wherein, The evaluation by the computing system of whether the temporary adjustment to the allocation of the first system resources to the client improves the execution performance of the computing workload includes: Quantify the initial execution performance of the computational workload prior to the temporary adjustments; Quantifying the second execution performance of the computational workload during the temporary adjustment; and If the second execution performance exceeds the first execution performance, then it is determined that the temporary adjustment improved the execution performance of the computing workload.
8. The method according to claim 7, further comprising: Following the temporary adjustment to the allocation of the first system resources to the client, the third execution performance of the computing workload is quantified; as well as If the second execution performance exceeds the third execution performance in addition to exceeding the first execution performance, then it is determined that the temporary adjustment improved the execution performance of the computing workload.
9. The method according to claim 1, further comprising: The message sent by the computing system to the client includes data obtained by quantifying the first and second execution performance in order to provide the client with a prediction of performance enhancements that can be obtained by performing the permanent adjustment to the allocation of the first system resources to the client.
10. The method of claim 9, further comprising: The computing system calculates the performance difference between the first execution performance and the second execution performance, and includes the performance difference in the message sent to the client.
11. The method according to claim 1, further comprising: The computing system receives commands from the client to execute subtasks of the computing workload, and executes the subtasks until completion; After the subtask is completed, the computing system performs the temporary adjustment to the allocation of the first system resources to the client; as well as If the temporary adjustment takes effect, the subtasks of the computational workload will be re-executed.
12. The method according to claim 1, further comprising: The computing system receives a first command from the client to execute a first subtask of the computing workload, and executes the first subtask until completion; After the first subtask is completed, the computing system performs the temporary adjustment to the allocation of the first system resources to the client; as well as The computing system receives a second command from the client to execute a second subtask of the computing workload, and executes the second subtask of the computing workload.
13. The method according to claim 1, further comprising: The computing system inserts the price for performing the permanent adjustment of the allocation of the first system resources to the client into the message of the client; as well as In response to receiving the instruction from the client, if the instruction contains information instructing the client to agree to the price, then the permanent adjustment to the allocation of the first system resources to the client is performed.
14. The method of claim 1, wherein the instruction from the client includes a bid, and the method further comprises: The temporary adjustment made by the computing system to the allocation of the first system resources to another client improves the performance of the additional computing workloads on the other client. The computing system sends a message to the other client indicating that the allocation of the first system resources to the other client can be permanently adjusted; In response, the computing system receives from the other client a further instruction to perform a permanent adjustment to the allocation of the first system resources to the other client, the further instruction including a further bid; as well as In response to receiving the instruction and the additional instruction, if the bid is higher than the additional bid, the computing system performs a permanent adjustment to the allocation of the first system resources to the client.
15. The method of claim 1, wherein the computing workload is executed on a virtual machine of the computing system.
16. The method according to claim 1, wherein the system resources of the computing system are distributed across multiple networked computing devices.
17. The method according to claim 1, wherein, The computing system provides Infrastructure as a Service in a cloud computing environment by executing the computing workloads.
18. A computing system, the computing system being configured to: Receive at least one command from the client to execute a computational workload; The system resources of the computing system are allocated to the client and the computing workload is executed. An identification method is applied to identify a first system resource among the system resources, the first system resource limiting the execution performance of the computing workload; Perform a temporary adjustment to the allocation of the first system resources to the client; Evaluate whether the temporary adjustment to the allocation of the first system resources to the client improves the performance of the computing workload; If the temporary adjustment of the allocation of the first system resources to the client improves the performance of the computing workload, then a message indicating that the allocation of the first system resources to the client can be permanently adjusted is sent to the client; Upon receiving an instruction from the client to perform a permanent adjustment to the allocation of the first system resources to the client, the permanent adjustment to the allocation of the first system resources to the client is performed. The computing system receives a first command from the client to execute a subtask of the computing workload; as well as When the subtask is executed, the computing system performs the temporary adjustment to the allocation of the first system resources to the client.
19. A computer program product for operating a computing system, the computer program product comprising program instructions executable by a processor to cause the computing system to: Receive at least one command from the client to execute a computational workload; The system resources of the computing system are allocated to the client and the computing workload is executed. An identification method is applied to identify a first system resource among the system resources, the first system resource limiting the execution performance of the computing workload; Perform a temporary adjustment to the allocation of the first system resources to the client; Evaluate whether the temporary adjustment to the allocation of the first system resources to the client improves the performance of the computing workload; If a temporary adjustment to the allocation of the first system resources to the client improves the performance of the computing workload, a message indicating that the allocation of the first system resources to the client can be permanently adjusted is sent to the client. Upon receiving an instruction from the client to perform a permanent adjustment to the allocation of the first system resources to the client, the permanent adjustment to the allocation of the first system resources to the client is performed. The computing system receives a first command from the client to execute a subtask of the computing workload; as well as When the subtask is executed, the computing system performs the temporary adjustment to the allocation of the first system resources to the client.
Citation Information
Patent Citations
Capacity Upgrade on Demand Automation
US20150052081A1
Resource manager
US9531607B1