Flexible, optimized data handling in systems with multiple storage locations
By determining data processing properties and policies, the method optimizes data storage and communication in systems with multiple locations, enhancing performance and efficiency.
Patent Information
- Authority / Receiving Office
- DE · DE
- Patent Type
- Patents
- Current Assignee / Owner
- INTERNATIONAL BUSINESS MACHINE CORPORATION
- Filing Date
- 2017-02-20
- Publication Date
- 2026-04-23
AI Technical Summary
Existing data management systems struggle with optimizing storage location and access in computer systems with multiple storage devices, leading to inefficiencies and high overhead due to manual or generic approaches that fail to account for specific application requirements and data access patterns.
A method and system that determine data processing properties and policies based on application-specific data characteristics, optimizing data storage and communication channels by selecting optimal storage locations and transfer mechanisms.
Automates data management to improve application performance by reducing data transfer costs, maintaining coherence, and optimizing bandwidth utilization without requiring explicit programmer input.
Smart Images

Figure 00000000_0000_ABST
Abstract
Description
BACKGROUND Technical Area
[0001] The present invention relates generally to data management and in particular to the optimization of storage location and storage access channels. Description of the state of the art
[0002] Modern computer systems can have multiple different storage locations. This is possible on many scales, for example, with multiple storage devices within a single device, multiple distributed computer systems each with local storage, cloud computing systems, and so on. When running software that has access to multiple storage devices, decisions about where to store specific data and how to transfer that data to the appropriate location are made either automatically or manually.
[0003] In a conventional approach, low-level programming technologies such as the Message Passing Interface (MPI) require the programmer to manually determine memory locations and communication methods. However, this process becomes error-prone and difficult to optimize as system complexity increases.
[0004] Automated systems requiring minimal programming knowledge are also available. However, such systems offer generic solutions that may be poorly tailored to the specific application and incur unnecessarily high overhead. Semi-automated systems control data traffic based on programmed high-level specifications, but they only utilize information about which data areas are read or written at specific points in the application and do not perform well for data areas with fine-grained, irregular access. In the worst case, semi-automated systems resort to a low-level approach when using recursive, pointer-based data structures.
[0005] Publication US 2006 / 0095705A1 relates to a data storage management system comprising: a network-accessible data storage system; and a data storage manager that is communicatively connected to the network-accessible data storage system and configured to allocate and utilize logical and physical storage elements of the network-accessible data storage system through an application instance that makes the data storage system available in application-specific storage units. SUMMARY
[0006] The invention relates to a method, a non-volatile, computer-readable storage medium, and a system, the features of which are specified in the corresponding independent claims. Embodiments of the invention are specified in the dependent claims.
[0007] A method for optimizing an application for a computer system with multiple different storage locations connected by one or more communication channels involves determining one or more data processing properties for a data area within the application. One or more data processing policies for the data area are established based on these one or more data processing properties. For an area within the application that uses the data area at different storage locations, data setup costs are determined based on these one or more data processing properties. The application is then optimized according to these one or more data processing policies and the data setup costs for the different storage locations.
[0008] A method for optimizing an application for a computer system with multiple different storage locations connected by one or more communication channels involves determining one or more data processing properties for a data area within the application. One or more data processing policies are then established for the data area based on these properties. For an area within the application that utilizes the data area at different storage locations, data setup costs are determined based on these properties. The application is then optimized according to these data processing policies and the data setup costs for the various storage locations.The optimization involves selecting one or more storage locations in which the data area is to be stored, and selecting one or more communication channels through which the data area is transferred between storage locations.
[0009] A system for optimizing an application for a computer system with multiple different storage locations connected by one or more communication channels includes a compiler module that has a processor configured to determine one or more data processing properties for a data area in an application, to establish one or more data processing policies for the data area based on the one or more data processing properties, to determine data setup costs for an area in the application that uses the data area at different storage locations based on the one or more data processing properties, and to optimize the application in accordance with the one or more data processing policies and the data setup costs for the different storage locations.
[0010] These and other features and advantages will become apparent from the following detailed description of illustrative embodiments, which should be read in conjunction with the accompanying drawings. Brief description of the different views of the drawings
[0011] The disclosure provides details of the preferred embodiments in the following description with reference to the following figures, wherein: FIGURE 1 shows a block diagram of a computer system with multiple memories according to the present invention; Figure 2 is a block / flow diagram of a method for selecting data processing policies based on data properties according to the present invention; Figure 3 is a block / flow diagram of a method for optimizing application code based on data properties and data processing guidelines according to the present invention; FIGURE 4 is a block diagram of an optimization system according to the present invention; FIGURE 5 is a block diagram of a processing system according to the present invention; Figure 6 is a diagram of a cloud computing environment according to the present invention; and FIGURE 7 is a diagram of abstraction model layers according to the present invention. DETAILED DESCRIPTION
[0012] Embodiments of the present invention automate the control of data movements by means of instructions from the programmer that focus on the program data. These instructions specify properties of the data that are essential for subsequent automated optimization and lead to specific guidelines for data processing.
[0013] It should be understood in advance that, although this disclosure contains 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 present invention are feasible in conjunction with any other type of computing environment known today or to be developed in the future.
[0014] With reference to Fig. Figure 1 depicts a generalized computer system 100 with multiple memories. The computer system 100 includes several system nodes 102, each equipped with corresponding processing resources 104 and memory resources 106. It is understood that the processing resources 104 can include one or more hardware processors and that the memory resources 106 can include one or more memory banks of any suitable type, as will be explained in more detail below.
[0015] The system nodes 102 communicate with each other via one of several communication channels 108. The communication channels 108 can be any suitable form of data communication system, including, for example, an in-system bus, a wired connection, a wireless connection, a connection via the Internet, etc. Each system node 102 includes one or more storage controllers 110, which receive data requests, retrieve the requested data from storage resources 106, and transmit the requested data to the requesting node via one or more communication channels 108. The storage controllers 110 also perform data duplication to other nodes 102, for example, to increase system performance by creating local copies on the nodes 102 that they require.
[0016] It should be noted that communication channels 108 encompass both hardware and software aspects. Hardware mechanisms refer to the physically available communication paths that can be directly enabled by a software call, for example, via an application programming interface (API). Two storage devices can have multiple physical connections between them in the form of direct physical connections, but there can also be indirect physical connections, for example, through the data flow from a first storage resource 106 via the processing resource 104 to a second storage resource. Software communication mechanisms can build upon the hardware mechanisms and provide additional services or enforce specific policies. The hardware mechanisms and the software mechanisms together constitute communication channels 108.
[0017] How the storage controllers 110 determine where data is stored and how data is transferred to requesting nodes is determined by a software program running on the processing resources 102. Each software program has different data management requirements and therefore different optimal data processing policies that correspond to the specific data types used.
[0018] To accommodate these diverse possibilities, the software program is optimized at compile time and runtime according to known properties of the data in question. Data processing policies are defined at compile time, but the code can also be compiled with runtime calls that facilitate policy implementation. Runtime calls can include application programming interface (API) calls for software communication mechanisms or calls to query the state of runtime system resources or program data to facilitate execution path selection.
[0019] Data properties can be explicitly defined by the programmer or automatically detected. Data properties that can be used include the size of a data range for data within a specific area, the status of read / write / read / write accesses, scope information, access frequency information, and data layout information. Specifically, scope information refers to how many elements of a data range are accessed (e.g., few, all, most, or a fixed or variable percentage of the data range size), access frequency information refers to how often the data range is accessed (e.g., once, rarely, at regular intervals, intermittently, etc.), and data layout information refers to whether accesses occur, for example, in the form of a data stream, randomly, or progressively.Other criteria that can be considered during optimization include the time required for data transmission, the amount and frequency of data to be transferred, the overhead effort for copying data, the costs of maintaining coherence and consistency, performance and bandwidth limitations for System 100, and the relationship and overlap between computation and communication.
[0020] In one particular embodiment, the system 100 is implemented as a cloud computing system with many different nodes 102, which may be geographically far apart. In such systems, the cost of data transmission from one node 102 to another via the communication channels 108 can be very high in relation to the cost of performing the associated calculations with this data. In such a case, the benefit of optimizing data storage and communication channels is obvious.
[0021] With reference to Fig. Section 2 describes a procedure for selecting policies based on data properties. Block 202 modifies the source code of an application to be run on System 100 to define data properties for data ranges. It is explicitly considered that Block 202 can be executed manually by the programmer and involves the input of explicit instructions specifying, for example, one of the properties described above. Block 204 then automatically detects properties for the application's data ranges, for example, through static analysis and dynamic profiling, to fill as many gaps as possible in the property definitions. For all data ranges with properties that remain unassigned, Block 206 sets default values.
[0022] Block 208 analyzes the properties of each data area across all areas of the application. As used here, the term "area" refers to a section of application code that can be delimited based on syntactic structures within the code or based on the sequence of instructions to be executed. The analysis depends on the specific configuration of System 100 and the requirements of the application, but some examples are given below. In general, Block 208 attempts to optimize one or more system metrics (such as application speed, power / energy efficiency, or bandwidth utilization) by determining where data areas should be stored and which communication channels (hardware and software mechanisms) should be used to transmit those data areas.This analysis can consider both hardware and software limitations with regard to the application's requirements. Based on the analysis, Block 210 selects data processing properties for each data area, including the initial data placement setting.
[0023] One of several different data processing policies can apply to a specific data set within a specific area of the software program. Generally, the policies can be simple (e.g., a choice between two different communication channels) or more complex (e.g., selecting X if the data is located at A, or otherwise selecting Y).
[0024] A first exemplary guideline is a choice between different coherence / consistency options. For example, a system configuration might include three different memory locations A, B, and C, where hardware coherence is efficiently supported across A and B, but not in C. Coherence for C is handled in software with high overhead. The application code for an example software requires system-level coherence and has three areas X, Y, and Z that can be executed in parallel and all access the same data area. This data area is copied to local memory locations A, B, and C before computation. Then, if X, Y, and Z all write to all elements of the data area, (X, Y, Z) can be mapped to (A, B, C) to be executed in any order without software coherence being enabled on C.However, if X is not allowed to write to all elements of the data space, then mapping X to C would require software coherence handling at high cost. In this example, selecting a policy would take these properties into account to calculate costs and choose computation locations to prevent X from being mapped to C. This policy selects between a communication channel 108 that supports coherence and a channel that does not.
[0025] A second exemplary policy is a choice between different software-based communication mechanisms (e.g., a selection of software communication channels). An exemplary system may have a host processor and memory, as well as a separate accelerator processor and memory, where the connection between the two storage units is bandwidth-limited and requires a fixed time to transfer a small amount of data, but a longer time to transfer amounts greater than a threshold. Two exemplary software libraries implement data transmissions—one that sends data at high power (bulk transmissions) and another that receives data at low power (multiple fine-grained transmissions). In an exemplary application, the software accesses arbitrary elements of a large data domain.When only a few elements are accessed, the time latency of several small transmissions can be less than the time required to transmit the entire data range. In this example, policy selection would consider access frequency characteristics to weigh the costs and benefits of different policies. The high- and low-performance versions of the software library represent different software mechanisms that characterize different communication channels.
[0026] A third exemplary policy is a choice between different hardware-based mechanisms (e.g., a selection of hardware mechanisms). As mentioned above, the exemplary system has a host processor and memory, as well as an accelerator processor and memory, with the hardware connection allowing the accelerator to directly access both the host memory and the accelerator memory (in other words, the accelerator supports load / store instructions using addresses mapped to host memory as well as addresses mapped to accelerator memory). In this case, data that is rarely accessed on the accelerator does not need to be copied to its local memory, while data that is frequently accessed should still be copied for performance improvement.The selection of a policy would therefore take into account properties that determine how frequently the data should be accessed. In this example, direct access to the host storage and copying the data to local storage represent different communication channels.
[0027] A fourth exemplary policy is to move data to a different location if data is written to a location exactly once. An exemplary system might include a host processor and memory, as well as a separate accelerator processor and memory, with the connection between the two storage locations exhibiting high transfer latency. Additionally, this exemplary system might have two exemplary software libraries available for implementing data transfers: a first library, after a write operation, uses high-performance copying to send data to other locations, and a second library, using low-performance copying, receives data from the location where the data was last updated during a read operation.If the software writes to elements in a data area on the host exactly once and then reads to the accelerator multiple times, it is more efficient to use the high-performance sending library for transferring elements of the data area over the connection, since the relatively high write costs are offset by read savings. The high- and low-performance versions of the software library represent different software mechanisms that characterize different communication channels.
[0028] A fifth exemplary guideline directs the placement of data and computations to avoid remote access via communication channels 108. The data properties determined for each data area can be used to automatically apply data affinity optimizations (e.g., placing data near the computation location from which it will be accessed). An exemplary application might have a large data area accessed in a parallel code segment. If the data is accessed in a regular pattern (e.g., streaming or progressive data), the data area can be partitioned and stored in multiple memory locations. Then, the computation locations for the parallel code segments can be chosen to be physically close to the memory holding the data area partition corresponding to the data retrieved by the code.This can help to reduce or prevent data transfer via communication channels 108.
[0029] With reference to Fig. Section 3 presents a procedure for optimizing the code of an application. Block 302 selects a new area from the various areas of the application. Block 304 collects properties for each data area accessed within that area. Block 304 can retrieve the same data properties obtained through the process of Fig. Block 306 then performs a compiler analysis, which is augmented with this information. The compiler analysis can include analyses such as control and data flow analysis, alias analysis, and dependency analysis, which help determine the set of data elements accessed in the code and the access patterns.
[0030] Block 308 calculates the data setup costs for each of the various compute locations available on System 100. For each location, information about the set of data elements accessed in the code, the access patterns, and the data processing policies is used to determine the number, size, and direction of data transfers required when the scope is executed at that compute location. Subsequently, the costs for all data transfers for the communication channel(s) selected by the data processing policies can be estimated. An applicable cost metric can include any subset of system parameters optimized to account for, for example, execution time, performance / energy efficiency, and / or bandwidth utilization.
[0031] Block 310 selects a compute location for the area based on the calculated costs. The compute location is selected according to one or more requirements in the application. For example, functions required by the application may be unavailable at some compute locations, or these functions may be associated with higher costs, necessitating the selection of a different compute location. In another example, the costs may characterize the power consumption of the processing, with processing at some locations being associated with higher energy costs. Block 312 then applies the data processing policies to the area at the respective compute location(s). For each data area within the area, the communication channel 108 is selected based on the data processing policy for the data area and the communication channels 108 available at that location.The selected communication channel 108 will be used for all data transmissions in the area that correspond to elements of this data area.
[0032] Block 314 determines whether there are any additional areas in the application that have not yet been processed. If so, processing returns to Block 302, where a new area is selected. If not, Block 316 generates optimized code using the selected computation location(s) and data processing policies. This optimized code addresses the application's needs across areas in a way that is highly responsive to the characteristics of the data areas involved, without requiring explicit input from the programmer. As a result, the application performs better when the code in Block 318 is executed.
[0033] The optimization criteria used to determine the best storage locations for data areas depend on the specific application and system parameters. Optimization criteria (i.e., goals to be achieved through the optimization process) can include, for example, improvements in data transfer time, the amount / frequency of data to be transferred, the overhead of copying data, the cost of maintaining coherence / consistency, or the need to address performance / bandwidth limitations within the system.
[0034] The present invention may be a system, a method, and / or a computer program product. The computer program product may include a computer-readable storage medium (or media) containing computer-readable program instructions to instruct a processor to execute aspects of the present invention.
[0035] The computer-readable storage medium can be a physical device capable of holding and storing instructions for use by a command-executing device. For example, the computer-readable storage medium can be an electronic storage device, a magnetic storage device, an optical storage device, an electromagnetic storage device, a semiconductor storage device, or a suitable combination thereof.A non-exhaustive list of more specific examples of computer-readable storage media includes the following: a portable computer floppy disk, a hard disk, random-access memory (RAM), read-only memory (ROM), erasable programmable read-only memory (EPROM or flash memory), static random-access memory (SRAM), portable read-only storage in the form of a compact disc (CD-ROM), a digital versatile disc (DVD), a memory stick, a floppy disk, a mechanically coded device such as punched cards or raised structures in a groove with instructions recorded thereon, and any suitable combination of the foregoing. A computer-readable storage medium, as used herein, is not to be understood as a transient signal in itself, such as radio waves or other freely propagating electromagnetic waves, electromagnetic waves propagating through a waveguide or other transmission media (e.g., a waveguide).B. light pulses traveling through a fiber optic cable), or electrical signals transmitted through a wire.
[0036] The computer-readable program instructions described herein can be downloaded from a computer-readable storage medium to the respective computing / processing devices or, via a network such as the internet, a local area network, a wide area network, and / or a wireless network, to an external computer or external storage device. The network may include copper transmission cables, optical transmission 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 computer-readable program instructions from the network and forwards the computer-readable program instructions for storage on a computer-readable storage medium within the respective computing / processing device.
[0037] Computer-readable program instructions for performing operations of the present invention can be assembly instructions, instructions of an instruction set architecture (ISA), machine instructions, machine-dependent instructions, microcode, firmware instructions, state setting data, or either source code or object code written in any combination of one or more programming languages, including an object-oriented programming language such as Smalltalk, C++, or the like, and conventional procedural programming languages such as the programming language "C" or similar programming languages. The computer-readable program instructions can be executed entirely on the user's computer, partially on the user's computer as a standalone software package, partially on the user's computer and partially on a remote computer, or entirely on the remote computer or server.In the latter scenario, the remote computer can 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 the connection can be established to an external computer (e.g., via the internet through an internet service provider). In some embodiments, an electronic circuit, including, for example, programmable logic circuits, field-programmable gate arrays (FPGAs), or programmable logic arrays (PLAs), can execute the computer-readable program instructions by using state information from the computer-readable program instructions to customize the electronic circuit to implement aspects of the present invention.
[0038] Aspects of the present invention are described herein with reference to flowchart representations and / or block diagrams of processes, devices (systems), and computer program products according to the embodiments of the invention. It is understood that each block of the flowchart illustrations and / or block diagrams, and combinations of blocks in the flowchart illustrations and / or block diagrams, can be implemented by computer-readable program instructions.
[0039] These computer-readable program instructions can be provided to a processor of a general-purpose computer, a special-purpose computer, or any other programmable data processing device for the manufacture of a machine, such that the instructions executed through the processor of the computer or other programmable data processing device provide means for the execution of the functions / operations specified in the block or blocks of the flow and / or block diagrams.These computer-readable program instructions can also be stored on a computer-readable storage medium capable of controlling a computer, programmable data processing device and / or other devices to function in a particular manner, such that the computer-readable storage medium containing instructions comprises a manufacturing item containing instructions that implement aspects of the function / operation specified in the block or blocks of the flow and / or block diagrams.
[0040] The computer-readable program instructions can also be loaded into a computer, other programmable data processing device, or other device to initiate a series of operational steps to be executed on the computer, other programmable device, or other device to produce a computer-implemented process such that the instructions executed on the computer, other programmable device, or other device perform the functions or operations specified in the block or blocks of the flow and / or block diagrams.
[0041] 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 context, each block in the flowcharts or block diagrams can represent a module, segment, or part of the instructions, comprising one or more executable instructions for implementing the specified logical function(s). In some alternative implementations, the functions specified in the blocks may occur out of the order shown in the figures. For example, two consecutive sets may be executed essentially simultaneously, or the sets may sometimes be executed in reverse order, depending on the function.It is also noted that each block of the block and / or flowchart representation, as well as combinations of blocks of the block and / or flowchart representation, can be implemented by dedicated hardware-based systems that perform the specified functions or operations, or by combinations of dedicated hardware and computer instructions.
[0042] The reference in the description to "an embodiment" of these principles, as well as variations thereof, means that a specific feature, structure, property, etc., described in connection with the embodiment, is included in at least one embodiment of these principles. Thus, the various forms of the phrase "in an embodiment," as well as any variations appearing in different parts of the description, do not necessarily all refer to the same embodiment.
[0043] It should be noted that the use of any of the following " / ", "and / or", and "at least one of", e.g., in the cases "A / B", "A and / or B", and "at least one of A and B", is intended to include the selection of only the first listed option (A), only the second listed option (B), or both options (A and B). As a further example, in the cases "A, B and / or C" and "at least one of A, B, and C", such wording is intended to include the selection of only the first listed option (A), only the second listed option (B), only the third listed option (C), or the selection of both the first and second listed options (A and B), or the selection of both the first and third listed options (A and C), or the selection of both the second and third listed options (B and C), or the selection of all three options (A, B, and C).This can be extended to any listed number of options, as is readily apparent to a normally competent professional in this and related fields.
[0044] With reference to Fig. Figure 4 now shows an optimization system 400. The system 400 includes a hardware processor 402 and a memory 404. The system 400 can further include one or more function modules. The function modules can be implemented as software, which is stored in the memory 404 and executed by the hardware processor 402. In alternative embodiments, the function modules can be implemented as one or more discrete hardware components in the form of, for example, application-specific integrated chips or field-programmable gate arrays.
[0045] A development environment 406 runs on the system 400 and allows a programmer to make changes to the source code 408, which is stored in memory 404. The development environment 406 provides the ability to manually set properties 410 for data ranges across different sections of the source code 408. A compiler module 414 uses the data properties and the system description 412 to select data handling policies to be applied to the source code and chooses computation locations for each data range. The compiler module 414 then outputs a compiled application for execution on a system 100 with multiple computation and memory locations.
[0046] With reference to Fig. Figure 5 shows an exemplary processing system 500, which can represent the optimization system 400. The processing system 500 includes at least one processor (CPU) 504, which is functionally coupled to other components via a system bus 502. A cache 506, a read-only memory (ROM) 508, a random access memory (RAM) 510, an input / output adapter (I / O adapter) 520, a sound adapter 530, a network adapter 540, a user interface adapter 550, and a display adapter 560 are functionally coupled to the system bus 502.
[0047] A first storage device 522 and a second storage device 524 are functionally coupled to the system bus 502 via the I / O adapter 520. The storage devices 522 and 524 can be any disk storage device (e.g., a magnetic or optical disk storage device), a solid-state magnet device, etc. The storage devices 522 and 524 can be the same type of storage device or different types of storage devices.
[0048] A loudspeaker 532 is functionally coupled to the system bus 502 via the sound adapter 530. A transceiver 542 is functionally coupled to the system bus 502 via the network adapter 540. A display device 562 is functionally coupled to the system bus 502 via the display adapter 560.
[0049] A first user input device 552, a second user input device 554, and a third user input device 556 are functionally coupled to the system bus 502 via the user interface adapter 550. The user input devices 552, 554, and 556 can be any type of keyboard, mouse, keypad, image capture device, motion sensor device, microphone, device with the functionality of at least two of the preceding devices, etc. Of course, other types of input devices can also be used, while maintaining the meaning of the present principles. The user input devices 552, 554, and 556 can be of the same type or different types. The user input devices 552, 554, and 556 are used to input and output information to and from the system 500.
[0050] Of course, the Processing System 500 can also include other elements (not shown), as a professional might consider, and omit certain elements. For example, various other input and / or output devices can be incorporated into the Processing System 500, depending on the specific implementation, as is readily understood by a typically competent professional. For instance, different types of wireless and / or wired input and / or output devices can be used. Furthermore, additional processors, controllers, memory, etc., in various configurations can also be used, as is readily understood by a typically competent professional. These and other variations of the Processing System 500 are readily considered by a typically competent professional based on the lessons of the principles contained herein.
[0051] With reference to Fig. Figure 6 now shows an illustrative cloud computing environment 50. As shown, the cloud computing environment 50 comprises one or more cloud computing nodes 10 with which local computing devices used by cloud consumers, such as a personal digital assistant (PDA) or mobile phone 54A, desktop computer 54B, laptop computer 54C, and / or automotive computer system 54N, can communicate. The nodes 10 can communicate with each other. They can be grouped physically or virtually in one or more networks (not shown), such as private, community, public, or hybrid clouds, as described above, or a combination thereof. This enables the cloud computing environment 50 to offer infrastructure, platforms, and / or software as services for which a cloud customer does not need to manage resources on a local computing device. It is understood that the in Fig. The 6 types of computing devices 54A-N shown are for illustrative purposes only and that computing nodes 10 and cloud computing environments 50 can communicate with any type of computerized device over any type of network and / or network-addressable connection (e.g. via a web browser).
[0052] With reference to Fig. 7 presents a set of functional abstraction layers that are used by the cloud computing environment 50 ( Fig. 6) will be provided. It should be understood in advance that the in Fig. The components, layers, and functions shown in Figure 6 are for illustrative purposes only, and the embodiments of the invention are not limited to them. As shown, the following layers and corresponding functions are present: The hardware and software layer 60 includes hardware and software components. Examples of hardware components are: mainframes 61; RISC (Reduced Instruction Set Computer) architecture-based servers 62; servers 63; blade servers 64; storage devices 65; and networks and network components 66. In some embodiments, software components include network application server software 67 and database software 68.
[0053] The virtualization layer 70 provides an abstraction layer from which the following examples of virtual entities can be provided: virtual servers 71; virtual storage 72; virtual networks 73, including virtual private networks; virtual applications and operating systems 74; and virtual clients 75.
[0054] In one example, the administration layer 80 can provide the functions described below. A resource provisioning module 81 enables the dynamic procurement of computing resources and other resources used to perform tasks within the cloud computing environment. A tracking and pricing module 82 provides cost tracking for resource usage within the cloud computing environment, as well as billing or invoicing for the consumption of these resources. In one example, these resources could consist of licenses for application software. A security module provides identity verification for cloud consumers and tasks, as well as protection for data and other resources. A user portal 83 provides consumers and system administrators with access to the cloud computing environment.Service Level Management (SLM) provides resource allocation and management for cloud computing, ensuring that the required service levels are achieved. A module for planning and fulfilling Service Level Agreements (SLAs) involves preparing and procuring cloud computing resources for which a future need is anticipated according to an SLA.
[0055] A workload layer 90 provides examples of functions for which the cloud computing environment can be used. Examples of workloads and functions that can be provided from this layer include: mapping services and navigation 91, software development and lifecycle management 92, educational services with a virtual classroom 93, data analytics processing 94, transaction processing 95, and source code optimization 96.
Claims
[1] Method for optimizing an application for a computer system (100) with several different memory locations (106) connected to each other by one or more communication channels (108), wherein the method is executed by means of a processor of a compiler module (414) and comprises the following: Determining one or more data processing properties (410) for a data area in an application; Determine one or more data processing policies for the data area based on one or more data processing properties; Determining data setup costs for an area in the application that uses the data area in different storage locations, based on one or more data processing properties; and Optimizing the application in accordance with one or more data processing policies and the data setup costs for the various storage locations. [2] Method according to claim 1, wherein the optimization of the application comprises selecting one or more storage locations in which the data area is to be stored. [3] Method according to claim 1 or claim 2, further comprising selecting one or more communication channels by which the data area is transferred between storage locations. [4] Method according to one of the preceding claims, wherein the one or more data processing properties for the data area include scope information. [5] Method according to one of claims 1-3, wherein one or more data processing properties for the data area include access frequency information. [6] Method according to any one of claims 1-4, wherein one or more data processing properties for the data area include data layout information. [7] Method according to claim 1, wherein at least one of the one or more data processing properties is determined by a programmer. [8] Method according to one of claims 4, 5 and 6, wherein each area in the application is defined by a section of application code (408) which is delimited by syntactic structures in the application code or by a sequence of instructions to be executed. [9] Non-volatile, computer-readable storage medium comprising a computer-readable program for optimizing an application for a computer system (100) with several different storage locations (106) which are interconnected by one or more communication channels (108), wherein the computer-readable program, when executed on a computer, causes the computer to execute a method according to any of the preceding claims. [10] System (400) for optimizing an application for a computer system (100) with several different memory locations (106) connected to each other by one or more communication channels (108), comprising: a compiler module (414) comprising a processor configured to determine one or more data processing properties (410) for a data area in an application, to determine one or more data processing policies for the data area based on the one or more data processing properties, to determine data setup costs for an area in the application that uses the data area in different storage locations based on the one or more data processing properties, and to optimize the application according to the one or more data processing policies and the data setup costs for the different storage locations. [11] System for optimization according to claim 10, wherein the compiler module is further configured to select one or more memory locations where the data area is to be stored. [12] System for optimization according to claim 10, wherein the compiler module is further configured to select one or more communication channels through which the data area is transferred between storage locations. [13] System for optimization according to claim 10, wherein one or more data processing properties for the data area have scope information. [14] System for optimization according to claim 10, wherein one or more data processing properties for the data area include access frequency information. [15] System for optimization according to claim 10, wherein the one or more data processing properties for the data area include data layout information. [16] System for optimization according to claim 10, wherein at least one of the one or more data processing properties is determined by a programmer. [17] System for optimization according to claim 10, wherein each area in the application is defined by a section of application code which is delimited by syntactic structures in the application code or by a sequence of instructions to be executed.
Citation Information
Patent Citations
Systems and methods for data storage management
US20060095705A1