Transferring applications from overutilized arrays of computer systems to underutilized arrays of computer systems

Transferring a workload among computing devices is described. For instance, a system can comprise a first device with a memory that stores computer executable components and a processor that executes the computer executable components stored in the memory. In an example implementation, a transfer instruction receiving component can receive a transfer instruction from a second device, with the transfer instruction being generated based on a first utilization characteristic assigned to the first device and a second utilization characteristic assigned to a third device. In one or more embodiments, the first utilization characteristic can be based on a workload to provide a service to a client device served by the first device, and the second utilization characteristic can be based on measure of available workload processing capacity for the third device.

TECHNICAL FIELD

The subject application generally relates to computer applications, and, for example, to adjusting processing load across arrays of systems, and related embodiments.

BACKGROUND

As the processing of data by organizations continues to increase, modern processing solutions can incorporate different approaches to handling applications, including the use of arrays of processing systems across sites and the enterprise. Benefits of these processing arrays is an increase in the performance that can be realized based on concurrent operation of the systems, e.g., lower latency. Another benefit involves fault tolerance, e.g., individual systems can fail without affecting the entire system.

In some circumstances, conventional approaches to handling applications with arrays of systems can have problems with underutilization and overutilization of different arrays. Solving this problem can be difficult because underutilized arrays that are capable of handling additional processing can have different characteristics, with some arrays being less likely to have short and longer-term problems handling more processing tasks.

SUMMARY

According to an embodiment, a system can comprise a first device with a memory that stores computer executable components and a processor that executes the computer executable components stored in the memory. In an example implementation, a transfer instruction receiving component can receive a transfer instruction from a second device, with the transfer instruction being generated based on a first utilization characteristic assigned to the first device and a second utilization characteristic assigned to a third device. In one or more embodiments, the first utilization characteristic can be based on a workload to provide a service to a client device served by the first device, and the second utilization characteristic can be based on measure of available workload processing capacity for the third device.

In one or more embodiments, a workload transfer component can, based on the transfer instruction, transfer the workload to the third device, with the third device being selected to receive the workload based on the second utilization characteristic and a stability characteristic of the second device. In one or more embodiments, the stability characteristic can be based on a version of an application that provides the service by the second device. In a variation, the stability characteristic can be based on a likelihood of a failure of a component of the second device that would affect providing the service by the second device.

In one or more embodiments, the first utilization characteristic can be based on a group of factors, including, but not limited to, processor utilization and a rate of input output operations. In an example embodiment, the second device can be selected to receive the workload based on the second utilization characteristic indicating that the second device is in an underutilized state. One or more additional embodiments can provide a method that includes assigning, by a system comprising a processor, determined utilization characteristics to respective ones of a group of linked network devices. In an embodiment, the group of linked devices can be a part of a unified storage system array.

In an example, implementation, a first utilization characteristic of the determined utilization characteristics can be assigned to a first network device and a second utilization characteristic of the determined utilization characteristics can be assigned to a second network device of the group of linked network devices, with the first network device handing a workload to provide a service to a client device served by the first network device.

In additional embodiments, the method can further include, a based on the first utilization characteristic, identifying, by the system, the first network device as a source network device, with the first utilization characteristic describes a magnitude of the workload. In additional variations, the method can include mapping, by the system, a transfer of the workload to the second network device, with the second network device being selected as a destination device for the workload based on the second utilization characteristic and a stability characteristic of the second network device. Based on the mapping, some embodiments can facilitate transferring, by the system, the workload to the destination device.

In alternative or additional embodiments, the stability characteristic can be based on a likelihood of a failure of a component of the second network device with an impact on providing the service to the client device. In some embodiments, likelihood of a failure can be based on a version of an application that provides the service, e.g., the application provided to a client device.

In some embodiments, the first network device can be identified as the source network device based on the first utilization characteristic indicating that the first network device is in an overutilized state from handling the workload. In one or more embodiments of the method, the utilization characteristic can be based on factors including, but not limited to, processor utilization and a rate of input output operations. In some embodiments, the utilization characteristics can be analyzed for the workload based on results of analysis of other workloads. In one or more embodiments, the first utilization characteristic can be based on an extent to which the service provided accesses stored service data sequentially.

In embodiments of the method, the second network device can be identified as the destination device based on the second utilization characteristic indicating that the second network device is in an underutilized state. In some embodiments, the destination device can provide an alternate location for providing the service to the client device. In one or more embodiments, the second network device can be identified as the destination device based on a measure of latency for communications with the client device.

Additional embodiments can comprise a machine-readable storage medium comprising executable instructions that, when executed by a processor of a first computing device, facilitate performance of operations, the operations comprising assigning obtained utilization characteristics to respective ones of a group of linked network devices, wherein a first utilization characteristic of the obtained utilization characteristics is assigned to a first network device and a second utilization characteristic of the obtained utilization characteristics is assigned to a second network device of the group of linked network devices, and wherein the first network device handles a workload to provide a service to a client device served by the first network device.

In additional embodiments, executable instructions can further include, based on the first utilization characteristic, identifying the first network device as a source network device, with the first utilization characteristic generally describing a magnitude of the workload. In additional embodiments, executable instructions can further include transferring the workload to the second network device, with the second network device being selected as a destination device for the workload based on the second utilization characteristic and a stability characteristic of the second network device.

Other embodiments may become apparent from the following detailed description when taken in conjunction with the drawings.

DETAILED DESCRIPTION

Various aspects described herein are generally directed towards facilitating transferring workload among computing devices, in accordance with one or more embodiments. As will be understood, the implementation(s) described herein are non-limiting examples, and variations to the technology can be implemented.

Reference throughout this specification to “one embodiment,” “one or more embodiments,” “an embodiment,” “one implementation,” “an implementation,” etc. means that a particular feature, structure, or characteristic described in connection with the embodiment/implementation is included in at least one embodiment/implementation. Thus, the appearances of such a phrase “in one embodiment,” “in an implementation,” etc. in various places throughout this specification are not necessarily all referring to the same embodiment/implementation. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more embodiments/implementations.

The computer processing systems, computer-implemented methods, apparatus and/or computer program products described herein can employ hardware and/or software to solve problems that are highly technical in nature (e.g., rapid determination and dissemination of distributed system state information, as well as the synchronizing of processes), that are not abstract and cannot be performed as a set of mental acts by a human. For example, a human, or even a plurality of humans, cannot efficiently, accurately and effectively, collect, encode, and transfer state information for the nodes of a distributed system, with the same level of accuracy and/or efficiency as the various embodiments described herein.

FIG. 1illustrates a block diagram of an example, non-limiting system100that can facilitate transferring workload among computing devices, in accordance with various aspects and implementations of the subject disclosure. Repetitive description of like elements and/or processes employed in respective embodiments is omitted for sake of brevity.

System100can include first device182of first device array180A communicatively coupled to second device array180B and third device array180C via network190. First device182can include computer-executable components120, processor160, storage component170, memory165, and communications interface195. Storage component170can include shared file state175. Examples of network190that can be used by one or more embodiments are discussed withFIGS. 9 and 10below. As depicted, second device array180B transfers workload data197to network190for allocation to third device array180C. In one or more embodiments, workload data197can comprise an application utilized by client device192.

As will be understood, the implementation(s) described herein are non-limiting examples, and variations to the technology can be implemented. For instance, even though examples described herein where applications are executed on arrays of linked computing devices, different approaches can work with individual computing devices as well. As such, any of the embodiments, aspects, concepts, structures, functionalities, implementations and/or examples described herein are non-limiting, and the technology may be used in various ways that provide benefits and advantages in distributed systems technology in general, both for existing technologies and technologies in this area that are yet to be developed.

In one or more embodiments, system100can comprise memory165that can store computer executable components, and processor160that can execute the computer executable components stored in the memory. As discussed further below withFIG. 10, in some embodiments, memory165can comprise volatile memory (e.g., random access memory (RAM), static RAM (SRAM), dynamic RAM (DRAM), etc.) and/or non-volatile memory (e.g., read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), etc.) that can employ one or more memory architectures. Further examples of memory165are described below with reference to system memory1016andFIG. 10. Such examples of memory165can be employed to implement any embodiments of the subject disclosure.

According to multiple embodiments, processor160can comprise one or more types of processors and/or electronic circuitry that can implement one or more computer and/or machine readable, writable, and/or executable components and/or instructions that can be stored on memory165. For example, processor160can perform various operations that can be specified by such computer and/or machine readable, writable, and/or executable components and/or instructions including, but not limited to, logic, control, input/output (I/O), arithmetic, and/or the like.

Computer-executable components120can include utilization characteristic determining component122, workload processing component124, workload transfer mapping component126, workload transfer component128, and other components described or suggested by one or more embodiments discussed herein. For example, in one or more embodiments, memory165can store computer-executable components120that, when executed by processor160, can facilitate performance of operations described further herein.

As described in some examples below, an example system that can benefit in some circumstances from the use of one or more embodiments is a system that can facilitate transferring workload among computing devices, workload of applications served to client device192, e.g., file storage applications and database applications. In some implementations, workload data197can be associated with a file storage application of a file storage system that implements a data protection system. In different implementations, data protection systems can benefit from the flexible expansion that one or more embodiments can facilitate, e.g., adding additional workload processing capacity with additional computing devices that can be included in the shared state described herein.

Example data protection systems which can employ one or more of the approaches described with embodiments herein include, but are not limited to storage as a service applications, e.g., STAAS provided by DELL EMC, Inc. Example storage array devices which can employ one or more of the approaches described with embodiments herein include, but are not limited to, POWERMAX ENTERPRISE DATA STORAGE ARRAY SYSTEM provided by DELL EMC, Inc. In one or more embodiments, devices discussed herein can be linked in a unified storage system array.

As described further below, in one or more embodiments, a source array under load can be identified using different approaches, including, but not limited to, monitoring and statistical calculations. Once an overutilized source array is identified, underutilized destination arrays are identified and selected for use, based on different approaches, including, but not limited to, a scoring technique, with a machine learning algorithm.

As will be understood, the implementation(s) described herein are non-limiting examples, and variations to the technology can be implemented. For instance, even though examples described herein where overutilized arrays can be identified and application hosting can be transferred to alternative device arrays. As such, any of the embodiments, aspects, concepts, structures, functionalities, implementations and/or examples described herein are non-limiting, and the technology may be used in various ways that provide benefits and advantages in distributed systems technology in general, both for existing technologies and technologies in this area that are yet to be developed.

FIG. 2illustrates a chart200that illustrates aspects of the detection of underutilized and overutilized systems, in accordance with one or more embodiments. Repetitive description of like elements and/or processes employed in respective embodiments is omitted for sake of brevity. As depicted, chart200includes input/output operations per second (IOPS)210on a Y-axis and time period220on an X-axis. Of the charted points, peak utilization points232A-B are labels, and average line240indicates an average IOPS over time period220.

Thus, returning to the elements ofFIG. 1, in one or more embodiments, a system comprising a processor, can assign determined utilization characteristics to respective ones of a group of linked network devices. For example, first device182can determine utilization characteristics for second device array180B and third device array180C. Generally speaking, as discussed further below, one or more embodiments can use a variety of data sets including existing capacity metrics, performance metrics (utilization, etc.), tier data, and configuration information for different device arrays.

In one or more embodiments, utilization characteristics can include, but is not limited to, data from operation of respective device arrays (e.g., device arrays180B-C) can be collected and analyzed to detect different aspects of the load under which the device array is operating. For example, in a non-limiting example, an array under load can be identified by performing statistical analysis for system utilization metrics using data from the last number of days (e.g., 7, 21, 30, and 90, in some examples), with the data being averaged for each day to get a long term utilization pattern for the system, e.g., a magnitude of the workload. This long term utilization pattern can be compared to a threshold of usage, e.g., to determine whether the array is overutilized.

As an alternative factor, measurement of load on drive storage devices (e.g., storage component170) can be compared to a threshold, e.g., by measuring and analyzing input/outputs per second (IOPS)210for a period of time similar to that discussed above with utilization, discussed above. In additional or alternative embodiments, factors associated with the access of workload data197from second device array180B can be evaluated when determining the utilization characteristics of the array. Aspects of some of the data access factors that can be utilized by one or more embodiments are discussed withFIG. 4below.

In additional embodiments, array utilizations, IOPS, and other metrics can be combined to determine whether a system is overutilized. An example combination that can be used by one or more embodiment includes a threshold where more than 80% of processing utilization and 80% of disk IOPS are under load. In this example, second device array180B can be operating an application that produces workload data197for client device192.

Continuing the example fromFIG. 1, first device182can assign the determined utilization characteristics to respective device arrays180B-C. For second device array180B, for this example, the utilization characteristics (e.g., as described above) can facilitate the identifying by first device182, of second device array180B as a source network device, e.g., an overloaded array from which an application can be transferred to a destination network device. In one or more embodiments, this transfer can be facilitated by a mapping by system device182of a transfer of the workload from second device array180B to a destination device.

As noted above, third device array180C can be selected as a destination device by one or more embodiments based on determined utilization characteristics of third device array180C. In a variation of this approach, additional factors can be included in the criteria used to evaluate destination devices for the workload from second device array180B. These additional factors can include, but are not limited to a stability characteristic of third device array180C, e.g., a likelihood of failure for the device array over a future term. The selection of destination devices, including aspects of stability characteristics of device arrays, are discussed further below withFIG. 4.

FIG. 3illustrates a block diagram of an example, a second device184of non-limiting system300that can facilitate transferring workload among computing devices, in accordance with various aspects and implementations of the subject disclosure. Repetitive description of like elements and/or processes employed in respective embodiments is omitted for sake of brevity.

System300can include first device182communicatively coupled to second device array180B and third device array180C via network190, as discussed above withFIG. 1. Second device array180B, depicted inFIG. 3in more detail, can include computer-executable components320, processor360, storage component370, memory365, and communications interface395. Storage component170can include shared file state175. As depicted, second device184can transfer workload data197to network190for allocation to third device array180C. In one or more embodiments, workload data197can comprise an application utilized by client device192.

In one or more embodiments, system100can comprise memory165that can store computer executable components, and processor160that can execute the computer executable components stored in the memory. As discussed further below withFIG. 10, in some embodiments, memory165can comprise volatile memory (e.g., random access memory (RAM), static RAM (SRAM), dynamic RAM (DRAM), etc.) and/or non-volatile memory (e.g., read only memory (ROM), programmable ROM (PROM), electrically programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM), etc.) that can employ one or more memory architectures. Further examples of memory165are described below with reference to system memory1016andFIG. 10. Such examples of memory165can be employed to implement any embodiments of the subject disclosure.

According to multiple embodiments, processor160can comprise one or more types of processors and/or electronic circuitry that can implement one or more computer and/or machine readable, writable, and/or executable components and/or instructions that can be stored on memory165. For example, processor160can perform various operations that can be specified by such computer and/or machine readable, writable, and/or executable components and/or instructions including, but not limited to, logic, control, input/output (I/O), arithmetic, and/or the like.

Computer-executable components120can include utilization characteristic determining component122, workload processing component124, workload transfer mapping component126, workload transfer component128, and other components described or suggested by one or more embodiments discussed herein. For example, in one or more embodiments, memory165can store computer-executable components120that, when executed by processor160, can facilitate performance of operations described further herein.

In some embodiments, a transfer instruction receiving component322of second device184can receive a transfer instruction from first device182, with the transfer instruction being generated as described withFIG. 1, based on a first utilization characteristic assigned to source second device array180B and a second utilization characteristic assigned to third device array180C. As discussed withFIG. 1above, the first utilization characteristic can be based on a workload for second device184to provide a service to client device192, and the second utilization characteristic can be based on measure of available workload processing capacity for the third device array180C, e.g., discussed withFIGS. 4-6.

In one or more embodiments workload transfer component324of a source second device184can, based on the transfer instruction received, transfer the workload to a destination device, with the destination device being selected to receive the workload based on utilization characteristics of candidate destination devices and a stability characteristic of the second device, e.g., discussed withFIGS. 4-5below.

FIG. 4illustrates an example400of computer executable components that can be used to implement some aspects of various aspects and implementations of different embodiments of the subject disclosure. Repetitive description of like elements and/or processes employed in respective embodiments is omitted for sake of brevity.

Example400depicts example computer-executable components420that can be used by computer devices discussed herein, e.g., similar to computer-executable components120of first device182, discussed above. In one or more embodiments, computer-executable components420can include, but are not limited to, stability characteristic determining component422, latency measuring component426, version determining component428, sequential data access determining component429, and other components described or suggested by one or more embodiments discussed herein.

As noted above, destination devices for workload transfer can be selected by a combination of factors, including utilization characteristics and stability characteristics. To implement an additional feature of some embodiments, latency measuring component426can measure the latency between the application selected to be transferred and potential candidate destination systems, e.g., in some circumstances selecting third device array180C because of a relatively low latency for communications with client device192.

In one or more embodiments, stability characteristic determining component422can generate stability information for candidate destination devices, e.g., third device array180C and other available arrays. In some implementations, this stability information can be a stability score (e.g., also termed a health score) that can reflect a likelihood that an array of computing devices will experience a failure that could impact the operation of the application to be transferred. One having skill in the relevant art(s), given the disclosure herein, would appreciate different types of available information that can be utilized to generate this estimate.

For example, having versions of software installed at a destination that are not up to most recent versions, so versions of software can be collected and analyzed to incorporate this potential risk into the described stability score. In an example implementation first device182can utilize version determining component428to determine and analyze version information for operating system software and application software for candidate destination arrays. For example, one scoring approach for versioning can utilize a zero score for use of an old major version of an application, an 80% score for any of the last three minor versions, and 100% for the current major version of application software. As with other factors discussed herein, it should be appreciated that versioning scores can be combined with other factors to select transfer destinations.

In another example, a measure of the quality of hardware elements can also be used, e.g., including, but not limited to, hardware age, maintenance history, record of past failures, and past fixes implemented. One having skill in the relevant art(s), given the description herein would appreciate additional factors that can be considered by embodiments, when determining a stability score for a candidate destination device.

Examples of additional factors that can be considered when evaluating destination devices include, but are not limited to, the type of data access performed by the application. As discussed further withFIG. 5below, sequential data access determining component429can provide information about application data access that can influence the selection of a transfer destination device.

FIG. 5illustrates a block diagram of a non-limiting, example system500that can facilitate selecting a destination system for receiving a transferred workload, in accordance with one or more embodiments. Repetitive description of like elements and/or processes employed in respective embodiments is omitted for sake of brevity.

System500can include different activity blocks for selecting destination devices, e.g., as depicted: data collection phase510includes health score542, normalization544, and capacity prediction546, score determination phase515includes stability score562, and destination system load score564, workload assessment phase520includes source system workload type572, and weight score574, and destination selection phase525include location selection580, with all of the phases potentially including other activities described or suggested by one or more embodiments discussed herein.

In an example, before data collection phase510one or more embodiments can analyze a device array for an application and determine based on utilization characteristics, that the application device array is overutilized. Phases510,515,520, and525illustrate an example process for evaluating and selecting from underutilized destinations array for receiving some of the processing load of the overutilized system.

In one or more embodiments, data collection phase510can collect and analyze information regarding the potential failure of a candidate system, over time, e.g., termed health score542for a device array in some embodiments. As depicted, in normalization544, different characteristics of candidate devices can be collected and evaluated, e.g., destination version, alerts regarding destination devices, configuration elements of destination devices, processing and storage capacity of candidates, and other relevant metrics that could influence the selection processes described and suggested herein. Based on some of this normalized data, capacity prediction546can predict future capacity for candidate destination systems, e.g., over a selected term such as 6 months, for example.

At score determination phase515, different scores can be determined that reflect the selection factors discussed withFIG. 3above, e.g., stability score562and destination system load score564. Generally, system load score564(also termed LScore herein) can be generated based on the available capacity provided by normalization544, and capacity prediction546, e.g., storage and processing. Additional factors that can be used to determine system load score564can include, destination performance metrics, e.g., tier data. In some additional embodiments, machine learning can be used to analyze health score542and normalization544information.

At workload assessment phase520, the type of workload performed by the overutilized system can be considered by source system workload type572. Example types include types of storage systems used (e.g., unified storage or file system storage), as well as whether access to workload data197of the source system is predominately random-access or sequential. In addition, the combination of both factors can also be utilized to influence the selection of destination devices, e.g., for applications with source device data in a file system, sequentially accessed data can be beneficially identified and persisted in a destination device with a file storage system. For example, in one or more embodiments, a sequential data access workload can be generally be moved to a unified storage array or a file storage array, while one or more embodiments can beneficially move a randomly-accessed workload to a unified storage array.

For weighted score574, in one or more embodiments, a numeric score can be generated by taking weighted score of system stability score562(SScore) and system load score564(LScore). For destination selection phase525, destination location selection580can be based SScore, LScore, source system workload type572, and weighted score574. For example, a destination score (DScore) can be determined based on the weighted sum of SScore and LScore. In one or more embodiments, the weights applied can be adjusted to emphasize one factor over the other, e.g., DScore=weight1*SScore+weight2*LScore, with a DScore above >0.8 being potential destination storage arrays.

FIG. 6illustrates a block diagram of system600that can facilitate transferring workload among computing devices, in accordance with one or more embodiments. Repetitive description of like elements and/or processes employed in respective embodiments is omitted for sake of brevity.FIG. 6depicts computer executable components620coupled to storage component170. Computer executable components620are similar to computer executable components120ofFIG. 1, and includes utilization characteristic determining component124and historical workload analysis component630, and storage component170includes historical workload data650.

As noted withFIG. 1above, different utilization characteristics of a source data array can be analyzed to determine whether the array is operating of a period of time in an overutilized state. In one or more additional embodiments, to augment the analysis of utilization characteristics, historical workload analysis component630can analyze utilization characteristics based on collected historical workload data650for the source system and other similar systems.

FIG. 7illustrates an example flow diagram for a method700that can facilitate transferring workload among computing devices, in accordance with one or more embodiments. For purposes of brevity, description of like elements and/or processes employed in other embodiments is omitted.

At element702, method700can comprise assigning, by a system comprising a processor, determined utilization characteristics to respective ones of a group of linked network devices, with a first utilization characteristic of the determined utilization characteristics is assigned to a first network device and a second utilization characteristic of the determined utilization characteristics is assigned to a second network device of the group of linked network devices, and with the first network device handles a workload to provide a service to a client device served by the first network device. For example, in an embodiment, method700can assign, by first device182, comprising processor160, determined utilization characteristics to respective ones of a group of linked network devices, including third device array180C, with a first utilization characteristic of the determined utilization characteristics is assigned to second device array180B device and a second utilization characteristic of the determined utilization characteristics is assigned to third device array180C of the group of linked network devices, and with second device array180B handling a workload to provide a service to a client device192served by the first network device.

At element704, method700can comprise based on the first utilization characteristic, identifying, by the system, the first network device as a source network device, wherein the first utilization characteristic describes a magnitude of the workload. For example, in an embodiment, method700can based on the first utilization characteristic, identifying, by first device182, the second device array180B as a source network device, with the first utilization characteristic describing a magnitude of the workload.

At element706, method700can comprise mapping, by the system, a transfer of the workload to the second network device, with the second network device being selected as a destination device for the workload based on the second utilization characteristic and a stability characteristic of the second network device. For example, in one or more embodiments, method700can map, by first device182, a transfer of the workload to third device array180C, with third device array180C being selected as a destination device for the workload based on the second utilization characteristic and a stability characteristic of second device array180B.

FIG. 8is a flow diagram800representing example operations of an example system800comprising utilization characteristic determining component122, workload processing component124, and workload transfer mapping component126that can facilitate transferring workload among computing devices, in accordance with one or more embodiments. For purposes of brevity, description of like elements and/or processes employed in other embodiments is omitted.

Utilization characteristic determining component122can be configured802to assign determined utilization characteristics to respective ones of a group of linked network devices, with a first utilization characteristic of the determined utilization characteristics being assigned to a first network device and a second utilization characteristic of the determined utilization characteristics is assigned to a second network device of the group of linked network devices, and with the first network device handles a workload to provide a service to a client device served by the first network device.

Workload processing component124can be configured804to, based on the first utilization characteristic, identify the first network device as a source network device, with the first utilization characteristic describing a magnitude of the workload.

Workload transfer mapping component126can be configured804to, map a transfer of the workload to the second network device, with the second network device being selected as a destination device for the workload based on the second utilization characteristic and a stability characteristic of the second network device.

FIG. 9is a schematic block diagram of a system900with which the disclosed subject matter can interact. The system900comprises one or more remote component(s)910. The remote component(s)910can be hardware and/or software (e.g., threads, processes, computing devices). In some embodiments, remote component(s)910can be a distributed computer system, connected to a local automatic scaling component and/or programs that use the resources of a distributed computer system, via communication framework940. Communication framework940can comprise wired network devices, wireless network devices, mobile devices, wearable devices, radio access network devices, gateway devices, femtocell devices, servers, etc.

The system900also comprises one or more local component(s)920. The local component(s)920can be hardware and/or software (e.g., threads, processes, computing devices).

One possible communication between a remote component(s)910and a local component(s)920can be in the form of a data packet adapted to be transmitted between two or more computer processes. Another possible communication between a remote component(s)910and a local component(s)920can be in the form of circuit-switched data adapted to be transmitted between two or more computer processes in radio time slots. The system900comprises a communication framework940that can be employed to facilitate communications between the remote component(s)910and the local component(s)920, and can comprise an air interface, e.g., Uu interface of a UMTS network, via a long-term evolution (LTE) network, etc. Remote component(s)910can be operably connected to one or more remote data store(s)950, such as a hard drive, solid state drive, SIM card, device memory, etc., that can be employed to store information on the remote component(s)910side of communication framework940. Similarly, local component(s)920can be operably connected to one or more local data store(s)930, that can be employed to store information on the local component(s)920side of communication framework940.

In the subject specification, terms such as “store,” “storage,” “data store,” “data storage,” “database,” and substantially any other information storage component relevant to operation and functionality of a component, refer to “memory components,” or entities embodied in a “memory” or components comprising the memory. It is noted that the memory components described herein can be either volatile memory or non-volatile memory, or can comprise both volatile and non-volatile memory, for example, by way of illustration, and not limitation, volatile memory1020(see below), non-volatile memory1022(see below), disk storage1024(see below), and memory storage, e.g., local data store(s)930and remote data store(s)950, see below. Further, nonvolatile memory can be included in read only memory, programmable read only memory, electrically programmable read only memory, electrically erasable read only memory, or flash memory. Volatile memory can comprise random access memory, which acts as external cache memory. By way of illustration and not limitation, random access memory is available in many forms such as synchronous random access memory, dynamic random access memory, synchronous dynamic random access memory, double data rate synchronous dynamic random access memory, enhanced synchronous dynamic random access memory, SynchLink dynamic random access memory, and direct Rambus random access memory. Additionally, the disclosed memory components of systems or methods herein are intended to comprise, without being limited to comprising, these and any other suitable types of memory.

Referring now toFIG. 10, in order to provide additional context for various embodiments described herein,FIG. 10and the following discussion are intended to provide a brief, general description of a suitable computing environment1000in which the various embodiments described herein can be implemented. While the embodiments have been described above in the general context of computer-executable instructions that can run on one or more computers, those skilled in the art will recognize that the embodiments can be also implemented in combination with other program modules and/or as a combination of hardware and software. For purposes of brevity, description of like elements and/or processes employed in other embodiments is omitted.

Moreover, terms like “user equipment (UE),” “mobile station,” “mobile,” subscriber station,” “subscriber equipment,” “access terminal,” “terminal,” “handset,” and similar terminology, refer to a wireless device utilized by a subscriber or user of a wireless communication service to receive or convey data, control, voice, video, sound, gaming, or substantially any data-stream or signaling-stream. The foregoing terms are utilized interchangeably in the subject specification and related drawings. Likewise, the terms “network device,” “access point (AP),” “base station,” “NodeB,” “evolved Node B (eNodeB),” “home Node B (HNB),” “home access point (HAP),” “cell device,” “sector,” “cell,” and the like, are utilized interchangeably in the subject application, and refer to a wireless network component or appliance that can serve and receive data, control, voice, video, sound, gaming, or substantially any data-stream or signaling-stream to and from a set of subscriber stations or provider enabled devices. Data and signaling streams can include packetized or frame-based flows.

Aspects, features, or advantages of the subject matter can be exploited in substantially any, or any, wired, broadcast, wireless telecommunication, radio technology or network, or combinations thereof. Non-limiting examples of such technologies or networks include Geocast technology; broadcast technologies (e.g., sub-Hz, ELF, VLF, LF, MF, HF, VHF, UHF, SHF, THz broadcasts, etc.); Ethernet; X.25; powerline-type networking (e.g., PowerLine AV Ethernet, etc.); femto-cell technology; Wi-Fi; Worldwide Interoperability for Microwave Access (WiMAX); Enhanced General Packet Radio Service (Enhanced GPRS); Third Generation Partnership Project (3GPP or 3G) Long Term Evolution (LTE); 3GPP Universal Mobile Telecommunications System (UMTS) or 3GPP UMTS; Third Generation Partnership Project 2 (3GPP2) Ultra Mobile Broadband (UMB); High Speed Packet Access (HSPA); High Speed Downlink Packet Access (HSDPA); High Speed Uplink Packet Access (HSUPA); GSM Enhanced Data Rates for GSM Evolution (EDGE) Radio Access Network (RAN) or GERAN; UMTS Terrestrial Radio Access Network (UTRAN); or LTE Advanced.