Dynamically controlled workload execution by application

The application-based workload optimizer dynamically adjusts hardware settings to optimize information processing systems, addressing inefficiencies by aligning computing tasks with hardware capabilities, enhancing performance and efficiency.

CN119201472APending Publication Date: 2024-12-27DELL PROD LP
View PDF 1 Cites 0 Cited by

Patent Information

Application Number
CN202411400028.4
Authority / Receiving Office
CN · China
Patent Type
Applications(China)
Current Assignee / Owner
Priority Date
2015-02-03
Filing Date
2016-01-06
Publication Date
2024-12-27

AI Technical Summary

Technical Problem

Existing software components and architectures often fail to effectively utilize the performance capabilities of modern hardware in information processing systems, leading to inefficiencies in processing, storing, and transmitting information.

Method used

An application-based method and system for optimizing workload execution by determining computing tasks, identifying hardware resources, and configuring them according to workload policies, using a workload optimizer that includes a policy processing engine, monitoring engine, configuration engine, and plug-ins to dynamically adjust hardware settings.

Benefits of technology

Enhances the utilization of hardware resources to optimize workload execution, improving performance, efficiency, and adaptability of information processing systems to specific computing tasks and environments.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN119201472A_ABST
    Figure CN119201472A_ABST
Patent Text Reader

Abstract

The invention relates to workload execution dynamically controlled by an application, and specifically discloses a method and system for optimizing workload on an information handling system, including determining, by an application, a computing task for execution by the application. The application may determine workload attributes for computing tasks executed at the information handling system. Workload attributes are used by the application to dynamically determine workload policies for configuring hardware resources at the information handling system. After the application dynamically configures the hardware resources according to the workload policy, the application executes a compute task at the information handling system.
Need to check novelty before this filing date? Find Prior Art

Description

This application is a divisional application of Chinese patent application 201680008337.4, filed on January 6, 2016, entitled “Workload Execution Dynamically Controlled by Application”, the contents of which are incorporated herein by reference. Technical Field

[0001] The present invention relates generally to information processing systems and, more particularly, to workload execution dynamically controlled by applications. Background Art

[0002] As the value and use of information continues to increase, individuals and businesses seek additional ways to process and store information. One option that users can choose is an information processing system. An information processing system typically processes, compiles, stores, and transmits information or data for business, personal, or other purposes, thereby allowing users to exploit the value of information. Because technology and information processing needs and requirements vary between different users or applications, information processing systems may also vary in terms of the information processed, how the information is processed, how much information is processed, stored, or transmitted, and the speed and efficiency with which the information is processed, stored, or transmitted. Variations in information processing systems allow information processing systems to be generalized or configured for specific users or specific uses, such as financial transaction processing, airline reservations, enterprise data storage, or global communications. In addition, an information processing system may include various hardware and software components that may be configured to process, store, and transmit information, and may include one or more computer systems, data storage systems, and network systems.

[0003] As the performance of hardware used in information processing systems increases, many software components and architectures may not be able to effectively utilize the performance of the available hardware. Summary of the invention

[0004] In one aspect, a method for optimizing the workload of an information processing system by an application is disclosed, including determining, by the application, a computing task to be performed by the application in the information processing system. The method may include determining, by the application, a workload attribute of the computing task, the workload attribute including a dependency of the computing task on hardware resources included in the information processing system. The method may also include identifying, by the application, hardware resources present in the information processing system. Based on the determined workload attributes and the identified hardware resources, the method may include determining a workload policy for the computing task. In the method, the workload policy may specify hardware resources for performing the computing task at the information processing system. The method may also include implementing, by the application, the workload policy at the information processing system, including configuring the hardware resources specified in the workload policy. The method may also include performing the computing task at the information processing system according to the workload policy.

[0005] In another aspect, at least one non-transitory computer-readable medium including computer-readable instructions for optimizing workload on an information handling system through an application, the instructions being executable by a processor, is disclosed.

[0006] In another aspect, an information handling system is disclosed for optimizing workload on the information handling system by an application. BRIEF DESCRIPTION OF THE DRAWINGS

[0007] For a more complete understanding of the present invention and its features and advantages, reference is now made to the following description taken in conjunction with the accompanying drawings, in which:

[0008] Figure 1 A block diagram illustrating selected elements of an embodiment of an information handling system;

[0009] Figure 2 is a block diagram of selected elements of an embodiment of workload optimization;

[0010] Figure 3 is a block diagram of selected elements of an embodiment of distributed workload optimization;

[0011] Figure 4 is a block diagram of selected elements of an embodiment of a workload optimized server;

[0012] Figure 5 A flow chart illustrating selected elements of a method for dynamically controlled workload execution;

[0013] Fig. 6A and 6B A flow chart illustrating selected elements of a method for dynamically controlled distributed workload execution;

[0014] Figure 7 a flow chart illustrating selected elements of a method for optimizing a proprietary workload; and

[0015] Figure 8 A flow chart showing selected elements of a method for workload execution by an application dynamically controlled is shown. DETAILED DESCRIPTION

[0016] In the following description, details are set forth by way of examples to facilitate discussion of the disclosed subject matter. However, it will be apparent to one of ordinary skill in the art that the disclosed embodiments are exemplary and not exhaustive of all possible embodiments.

[0017] In this disclosure, reference numerals in hyphenated form refer to specific instances of elements, and reference numerals in unhyphenated form refer to elements generally or collectively. Thus, as an example (not shown in the drawings), device "12-1" refers to an instance of a class of devices, which may be collectively referred to as device "12", and any one of which may be generally referred to as device "12". In the drawings and description, the same reference numerals are intended to refer to the same elements.

[0018] For the purposes of this disclosure, an information handling system may include an operable hardware resource or a collection of hardware resources for computing, sorting, processing, sending, receiving, retrieving, initiating, switching, storing, displaying, indicating, detecting, recording, copying, processing or using various forms of information, intelligence, or data for business, science, control, entertainment, or other purposes. For example, an information handling system may be a personal computer, a PDA, a consumer electronic device, a network storage device, or other suitable device, and may vary in size, shape, performance, functionality, and price. An information handling system may include a memory, one or more processing resources, such as a central processing unit (CPU) or hardware or software control logic. Additional components of an information handling system may include one or more storage devices, one or more communication ports for communicating with external devices, and various input and output (I / O) devices such as a keyboard, a mouse, and a video display. An information handling system may also include one or more buses that are operable to send communications between various hardware components.

[0019] In addition, the information handling system may include firmware for controlling or communicating with, for example, hard drives, network circuits, memory devices, I / O devices, and other peripheral devices. As used in the present disclosure, firmware includes software embedded in information handling system components for performing predefined tasks. Firmware is typically stored in non-volatile memory, or in memory that does not lose stored data when power is lost. In some embodiments, firmware associated with an information handling system component is stored in non-volatile memory accessible to one or more information handling system components. In the same or alternative embodiments, firmware associated with an information handling system component is stored in non-volatile memory that is dedicated to the component and includes a portion of the component.

[0020] As will be described in further detail, the inventors of the present disclosure have discovered methods and systems for context and optimization. These methods and systems aggregate and export context information of coupled information processing systems in order to optimize the resources of the various information processing systems.

[0021] By reference Figure 1-Figure 8 The particular embodiments are best understood wherein like numerals are used to designate like and corresponding parts.

[0022] Figure 1 A block diagram of selected elements of an information handling system 100 according to an embodiment of the present disclosure is shown. In a specific embodiment, one or more information handling systems 100 perform one or more steps of one or more methods described or shown herein. In a specific embodiment, one or more information handling systems 100 provide the functionality described or shown herein. In a specific embodiment, software running on one or more information handling systems 100 performs one or more steps of one or more methods described or shown herein, or provides the functionality described or shown herein. A specific embodiment includes one or more parts of one or more information handling systems 100. Here, where appropriate, the information handling system mentioned may include a computing device, and vice versa. In addition, where appropriate, the information handling system mentioned may include one or more information handling systems. In addition to the information handling system 100, a network 155 is shown, which is external or remote relative to the information handling system 100.

[0023] like Figure 1 As shown, the components of the information handling system 100 include, but are not limited to, a processor subsystem 120 that may include one or more processors and a system bus 121 that communicatively couples various system components to the processor subsystem 120, the various system components including, for example, a memory 130, an I / O subsystem 140, a local storage resource 150, an image interface 152, and a network interface 160. In some embodiments, the image interface 152 may include an image processor. The system bus 121 represents various suitable types of bus structures, such as a memory bus, a peripheral bus, or a local bus using various bus architectures in the selected embodiment. For example, such an architecture may include, but is not limited to, a microchannel architecture (MCA) bus, an industry standard architecture (ISA) bus, an enhanced ISA (EISA) bus, a peripheral component interconnect (PCI) bus, a PCI-Express bus, a hypertransport (HT) bus, and a video electronics standard association (VESA) local bus.

[0024] exist Figure 1In the present invention, network interface 160 is a suitable system, device or apparatus operable to serve as an interface between information handling system 100 and network 155. Network interface 160 may enable information handling system 100 to communicate via network 155 using a suitable transmission protocol or standard, including but not limited to the transmission protocols and standards listed below in the discussion of network 155. In some embodiments, network interface 160 may be communicatively coupled to other information handling systems via network 155. Network 155 may be implemented as, or may be, a storage area network (SAN), a personal area network (PAN), a local area network (LAN), a metropolitan area network (MAN), a wide area network (WAN), a wireless local area network (WLAN), a virtual private network (VPN), an intranet, the Internet, or other suitable architecture or system that facilitates the communication of signals, data, and messages (commonly referred to as data). The network 155 may use a suitable storage or communication protocol to transmit data, including but not limited to Fibre Channel, Frame Relay, Asynchronous Transfer Mode (ATM), Internet Protocol (IP), other packet-based protocols, Small Computer System Interface (SCSI), Internet SCSI (iSCSI), Serial Attached SCSI (SAS), or using SCSI protocols, Advanced Technology Attachment (ATA), Serial ATA (SATA), Advanced Technology Attachment Packet Interface (ATAPI), Serial Storage Architecture (SSA), Integrated Drive Electronics (IDE), or any combination thereof. The network 155 and its various components may be implemented using hardware, software, or any combination thereof. In some embodiments, the information handling system 100 and the network 155 may be included in a rack domain.

[0025] like Figure 1 As shown, the processor subsystem 120 is a system, device or apparatus operable to analyze or execute program instructions and process data. The processor subsystem 120 may include a microprocessor, a microcontroller, a digital signal processor (DSP), an application specific integrated circuit (ASIC) or other digital or analog circuits for analyzing or executing program instructions and processing data. In some embodiments, the processor subsystem 120 may analyze or execute program instructions and process data stored in the memory 130. In the same or alternative embodiments, the processor subsystem 120 may analyze or execute program instructions and process remotely stored data, such as data stored in the network storage resource 170.

[0026] In addition, Figure 1 In the present invention, memory 130 includes a system, device or means operable to retain and retrieve program instructions or data over a period of time, such as a computer-readable medium. Figure 1As shown in the example embodiment of , the memory 130 stores an operating system 132 and applications 134. The operating system 132 may represent instructions that can be executed by the processor subsystem 120 to operate the information handling system 100 after startup. It should be noted that in different embodiments, the operating system 132 may be stored in a network storage resource 170 coupled to the network 155 and may be accessed by the processor subsystem 120 via the network interface 160. The application 134 may represent instructions that can be executed by the processor subsystem 120 to implement general application functions, which may include a user interface and access to computing resources, such as local storage resources 150. The memory 130 may include random access memory (RAM), electrically erasable programmable read-only memory (EEPROM), PCMCIA card, solid-state memory, magnetic memory, optical magnetic memory, and appropriately selected (e.g., array) volatile or non-volatile memory. Non-volatile memory includes memory that retains data after power is removed.

[0027] Local storage resources 150 may include computer-readable media such as a hard drive, a floppy disk drive, a CD-ROM or other type of rotating storage media, a solid-state memory, an EEPROM or other type of solid-state storage media. Local storage resources 150 are generally operable to store instructions and data. For example, local storage resources 150 may store executable code in the form of a program file that can be loaded into memory 130 for execution.

[0028] In the information handling system 100, the I / O subsystem 140 includes a system, device or apparatus that is generally operable to receive and send data about the information handling system 100. The I / O subsystem 140 may include, for example, various communication interfaces, image interfaces, video interfaces, user input interfaces, and peripheral interfaces. In some embodiments, the I / O subsystem 140 may include a touch panel or a display adapter. The touch panel (not shown) may include circuits for implementing touch functions together with a display (not shown) driven by a display adapter (not shown).

[0029] Figure 1Also shown is an embedded controller (EC) 180, which may include an EC processor 182 as a second processor included with the information handling system 100 for certain management tasks. The EC processor 182 may access an EC non-volatile random access memory (NV-RAM), which may store EC firmware 186, which represents instructions executable by the EC processor 182. Also shown is BIOS firmware 192, which is often referred to simply or generally as "BIOS", stored in the BIOS NV-RAM 190. The BIOS firmware 192 may represent pre-boot instructions executable by the processor subsystem 120, such as for preparing the information handling system 100 for booting by activating various hardware components in preparation for booting the operating system 132 for execution. In some embodiments, the BIOS firmware 192 may be executed by the EC processor 182.

[0030] In operation, operating system 132 or application 134 may be configured to execute on information handling system 100. Since operating system 132 or application 134 may not be optimized for the hardware configuration of information handling system 100, workload optimizer 136 may perform dynamic optimization of certain hardware configurations, as described in further detail herein. Workload optimizer 136 may implement various dynamic optimizations using any one or more of other resources or hardware resources associated with information handling system 100, operating system 132, EC firmware 186, EC processor 192, BIOS firmware 192, I / O subsystem 140, local storage resources 150, image interface 152, and network interface 160.

[0031] Figure 2 A block diagram of an embodiment of workload optimization 200 according to some embodiments of the present disclosure is shown. As shown in the figure, workload optimization 200 represents an architecture of workload optimization in an information processing system, the information processing system including Figure 1 Any embodiment of the information processing system 100 discussed herein. Workload optimization 200 may include any suitable combination or number of elements or modules for performing the functions described herein. Figure 2 As shown, workload optimization 200 includes workload optimizer 202 and hardware resources 260. Workload optimizer 202 may represent Figure 1 1. As shown in the figure, workload optimizer 202 includes policy processing engine 210, monitoring engine 220, configuration engine 230, IHS profile manager 240, user interface 250 and plug-in 280. Workload optimizer 202 can monitor and configure hardware resources on an information processing system such as information processing system 100. Hardware resources 260 represent certain hardware elements or components, including those with respect to Figure 1Components of the information processing system 100 are described in detail.

[0032] In workload optimization 200, workload optimizer 202 includes a policy processing engine 210. Policy processing engine 210 can be implemented in any suitable manner. For example, policy processing engine 210 can be implemented by code, instructions, libraries, shared libraries, software-as-a-service, functions, applications, scripts, or executable programs. Figure 2 2. In the example shown as a single element, the policy processing engine 210 may be implemented by a combination of elements. In some embodiments, the policy processing engine 210 may be configured to optimize workloads executed on one or more information processing systems.

[0033] In some embodiments, policy processing engine 210 may be used to optimize workloads executed at the information processing system by configuring hardware resources 260 in a manner specifically matching the attributes of the workloads. User interface 250 represents a user interface that a user may operate to use policy processing engine 210, for example to specify a workload or select a profile for implementing a particular workload policy.

[0034] The policy processing engine 210 may analyze and operate according to one or more IHS profiles 242 maintained and managed by the IHS profile manager 240. In some embodiments, the IHS profile 242 may be selected, created, modified, and removed from the IHS profile manager 240 by the manufacturer of the information handling system or hardware resource 260. For example, the manufacturer of the computer system may provide an IHS profile 242 for saving power consumption. In a specific embodiment, the IHS profile 242 may be selected, created, modified, and removed from the IHS profile manager 240 by the policy processing engine 210. For example, the policy processing engine 210 may select an IHS profile 242 for saving power when it is detected that the computer system has been unplugged from a power source. In some embodiments, the IHS profile manager 240 may be an application configured to manage the profile 242 and transmit the profile information to the policy processing engine 210.

[0035] As shown, the IHS profile manager 240 may include IHS profiles 242-1, 242-2, and so on, up to 242-N, which represent N profiles, where N is any desired number. The IHS profiles 242 may be received by the policy processing engine 210 and used to implement a particular workload policy. Thus, the IHS profiles 242 may accordingly include policy information, such as an execution scenario with a particular configuration (or settings) of hardware components represented by the hardware resources 260. Among other examples, the IHS profiles 242 may be a user-specific information handling system usage type, a particular information handling system, or an application executed on the information handling system. The IHS profile manager 240 may be able to store, retrieve, create, delete, add, and modify the IHS profiles 242 on local or remote memory, for example in response to user input received via the user interface 250. In some embodiments, the IHS profile manager 240 operates in a distributed manner across a network, for example, in conjunction with the following reference to Figure 3 A distributed profile manager 340 is described.

[0036] The policy processing engine 210 can monitor various hardware resources 260 of the information handling system. For example, the policy processing engine 210 can be communicatively coupled to the monitoring engine 220, thereby receiving monitoring information on one or more hardware resources 260 via corresponding plug-ins 280. The monitoring engine 220 can be implemented in any suitable manner, such as by code, instructions, libraries, shared libraries, software as a service, function, application, script or executable program. Although shown as a single element, the monitoring engine 220 can be implemented by a combination of elements. In some embodiments, the monitoring engine 220 can be configured to monitor the hardware resources of more than one physical information handling system.

[0037] The policy processing engine 210 can actively configure (or change settings) various hardware resources 260 of the information processing system. For example, the policy processing engine 210 can be communicatively coupled to the configuration engine 230 to configure the hardware resources 260 according to the workload policy via the corresponding plug-in 280. The configuration of the hardware resources 260 can be implemented in various ways by the plug-in 280. For example, the plug-in 280 can directly access the BIOS NV RAM 190 to change the settings used by the BIOS firmware 192. The plug-in 280 can access or communicate with the EC180 to change the hardware settings. The plug-in 280 can further access or include hardware drivers, such as various operating system drivers for the hardware resources 260. The configuration engine 230 can be implemented in any suitable manner. For example, the configuration engine 230 can be implemented by code, instructions, libraries, shared libraries, software as a service, function, application, script or executable program. Although shown as a single element, the configuration engine 230 can be implemented by a combination of elements. In some embodiments, the configuration engine 230 can configure hardware resources on more than one information processing system.

[0038] The plug-in 280 may represent a module code installed in the workload optimizer 202 for accessing a specific hardware resource 260. Therefore, each plug-in 280 may be specific to a specific hardware resource 260 and specific to the workload optimizer 202. Each of the plug-ins 280 may include monitoring and configuration functions that may be implemented individually or in combination. In other words, the plug-in 280 enables the monitoring engine 220 and the configuration engine 230 to operate independently. As hardware resources 260 are added, removed, updated, replaced, etc., the corresponding plug-ins 280 may be added, removed, updated, replaced, etc. As shown in the figure, the CPU plug-in 280-1 may provide monitoring and configuration support for the CPU 260-1, which may represent a processor or a processor subsystem; the memory plug-in 280-2 may provide monitoring and configuration support for the memory 260-2, which may represent a subsystem that can be accessed by the CPU 260-1; image plugin 280-3 can provide monitoring and configuration support for image 260-3, which can represent an image interface or image processing unit; memory plugin 280-4 can provide monitoring and configuration support for memory 260-4, which can represent local or remote storage resources; cooling plugin 280-5 can provide monitoring and configuration support for cooling 260-5, which can represent a thermal control system; display plugin 280-6 can provide monitoring and configuration support for display 260-6, which can represent one or more display devices, such as a display device coupled to image 260-3; and network plugin 280-7 can provide monitoring and configuration support for network 260-7, which can represent any or multiple network interfaces. Note that the described plugins 280 and hardware resources 260 are exemplary and can include other elements in various embodiments.

[0039] In operation, the policy processing engine 210 can receive a workload request from a user via the user interface 250. The workload request can specify a computing task, such as a computing task performed by the application 134. In some embodiments, the workload request can be for a distributed computing task from different information processing systems, which seeks to use the policy processing engine 210 and other distributed resources to perform some part of the distributed computing task. The workload request can include an indication of a specific one of the IHS profiles 242. Alternatively, the policy processing engine 210 can select one of the IHS profiles 242 based on other information such as a user (or user account) or the application 134 in various embodiments. In some embodiments, the application 134 itself may include functionality for generating a workload request or performing a computing task using the policy processing engine 210. In some embodiments, at least some portions of the workload optimizer 202 are included in the application 134.

[0040] Based on the workload request, the policy processing engine 210 can determine the workload attributes of the computing task. The workload attributes can include the dependency of the computing task on the hardware resource 260. For example, when the computing task includes multithreading, it may be necessary to activate multiple cores in the CPU. Or, when the computing task is executed in a single thread, it may be most effectively executed when the computing task is sent to a single core in the CPU, which may be expected. Therefore, the workload attributes can specify any one or more of the degree of multithreading, thread priority, and instruction set architecture. The workload attributes can specify, for example, any one or more of the desired processor frequency, processor cache capacity, processor cache architecture, processor cache throughput, memory capacity, memory bus speed, memory throughput, and the use of non-uniform memory architecture. For example, the workload attributes can also specify the desired background execution degree or tolerable network delay. The workload attributes can also specify any one or more of the desired memory capacity, minimum available memory space, memory data throughput, and memory delay. In addition to other desired attributes for the workload, the workload attributes can also specify one or more of the following: the acceleration degree of the image processing unit, the vertical synchronization setting, the digital signal processing degree, the integer processing degree, the background execution degree, and the operating system.

[0041] The policy processing engine 210 can then identify, via, for example, the monitoring engine 220, specific hardware resources 260 among the hardware resources 260 present in the information processing system. In addition, the policy processing engine 210 can monitor the operating state of at least some of the hardware resources 260 to determine which configuration changes are indicated by the workload attributes, or which configuration settings have been made commensurate with the workload attributes. The hardware resources 260 can include a variety of resources, including Figure 2 The resources shown. Specifically, hardware resources 260 may include aspects such as a number of available processor cores, a degree of exclusive access to available processor cores, a degree of processor multithreading available, a degree of background execution available, a degree of user mode execution available, processor frequency, processor architecture, processor cache architecture, processor power state, available processor cache capacity, available processor power consumption, and an available instruction set architecture. Other hardware resources 260 may include aspects such as an available image processing unit, available memory capacity, available memory throughput, available degree of non-uniform memory access, available memory capacity, available memory throughput, and available memory latency. Other hardware resources 260 may include aspects selected from available network capacity, available network throughput, available network latency, system restart functionality, and system power-off features. Other aspects related to hardware resources 260 are also considered.

[0042] Next, based on the workload attributes and the hardware resources 260, the policy processing engine 210 can determine a workload policy for the computing task. As described above, the workload policy can be based on one of the IHS profiles 242. The workload policy can specify the hardware resources 260 used to perform the computing task, such as by specifying specific settings for aspects of the identified hardware resources 260. After determining the workload policy, the policy processing engine 210 can implement the workload policy, such as using the configuration engine 230 to access the plug-in 280, as described above. Implementing the workload policy can involve various operations in different embodiments, such as reconfiguring internal or external hardware components. In some embodiments, the information processing system can be restarted or restarted before performing the computing task to implement certain workload policies. When the workload policy is implemented, the computing task can be performed by the information processing system. It should be noted that performing the computing task can involve long-term operations, such as the duration of a user using a specific application.

[0043] On the other hand, workload optimization 200 can be used to optimize proprietary workloads, such as workloads that use proprietary data. For example, a manufacturer may use applications to model proprietary new products, including computer-aided design integrated into the manufacturing process. Manufacturers may attempt to use applications to optimize workloads associated with new products, which may include computer-intensive operations, such as three-dimensional rendering. Manufacturers may install certain portions of workload optimizer 202, such as monitoring engine 220, which can monitor hardware resources 260 during the execution of dedicated workloads. Monitoring engine 220 can generate workload simulation data by monitoring the results generated by the dedicated workload. However, even if the workload simulation data reflects the same workload attributes and computational complexity comparable to the proprietary workload, monitoring engine 220 can generate workload simulation data without including proprietary data.

[0044] Then, the workload simulation data can be used by another instance of workload optimization 200 in another information processing system. For example, the manufacturer in the above example can send the workload simulation data securely to the provider of the information processing system. Then, the workload attributes can be determined based on the workload simulation data. For example, when the proprietary workload includes the rendering of a large complex system such as an aircraft or a ship, the workload simulation data can indicate the image attributes in other examples corresponding to the proprietary data, such as the corresponding number of polygons, the corresponding type of polygons, the corresponding texture data, the animation data, and the corresponding number of parts or elements. The determined workload attributes may be the characteristics of the proprietary workload. Therefore, the workload attributes can include (or indicate) the dependence of the proprietary computing task on the hardware resources. Then, the hardware resources can be identified, and the workload strategy can be determined. Moreover, based on the workload simulation data, there is a simulation computing task with the same workload attributes as the proprietary computing task. The simulation computing task can be used to model the proprietary computing task without relying on proprietary information. The workload strategy can then be implemented at the provider's information processing system, and when the workload strategy is implemented, the simulation computing task can be executed at the second information processing system. In this way, workload strategies can be evaluated and tested using simulated computing tasks and modified or optimized to produce desired computing efficiency or performance.

[0045] In this way, the determined workload strategy without proprietary data can be sent back to the manufacturer for executing the proprietary workload. The workload strategy can then be used by workload optimization 200 to improve the execution of the proprietary workload such as performance, latency or speed while using proprietary information.

[0046] In another aspect, at least some portions of the workload optimizer 202 may be integrated into the application 134. For example, some functionality of the workload optimizer 202 may be provided as a software development kit (SDK) to providers of the application 134, who may integrate the functionality into a version of the application 134. In this manner, at least some portions of the user interface 250, HIS profile manager 240, policy processing engine 210, monitoring engine 220, configuration engine 230, and plug-in 260 may be integrated within the application 134, as described herein.

[0047] Figure 3is a block diagram of selected elements of an embodiment of distributed workload optimization 300. Distributed workload optimization 300 may represent an architecture for optimizing distributed computing workload execution. In one embodiment, distributed workload optimization 300 may be used to distribute and optimize workloads among multiple information processing systems 352 in a networked environment. As shown, distributed workload optimization 300 includes one or more information processing systems 352 in a workgroup 350, a network 310, and a distributed workload optimizer 302. As shown, distributed workload optimizer 302 includes a text aggregation engine 306, a decision engine 308, an action engine 304, and a distributed profile manager 340. In some embodiments, some or all of the elements of distributed workload optimization 300 may be communicatively coupled via network 310. Information processing system 352 may represent information about Figure 1 and Figure 2 The embodiment of the information processing system 100 described herein. Therefore, it can be assumed that Figure 2 At least some of the information processing systems 352 execute the workload optimizer 202 .

[0048] In distributed workload optimization 300, workgroup 350 is shown as a logical network including multiple information handling systems (IHS) 352. As shown, workgroup 350 can include information handling systems 352-1, 352-2, and so on, up to 352-M representing M information handling systems, where M is any desired number. Although workgroup 350 is shown as a single instance for clarity of description, it should be understood that distributed workload optimization 300 is operable with different numbers of workgroups 350, including a larger number of workgroups 350 and information handling systems 352. In some embodiments, workgroup 350 can represent a network domain or organizational entity, such as the location of an office or department in an organization. Therefore, workgroup 350 can represent an enterprise entity or sub-entity with a physical infrastructure including information handling system 352.

[0049] In the distributed workload optimizer 302, the text aggregation engine 306 can aggregate text information for optimizing distributed workload execution. The text aggregation engine 306 can derive different kinds of text information for distributed workload optimization. The text aggregation engine 306 can aggregate text information from various sources, including text information from the distributed profile manager 340 and the information processing system 352. The text aggregation engine 306 can aggregate text information received from the workload optimizer 202 on the information processing system 352, such as from the IHS profile manager 240 or collected by the monitoring engine 220. The text information can include information such as the location, capacity, temperature, version, status, and utilization of hardware resources. In some embodiments, the text aggregation engine 306 can aggregate and store text information related to the information processing system 352 into the IHS profile 342-3. The text aggregation engine 306 can derive complex IHS text information. For example, the text aggregation engine 306 can process system files, communications, and maintenance request records to derive security, usage, or reliability text for the information processing system 352. As an example and not limitation, an outdated operating system may indicate a security or reliability problem with a particular information processing system 352. In some embodiments, the text aggregation engine 306 may use the derived complex IHS text information to update the information processing system profile 342-3. The text aggregation engine 306 may derive complex text information from data stored on various information processing systems 352. Specifically, the text aggregation engine 306 may process files, databases, locations, or any other relevant data to derive complex text information. In one example, the text aggregation engine 306 may derive complex text information from changes to the distributed workload optimization 300, such as based on adding or removing information processing systems 302 from workgroups 350. The text aggregation engine 306 may also derive complex text information from profiles 342 or other data previously aggregated or stored by the text aggregation engine 306. In some embodiments, the text aggregation engine 306 may derive complex text information from predefined data associations, such as associations between calendar entries and user locations. For example, the text aggregation engine 306 may parse machine-readable extensible markup languages, comma-separated values, database entries, etc. to discern relationships or determine associations between certain text information segments. In certain embodiments, the text aggregation engine 306 may use artificial intelligence algorithms to generate associations between otherwise disjoint data.

[0050] The text aggregation engine 306 can also aggregate text information from other sources of the network 310 such as network topology, network device status, network utilization, or maintenance information related to the network 310. In some embodiments, the text aggregation engine 306 can aggregate and store information related to the network 310 into the network profile 342-2. The text aggregation engine 306 can derive complex network text information. For example, the text aggregation engine 306 can process calendars, emails, or maintenance request records to derive the availability, use, or reliability of future networks. In one example, a large number of maintenance requests may indicate reliability issues with a specific connection on the network 310. In another example, the text aggregation engine 306 can derive network security information based in part on a network access log. The text aggregation engine 306 can use the derived complex network text information to update the network profile 342-2.

[0051] In addition, the text aggregation engine 306 can aggregate user information on the user's information processing system 352. The user information can be associated with the user's user account on the information processing system 352 or the workgroup 350. As an example and not limitation, the user information can include user preferences, information processing system usage, user classification, user status, user location, or user schedule. In some embodiments, the text aggregation engine 306 can aggregate and store the user information in the user profile 342-1.

[0052] In some embodiments, the text aggregation engine 306 can aggregate information describing the execution of applications on the information processing system 352. Such application information can include, for example, resource requirements, resource usage, application settings, application status, or application version. In some embodiments, the text aggregation engine 306 can aggregate and store application information in an application profile 324-4. The text aggregation engine 306 can derive complex application text information. For example, the text aggregation engine 306 can process application usage records, such as determining the average running time of the application, user statistics, expected performance, optimal settings, peak usage time, or any other information related to the application 134. The text aggregation engine 306 can use the derived complex text information to update the aggregated application profile 324-4.

[0053] In certain embodiments, text aggregation engine 306 can communicate text information with other elements in distributed workload optimization 300. For example, text aggregation engine 306 can transmit text information to decision engine 308, action engine 304, or to another element in distributed workload optimization 300, such as via network 310. By way of example and not limitation, the text information transmitted by text aggregation engine 306 can include information from profile 342 or any other information.

[0054] In some embodiments, text aggregation engine 306 can detect and dynamically adjust to changes in distributed workload optimization 300. For example, text aggregation engine 306 can detect a new information processing system 352. In response to a new information processing system 352 joining workgroup 350 or connecting to network 310, text aggregation engine 306 can begin aggregating text information from new information processing system 352.

[0055] In another example and not limitation, the text aggregation engine 306 may detect a portable electronic device (e.g., a cell phone, a laptop computer, a PDA, etc.) that is communicatively coupled (e.g., by wire, wireless, Bluetooth, or any other communication means) to the network 310 or the information processing system 352. The text aggregation engine 306 may instruct the portable electronic device to download and install software to support Figure 2 Workload optimization 200 as described, such as at least some portions of workload optimizer 202. In some embodiments, text aggregation engine 306 can update appropriate profile 342 upon detecting a change in workgroup 350. For example, text aggregation engine 306 can be configured to update IHS profile 342 upon detecting that information handling system 352 joins or leaves workgroup 350.

[0056] The text aggregation engine 306 can be implemented in any suitable manner. For example, the text aggregation engine 306 can be implemented by code, instructions, libraries, shared libraries, software as a service, functions, applications, scripts, or executable programs. In some embodiments, the text aggregation engine 306 can be executed at the information processing system 352. Although the text aggregation engine 306 is shown as a single element, the text aggregation engine 306 can be implemented by a combination of elements. For example, the text aggregation engine 306 can be included in the workload optimizer 202.

[0057] As described above, the text aggregation engine 306 can analyze and operate based on one or more profiles 342 maintained and managed by the distributed profile manager 340. In some embodiments, the profiles 342 can be selected, created, modified, and deleted from the distributed profile manager 340 by a network administrator of the network 310. For example, the network administrator can modify the network profile 342-2 to implement an energy-saving network policy. In a specific embodiment, the summary profiles 342 can be selected, created, modified, and deleted from the distributed profile manager 340 by the text aggregation engine 306. For example, the text aggregation engine 306 can select the IHS profile 342-3 to save power when it detects that the computer system has been unplugged from a power source. In some embodiments, the distributed profile manager 340 can be an application configured to manage the profiles 342 and transmit the profile information to the text aggregation engine 306. Therefore, the distributed profile manager 340 can be used in conjunction with Figure 2The IHS profile manager 240 in FIG. 1 operates in a similar manner.

[0058] In the distributed workload optimizer 302, the decision engine 308 can determine the optimal allocation of resources. In one embodiment, the decision engine 308 can be configured to receive resource requests, such as workload requests for distributed execution of computing tasks. For example, the information processing system 352 can request resources for processing numerical calculations, display rendering, launching applications, or other computing tasks. The decision engine 308 can allocate the resource request into multiple resource requests. For example, the decision engine 308 can decompose a request for display rendering into a request to run an application to open and a request to display output from the application.

[0059] As described above, decision engine 308 can be communicatively coupled to text aggregation engine 306 to, for example, analyze or query text information. In certain embodiments, decision engine 308 can analyze complex text information derived by text aggregation engine 306. Decision engine 308 can also start the aggregation of text information. For example, when receiving a resource request, decision engine 308 can determine that additional text information is indicated to make a specific decision. Therefore, decision engine 308 can request text aggregation engine 306 to provide additional text information. In response, text aggregation engine 306 can aggregate additional text information by, for example, deriving complex text information or processing additional sources for text information.

[0060] In some embodiments, the decision engine 308 may allocate resource requests based on text information. For example, when the text information indicates that the information processing system 352-1 is temporarily disconnected from the network 310, the decision engine 308 may decide not to allocate the resource request to the information processing system 352-1. Similarly, when the text information indicates that a particular information processing system 352-2 may be disconnected from the network 310 in the near future, the decision engine 308 may decide not to allocate the resource request to the information processing system 352-2, for example, because of the expected duration of the resource request. In another example, when the text aggregation engine 306 determines that two users are the same team (e.g., using the corresponding user profile 342-1), the decision engine 308 may allocate common computing resources such as applications or calendars to meet the user's resource request. In another example, the decision engine 308 may allocate resources based on the user's current location or future location. When a user is physically located in a conference room and requests resources to stream a multimedia presentation, the decision engine 308 may select certain information processing systems 352 that are in close proximity to the user to fulfill the resource request, such as by performing certain computing tasks to support multimedia streaming.

[0061] In some embodiments, the decision engine 308 may allocate resource requests based on optimization criteria, such as certain hardware resources. In some embodiments, the optimization criteria may specify a particular application or activity, such as speed, power, priority, security, reliability, location, etc. The decision engine 308 may receive the optimization criteria for the resource request. For example, the resource request may indicate that speed overtakes security as a priority for processing the resource request. In some embodiments, the decision engine 308 may derive the optimization criteria from text information. By way of example and not limitation, computationally intensive applications, such as MATLAB® from The MathWorks, Inc. of Natick, Mass. TM , may include an application profile 342-2 indicating that the application is resource intensive. Based on the application profile 342-2, the decision engine 308 may determine optimization criteria accordingly to indicate, for example, that processor and memory resources are prioritized over graphics or memory.

[0062] Decision engine 308 can be implemented in any suitable manner. For example, decision engine 308 can be implemented by code, instructions, libraries, shared libraries, software as a service, functions, applications, scripts, or executable programs. Although decision engine 308 is shown as a single element, decision engine 308 can be implemented by a combination of elements. For example, in one embodiment, decision engine 308 can be distributed in various information processing systems 352 within workgroup 350.

[0063] In distributed workload optimizer 302, action engine 304 can initiate operations to implement resource requests and can be communicatively coupled to decision engine 308. In some embodiments, action engine 304 can receive optimized resource requests from decision engine 308, such as specifying an allocation of hardware resources to a particular workload request for distributed execution. In some embodiments, the optimized resource request from decision engine 308 can identify information processing system 352 associated with satisfying the resource request. As an example and not limitation, action engine 304 can initiate execution of an application on information processing system 352-1 based on the optimized resource request from decision engine 308 identifying information processing system 352-1 and the application.

[0064] The action engine 304 can be implemented in any suitable manner. For example, the action engine 304 can be implemented by code, instructions, libraries, shared libraries, software as a service, functions, applications, scripts, or executable programs. Although the action engine 304 is shown as a single element, the action engine 304 can be implemented by a combination of elements. For example, in one embodiment, the action engine 304 can be distributed in various information processing systems 352 within the workgroup 350.

[0065] Although the functionality of text aggregation engine 306, decision engine 308, and action engine 304 is described as Figure 3 300, but the functionality of each of them may be implemented by any appropriate portion of distributed workload optimization 300.

[0066] In the operation of distributed workload optimization 300 for optimizing distributed workloads to information processing system 352, distributed workload optimizer 302 may receive a workload request specifying a computing task for distributed execution from information processing system 352-1. Text aggregation engine 306 may then determine workload attributes of the computing task based on the workload request. The workload attributes may include dependencies of the computing task on hardware resources included in information processing system 352, such as hardware resources 260 described previously.

[0067] Then, the text aggregation engine 306 can identify the information processing system 352 or other information processing systems (referred to as distributed information processing systems) through the network 310 for the distributed execution of computing tasks. For example, the identified information processing system can execute at least some parts of the workload optimizer 202 to support the operation of the distributed workload optimization 300. The text aggregation engine 306 can also identify the hardware resources (referred to as distributed hardware resources) present in the distributed information processing system. Then, based on the determined workload attributes and the identified distributed hardware resources, the text aggregation engine 306 (or the decision engine 308 in some embodiments) can determine the preliminary allocation of computing tasks between the distributed hardware resources. The preliminary allocation can represent the expected allocation of hardware resources, but can be based on previously collected text information and may not be completely accurate at the moment due to the continuous changes at the information processing system 352. Then, the text aggregation engine 306 (or the action engine 304 in some embodiments) can send a first request to the distributed information processing system, requesting confirmation of the preliminary allocation. In response, the first distributed resource information can be received from at least some of the distributed information processing systems. It should be noted that a timeout can be applied to the response to the first request. The first distributed resource information may describe or indicate the distributed hardware resources currently available in the distributed information processing system for the distributed execution of the computing task.

[0068] Based on the first distributed resource information, the text aggregation engine 306 (or the decision engine 308 in some embodiments) can determine the confirmed allocation of the computing task among the distributed hardware resources. The confirmed allocation can include or represent the workload strategy 354 of the distributed hardware resources describing the distributed execution of the computing task. Then, based on the confirmed allocation, the text aggregation engine 306 (or the action engine 304 in some embodiments) can at least send a second request to the responding distributed information processing system (referred to as the confirmed distributed information processing system) to make the distributed hardware resources described in the first distributed resource information dedicated to the computing task. The second request can include or represent the workload strategy 354 determined by the text aggregation engine 306 (or the decision engine 308 in some embodiments) when the confirmed allocation is determined. The text aggregation engine 306 (or the action engine 304 in some embodiments) can then segment the computing task for distributed execution in the confirmed distributed information processing system. Then, the text aggregation engine 306 (or the action engine 304 in some embodiments) can send the segmented computing task to a corresponding one of the confirmed distributed information processing systems. In response, the text aggregation engine 306 (or the action engine 304 in some embodiments) can receive the segmented output of the computing task (or the result of the computing task) from a corresponding one of the confirmed distributed information processing systems. Then, the text aggregation engine 306 (or the action engine 304 in some embodiments) can combine the segmented outputs to generate a combined output of the computing task. Finally, the text aggregation engine 306 (or the action engine 304 in some embodiments) can send the combined output back to the information processing system 352-1 requesting the distributed execution of the computing task.

[0069] Despite the presence of the above-described dual allocation process for distributed execution of workload tasks, including preliminary allocation and confirmed allocation, continuous changes at the information processing system 352 may cause the first distributed resource information to become obsolete or obsolete in a relatively short period of time. Therefore, the text aggregation engine 306 (or the decision engine 308 in some embodiments) can receive an indication of a change in the first distributed resource information. Based on the change, the confirmed allocation can be updated, and second distributed resource information indicating the change can be generated. Then, the above process can be repeated as needed to perform distributed execution of computing tasks.

[0070] Reference now Figure 4 , a block diagram of selected elements of an embodiment of a workload optimization server 400 is shown. Figure 4, workload optimization server 400 is represented as an information processing system that includes physical and logical components for implementing workload optimization, as described herein, and accordingly includes processor 401, memory 410, and network interface 420. Processor 401 may represent one or more individual processing units, and may execute program instructions, analyze data, and process data stored by memory 410 or other storage (such as database 430), among other examples. Although Figure 4 A workload optimized server 400 is shown including physical and logical components, but it should be understood that the workload optimized server 400 (or database 430) can be implemented using shared hardware resources, such as in a virtual machine under a hypervisor, for example in a rack domain hosting multiple virtual servers.

[0071] exist Figure 4 In the embodiment of the present invention, memory 410 is communicatively coupled to processor 401 and may include a system, device or means (e.g., a computer readable medium) suitable for retaining program instructions and data for a period of time. Memory 410 may include various types of components and devices, such as random access memory (RAM), electrically erasable programmable read-only memory (EEPROM), PCMCIA card, flash memory, solid state disk, hard disk drive, tape library, optical disk drive, magneto-optical disk drive, compact disk drive, compact disk array, disk array controller and / or any suitable selection or array of volatile or non-volatile memory. Non-volatile memory refers to memory that retains data after power is turned off. It should be noted that in various embodiments, memory 410 may include different numbers of physical storage devices.

[0072] like Figure 4 As shown, as described herein, the memory 410 may include a distributed workload optimizer 402 for distributed workload optimization. In some embodiments, the workload optimizer 402 represents Figure 3 Implementation of workload optimizer 302 described herein. Information storage 440 may store various data and parameters, such as data and parameters associated with workload optimization, as described herein. In some embodiments, database 430 may include a single information processing system capable of database functionality.

[0073] Figure 5 An example method 500 for dynamically controlling workload execution according to some embodiments of the present disclosure is shown. Figure 2 The workload optimization 200 described above implements the method 500. It should be noted that some operations described in the method 500 may be optional or may be rearranged in different embodiments.

[0074] Method 500 begins by receiving (operation 502) a workload request for an information processing system that specifies a computing task to be performed on the information processing system. Based on the workload request, workload attributes of the computing task are determined (operation 504), the workload attributes including the dependency of the computing task on hardware resources included in the information processing system. Hardware resources present in the information processing system can be identified (operation 506). The operating state of at least some of the hardware resources is monitored (operation 508). Based on the workload attributes and the hardware resources, a workload policy for the computing task is determined (operation 510), the workload policy specifying the hardware resources used to perform the computing task on the information processing system. The workload policy is implemented in the information processing system (operation 512), including configuring the hardware resources specified in the workload policy based on the operating state. The computing task is executed at the information processing system in accordance with the workload policy (operation 514).

[0075] Fig. 6A and 6B An example method 600 for dynamically controlled distributed workload execution according to some embodiments of the present disclosure is shown. Figure 3 The distributed workload optimization 300 described above implements the method 600. It should be noted that some operations described in the method 600 may be optional or may be rearranged in different embodiments.

[0076] Method 600 begins by receiving (operation 602) a workload request from a first information processing system, the workload request specifying a computing task for distributed execution. Based on the workload request, workload attributes of the computing task are determined (operation 604), the workload attributes including dependencies of the computing task on hardware resources included in the information processing system. Distributed information processing systems accessible via a network are identified (operation 606) for distributed execution of the computing task, which includes identifying distributed hardware resources present in the distributed information processing system, including at least one information processing system. Based on the workload attributes and the hardware resources, a preliminary allocation of the computing task among the distributed hardware resources is determined (operation 608). A first request is sent (operation 610) to the distributed information processing system to request confirmation of the preliminary allocation. First distributed resource information is received from at least a portion of the distributed information processing system (operation 612), which describes the distributed hardware resources currently available at the distributed information processing system in response to the first request. Based on the first distributed resource information, a confirmed allocation of the computing task among the distributed hardware resources is determined (operation 614).

[0077] After operation 614, method 600 may proceed to Figure 6BOperation 616. Based on the confirmed allocation, a second request (operation 616) is sent to the confirmed distributed information processing system including at least some distributed information processing systems so that the distributed hardware resources described in the first distributed resource information are dedicated to the computing task. The computing task is segmented (operation 618) for distributed execution in the confirmed distributed information processing system. The segmented computing task is sent (operation 620) to the corresponding confirmed distributed information processing system. The segmented output of the computing task is received from the corresponding confirmed distributed information processing system (operation 622), and the segmented output corresponds to the segmented computing task. The segmented output is combined (operation 624) to produce a combined output of the computing task. The combined output is sent (operation 626) to the first information processing system.

[0078] Figure 7 An example method 700 for optimizing a dedicated workload according to some embodiments of the present disclosure is shown. Figure 2 The workload optimization 200 described above implements the method 700. It should be noted that some operations described in the method 700 may be optional or may be rearranged in different embodiments.

[0079] Method 700 begins by receiving (operation 702) workload simulation data at a second information processing system, the workload simulation data indicating a proprietary computing task that can be executed on a first information processing system, such that the workload simulation data does not include proprietary data used by the proprietary computing. Based on the workload simulation data, workload attributes of the proprietary computing task are determined (operation 704), the workload attributes including the dependency of the proprietary computing task on hardware resources included in the first information processing system. Hardware resources present in the first information processing system are being identified (operation 706). Based on the determined workload attributes and the identified hardware resources, a workload policy is determined at the second information processing system for the proprietary computing task (operation 708), such that the workload policy specifies the hardware resources first information processing system used to execute the computing task. The workload policy is sent (operation 710) to the first information processing system, such that the workload policy can be used by the first information processing system to execute the proprietary computing task using proprietary information. Based on the workload simulation data, a simulated computing task having the same workload attributes as the proprietary computing task is generated (operation 712). The workload policy is implemented at the second information processing system (operation 714). When the workload policy is implemented, the simulation computing task is executed at the second information processing system (operation 716).

[0080] Figure 8 An example method 800 for dynamically controlling workload execution by an application according to some embodiments of the present disclosure is shown. Figure 1 and Figure 2 The method 800 is implemented by using the application 134 of at least some portions of the workload optimizer 202. The application 134 may be, for example, any application that executes under an operating system and provides functionality to a user of the operating system. The application 134 may be compiled to include at least some portions of the workload optimizer 202 using a software development kit (or other library) to integrate the functionality of the workload optimizer 200 into the application 134. It should be noted that some operations described in the method 800 may be optional or may be rearranged in different embodiments.

[0081] Method 800 begins by determining (operation 802) a computing task for execution by the application at an information processing system. A workload attribute of the computing task is determined by the application (operation 804), the workload attribute including a dependency of the computing task on hardware resources included in the information processing system. Hardware resources present in the information processing system are identified by the application (operation 806). An operating state of at least some of the hardware resources is monitored by the application (operation 808). Based on the workload attributes and the hardware resources, a workload policy for the computing task is determined (operation 810), the workload policy indicating hardware resources for executing the computing task at the information processing system. The workload policy is implemented by the application of the information processing system (operation 812), including configuring the hardware resources specified in the workload policy according to the operating state. The computing task is executed at the information processing system according to the workload policy (operation 814).

[0082] Here, unless expressly stated otherwise or indicated by the context, "or" is inclusive and non-exclusive. Thus, unless expressly stated otherwise or indicated by the context, "A or B" means "A, B, or both" herein. Furthermore, unless expressly stated otherwise or indicated by the context, "and" is conjunctive and plural. Thus, unless expressly stated otherwise or indicated by the context, "A and B" means "A and B, jointly or severally" herein.

[0083] The scope of the present disclosure encompasses all changes, substitutions, variations, alterations, and modifications to the example embodiments described or shown herein that would be understood by a person of ordinary skill in the art. The scope of the present disclosure is not limited to the exemplary embodiments described or shown herein. In addition, although the present disclosure describes and shows the various embodiments herein as including specific components, elements, features, functions, operations, or steps, any of these embodiments may include any combination or arrangement of any components, elements, features, functions, operations, or steps that would be understood by a person of ordinary skill in the art described or shown anywhere herein. In addition, in the appended claims, references to a device or system or a component of a device or system that is suitable for, arranged to, capable of: a device, system, or part of a device or system that is configured to, capable of, operable to, or operable to perform a specific function include the device, as long as the device, including the device, system, component, whether or not it is activated, turned on, or unlocked, as long as the device, system, or component is so adjusted, arranged, capable, configured, enabled, operable, or effective.

Claims

1. A method for monitoring and configuring hardware resources on an information processing system, the method comprising: determining (802), by an application, a computing task to be performed by the application on the information processing system; Determining (804) workload attributes of the computing task by the application; the workload attributes including dependency of the computing task on hardware resources included in the information processing system; identifying (806) by the application the hardware resources present at the information processing system; monitoring (808), by the application, an operational state of at least some of the hardware resources to determine which configuration changes are indicated by the workload attributes or which configuration settings are already commensurate with the workload attributes; determining (810) a workload policy for the computing task based on the determined workload attributes and the identified and monitored hardware resources, wherein the workload policy specifies the hardware resources used to perform the computing task on the information processing system; implementing (812), by the application, the workload policy of the information handling system, including configuring the hardware resources specified in the workload policy, wherein the hardware resources are configured to operate in a manner that matches the workload attributes, and wherein configuring the hardware resources includes accessing BIOS non-volatile RAM to change settings used by the BIOS firmware; as well as The computing task is executed (814) on the information processing system according to the workload policy.

2. The method according to claim 1, characterized in that Configuring the hardware resources includes at least one of the following: accessing a basic input / output system of the information processing system; and A corresponding hardware driver for the hardware resource is accessed, the hardware driver being installed on an operating system executed on the information handling system.

3. The method according to claim 1, characterized in that The application uses an operating system driver to access at least some of the hardware resources, and wherein the workload attribute is selected from at least one of: the degree of multithreading used by the computing tasks; The thread priority used by the computing task; The instruction set architecture used by the computing task; the memory capacity used by the computing task; the memory data throughput used by the computing task; The memory cache capacity used by the computing task; a memory cache architecture used by the computing task; the degree of non-uniform memory access allowed for the computing task; the degree of background execution allowed for the computing task; The network delay allowed by the computing task; the storage capacity used by the computing task; the storage data throughput used by the computing task; the storage delay allowed by the computing task; The degree of acceleration of the graphics processing unit used by the computing task; The vertical synchronization settings allowed by the computing task; the degree of digital signal processing used by the computing task; the degree of integer processing used by the computing task; The degree of background execution allowed for the computing task; and The operating system used by the computing task.

4. The method according to claim 3, characterized in that Determining the workload attribute includes determining a user of the first information handling system associated with the application.

5. The method according to claim 4, characterized in that Determining the workload strategy includes: Based on the user, the workload policy is determined.

6. The method according to claim 1, characterized in that Configuring the hardware resource includes accessing an operating system driver for the hardware resource, and wherein the hardware resource is selected from at least one of: The number of processor cores available; a degree of exclusive access to the available processor core; The degree of processor multithreading available; the degree of background execution available; the degree of user-mode execution available; Processor frequency; Processor architecture; Processor cache structure; Processor power state; Available processor cache capacity; Available processor power consumption; Available instruction set architectures; Available image processing units; Available memory capacity; Available memory throughput; The degree of non-uniform memory access available; Available storage capacity; Available storage throughput; Available storage latency; Available network capacity; Available network throughput; Available network latency; System restart function; System power-down capability; and An operating system executed on the information processing system.

7. A computer program comprising instructions which, when executed by a computer, cause the computer to perform the steps of the method of any one of claims 1 to 6.

8. An information processing system for monitoring and configuring hardware resources on the information processing system, comprising: processor; a memory communicatively coupled to the processor; as well as an application stored in the memory and comprising computer readable instructions that, when executed, cause the processor to: determining a computing task to be performed by the application on the information processing system; Determining a workload attribute of the computing task, the workload attribute comprising a dependency of the computing task on hardware resources included in the information processing system; identifying the hardware resources present in the information processing system; monitoring an operational state of at least some of the hardware resources to determine which configuration changes are indicated by the workload attributes or which configuration settings are already commensurate with the workload attributes; determining a workload policy for the computing task based on the determined workload attributes and the identified and monitored hardware resources, wherein the workload policy specifies the hardware resources used to perform the computing task on the information processing system; implementing the workload policy of the information handling system, comprising configuring the hardware resources specified in the workload policy, wherein the hardware resources are configured to operate in a manner that matches the workload attributes, and wherein configuring the hardware resources comprises accessing BIOS non-volatile RAM to change settings used by the BIOS firmware; and The computing task is executed on the information processing system according to the workload policy.

9. The information processing system according to claim 8, wherein: The instructions for configuring the hardware resources include at least one instruction to: accessing a basic input / output system of the information processing system; and A corresponding hardware driver for the hardware resource is accessed, the hardware driver being installed in an operating system executing on the information handling system.

10. The information processing system according to claim 8, wherein: The application uses an operating system driver to access at least some of the hardware resources, and wherein the workload attribute is selected from at least one of: the degree of multithreading used by the computing tasks; The thread priority used by the computing task; The instruction set architecture used by the computing task; the memory capacity used by the computing task; the memory data throughput used by the computing task; The memory cache capacity used by the computing task; a memory cache architecture used by the computing task; the degree of non-uniform memory access allowed for the computing task; the degree of background execution allowed for the computing task; The network delay allowed by the computing task; the storage capacity used by the computing task; the storage data throughput used by the computing task; the storage delay allowed by the computing task; The degree of acceleration of the graphics processing unit used by the computing task; The vertical synchronization settings allowed by the computing task; the degree of digital signal processing used by the computing task; the degree of integer processing used by the computing task; The degree of background execution allowed for the computing task; and The operating system used by the computing task.

11. The information processing system according to claim 10, wherein: The instructions for determining the workload attributes include instructions for determining a user of the first information handling system associated with the application.

12. The information processing system according to claim 11, wherein: The instructions for determining the workload policy include instructions for: The workload strategy is determined according to the user.

13. The information processing system according to claim 8, wherein: The instructions for configuring the hardware resource include instructions for accessing an operating system driver for the hardware resource, and wherein the hardware resource is selected from at least one of the following: The number of processor cores available; the degree of exclusive access to the available processor cores; The degree of processor multithreading available; the degree of background execution available; the degree of user execution mode available; Processor frequency; Processor architecture; Processor cache structure; Processor power state; Available processor cache capacity; Available processor power consumption; Available instruction set architectures; Available image processing units; Available memory capacity; Available memory throughput; the degree of non-uniform memory access available; Available storage capacity; Available storage throughput; Available storage latency; Available network capacity; Available network throughput; Available network latency; System restart function; System power-down capability; and The operating system executes on the information processing system.

Citation Information

Patent Citations

  • System and method for dynamic allocation of resources in a computing grid

    US20070240161A1