SYSTEM AND METHOD FOR GENERATING PERSONALIZED EFFICIENCY RECOMMENDATIONS - Patent application
The system addresses the limitations of hardcoded recommendations by using user-defined personalization profile parameters to generate tailored resource device recommendations, improving user satisfaction and resource utilization.
Patent Information
- Application Number
- JP2024550224
- Authority / Receiving Office
- JP · JP
- Patent Type
- Applications
- Current Assignee / Owner
- Priority Date
- 2022-03-29
- Filing Date
- 2023-01-11
- Publication Date
- 2025-04-30
AI Technical Summary
Existing systems for providing resource device recommendations to users are limited by rule-based models that use hardcoded values, resulting in recommendations that do not cater to individual user needs, leading to reduced user experience and increased system resource utilization.
A system that generates personalized efficiency recommendations by receiving user-defined personalization profile parameters and utilizing these parameters to calculate representative usage of resource devices, thereby providing tailored recommendations that address specific user needs.
The system effectively reduces unnecessary recommendations, improves user satisfaction, and optimizes system resources by providing recommendations that are tailored to individual user needs, thereby enhancing resource utilization and cost efficiency.
Smart Images

Figure 2025513685000001_ABST
Abstract
Description
[Technical field]
[0001] Aspects of the present disclosure relate to systems and methods for generating personalized efficiency recommendations. [Background technology]
[0002] A provider organization, such as a cloud service provider, may provide various services to users by making available to the users various resource devices hosted by the provider organization. For example, such a provider organization may provide computational services, database services, disk services, storage services, etc., by exposing various resource devices to users, and may monetize such services based on the type and / or utilization of the various resource devices by the users.
[0003] Some provider organizations may provide recommendations for users to improve the utilization of such resource devices. Typically, such recommendations may be based on rule-based models that use hard-coded values. However, such recommendations may not be adapted to the needs of different users and customers.
[0004] It is with respect to these and other general considerations that the aspects disclosed herein have been made. Moreover, although relatively specific problems may be discussed, it should be understood that the embodiments are not limited to solving the specific problems identified in the Background and elsewhere in this disclosure. Summary of the Invention
[0005] One or more embodiments of the present disclosure relate to systems and methods for generating personalized efficiency recommendations, and more particularly, for identifying and recommending appropriate resource devices based on user-defined personalization profile parameters and usage data.
[0006] According to one or more embodiments of the present disclosure, a system includes a processor and a memory, the memory including instructions that, when executed by the processor, cause the processor to receive personalization profile parameters from a user of an associated resource device, calculate a representative usage of the associated resource device based on the personalization profile parameters, and generate recommendations based on the representative usage and the personalization profile parameters.
[0007] This summary section is provided to introduce in a simplified form a selection of concepts that are further described below in the detailed description. This summary section is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter. Additional aspects, features, and / or advantages of the embodiments will be set forth in part in the description that follows, and in part will be obvious from the description, or may be learned by practice of the disclosure.
[0008] The above and other aspects and features of the present disclosure will be more clearly understood from the following detailed description of illustrative embodiments, taken in conjunction with the accompanying drawings. [Brief description of the drawings]
[0009] [Figure 1] FIG. 1 is a system diagram illustrating a provider system according to one or more embodiments of the present disclosure. [Diagram 2]FIG. 1 is a block diagram illustrating a recommendation service according to one or more embodiments of the present disclosure. [Diagram 3] FIG. 1 is a flow diagram illustrating a method for providing personalized recommendations according to one or more embodiments of the present disclosure. [Figure 4] 1 is a schematic diagram illustrating personalization profile parameters according to one or more embodiments of the present disclosure. [Figure 5A] FIG. 11 is a table illustrating representative utilization calculated based on personalization profile parameters in accordance with one or more embodiments of the present disclosure. [Figure 5B] FIG. 5B shows a table illustrating representative utilization determined based on hard-coded values, as a comparative example to FIG. 5A. [Figure 6] 1 is a diagram illustrating encoded features of a recommendation data structure in accordance with one or more embodiments of the present disclosure. [Figure 7A] FIG. 1 is a flow diagram illustrating a method for generating personalized recommendations according to one or more embodiments of the present disclosure. [Figure 7B] FIG. 1 is a flow diagram illustrating a method for generating personalized recommendations according to one or more embodiments of the present disclosure. [Figure 8A] 7A-7B are diagrams illustrating various processes of the method of FIG. [Figure 8B] 7A-7B are diagrams illustrating various processes of the method of FIG. [Figure 8C] 7A-7B are diagrams illustrating various processes of the method of FIG. [Figure 8D] 7A-7B are diagrams illustrating various processes of the method of FIG. [Figure 8E] 7A-7B are diagrams illustrating various processes of the method of FIG. [Figure 9A]FIG. 11 is a table illustrating recommendations generated based on received personalized profile parameters in accordance with one or more embodiments of the present disclosure. [Figure 9B] FIG. 13 is a table illustrating, by way of comparison, recommendations generated based on hard-coded values. [Figure 10A] FIG. 1 illustrates a schematic graphical user interface in accordance with one or more embodiments of the present disclosure. [Figure 10B] FIG. 1 illustrates a schematic graphical user interface in accordance with one or more embodiments of the present disclosure. [Figure 11] FIG. 1 is a block diagram illustrating example physical components of a computing device in accordance with one or more embodiments of the present disclosure. [Figure 12A] FIG. 1 is a simplified block diagram of an exemplary mobile computing device in accordance with one or more embodiments of the present disclosure. [Figure 12B] FIG. 1 is a simplified block diagram of an exemplary mobile computing device in accordance with one or more embodiments of the present disclosure. [Figure 13] FIG. 1 is a simplified block diagram of an exemplary distributed computing system in accordance with one or more embodiments of the present disclosure. [Figure 14] A diagram illustrating an exemplary tablet computing device for implementing one or more aspects of one or more embodiments of the present disclosure. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0010] Some provider systems may generate various recommendations based on resource device utilization data, allowing users to identify if a resource device is underutilized, and allow users to gracefully shut down, reconfigure, replace, or otherwise operate the resource device based on the recommendations. A resource device, as used herein, refers to a device or architecture that provides an operating environment for performing computing functions, such as receiving, processing, and providing data and related information. Examples of resource devices include server devices, virtual machine devices, personal computers (PCs), mobile devices, and Internet of Things (IoT) devices. However, such recommendations are typically generated based on rule-based models that use the same hard-coded values that are fixed globally regardless of user priorities, effectively implying that all users have the same needs. However, users may have different needs that may not be addressed by such recommendations.
[0011] For example, some users may value system stability more, while other users may value cost savings and / or increased utilization. As another example, some users may value monetary cost savings more, while other users may value carbon emission cost reduction more. However, if recommendations are generated based on rule-based models and hard-coded values, all the same recommendations are generated and provided to users regardless of the recommendations the users want to receive. Thus, such recommendations may degrade the user experience and increase system resources used to generate all the recommendations for each user.
[0012] Moreover, such recommendations generated based on hard-coded values may be fixed, and their logic becomes linearly more complex as new constraints and features are added. For example, if recommendations are generated based on hard-coded values for users with the same telemetry data but different profiles, the recommendations may be the same regardless of the different profiles. Thus, while recommendations generated based on rule-based models and hard-coded values may be aimed at reducing unnecessary spending, such recommendations may not be suitable for users with different goals in mind.
[0013] According to an embodiment of the present disclosure, the provider system generates one or more personalized recommendations based on the received personalized profile parameters to address various user needs, and these personalized profile parameters are used as inputs to one or more recommendation models to generate the one or more personalized recommendations.
[0014] As used herein, personalization profile parameters refer to values and / or options used to configure the operational performance of a resource device. Examples of personalization profile parameters include data aggregation parameters, performance percentile parameters, recommendation type / category parameters, and recommendation threshold parameters.
[0015] According to an embodiment, by parameterizing the personalized profile parameters, the user can define which of various recommendations to generate. For example, the personalized profile parameters may include various recommendation priority parameters, and the user may select one or more of the recommendation priority parameters to specify the personalized recommendations that the user wants to receive. Thus, rather than generating and providing all possible recommendations to all users, the user may select the desired recommendations that he or she wants to receive, thereby effectively "turning off" the generation of undesired recommendations. Thus, the provider system's resources are freed up from generating unnecessary recommendations.
[0016] For example, if a user cannot define which recommendations should be generated, the provider system generates all of the recommendations for all of the users, and these recommendations are typically generated sequentially. However, according to an embodiment, the user can effectively "turn off" undesired recommendations, so that the provider system can selectively generate only those recommendations selected by the user. Furthermore, in some embodiments, if a user selects multiple recommendations, the selected recommendations are generated simultaneously with each other. Thus, latency can be reduced and recommendations can be generated more quickly and efficiently.
[0017] According to an embodiment, the personalized profile parameters may also enable the user to define limitations on how selected recommendations are generated by the provider system. For example, the user may select or define various values for parameters that define how usage data of the associated resource devices is generated, parameters that define how representative usage of the associated resource devices is calculated or determined from the generated usage data, and parameters that define threshold limits for the selected recommendations generated by the provider system. Thus, even if the same telemetry data is used for different users with different profiles, personalized recommendations address different needs of the users based on the personalization profile parameters provided by the users.
[0018] According to an embodiment, the inter-series recommendation (e.g., right-sized recommendation) may be generated based on a machine learning model rather than using a brute-force search method. The machine learning model may be used to scrutinize (e.g., narrow down) the field of potential candidate devices that may be considered as potential replacement devices for the associated resource device (e.g., the current resource device). Thus, even if the number of potential candidate devices increases, the search for right-sized replacement devices that can be used instead of the associated resource device may be improved. For example, in some embodiments, the provider system uses a KNN (K Nearest Neighbor) model to provide the right-sized recommendation. Thus, rather than having to compare the capacity of each potential candidate device with the desired capacity using a brute-force search method, only a set (e.g., a subset) of potential candidate devices whose capacity is closest to the desired capacity are further considered as potential replacement devices for the associated resource device.
[0019] These and other aspects and features of the present disclosure are described in more detail below with reference to the drawings.
[0020] FIG. 1 is a system diagram illustrating a provider system in accordance with one or more embodiments of the present disclosure.
[0021] Referring to FIG. 1, a provider system 102 is communicatively connected to user devices 104 via a network 106. For example, the provider system 102 may be a cloud service provider system. The provider system 102 includes various resource devices 108 that may be accessible and configurable by a user (e.g., a customer or consumer) and may utilize various resource units and services (e.g., computational services, database services, disk services, storage services) provided via one or more of the resource devices 108. A resource unit as used herein refers to different types of products or services and corresponding attributes of the products or services (e.g., manufacturer, model, description, size, packaging, materials). Examples of resource units include stock keeping units (SKUs) and other unique identifiers or codes such as bar codes and universal product codes (UPCs). For example, the resource devices 108 may include various resource units, computational devices (e.g., general purpose processors, central processing units, and graphics processing units), server components, database components, disk devices, storage devices (e.g., solid state drives and hard disk drives), and the like. As will be appreciated, the provider system 102 may include any suitable system that hosts one or more suitable resource devices 108 that may be allocated to and / or utilized by users.
[0022] A user may operate the user device 104 to access and / or configure one or more of the resource devices 108 as needed or desired. For example, the user device 104 may include any suitable computing device that may be communicatively connected to the provider system 102 via the network 106, such as a desktop computer, a laptop, a tablet, a smartphone, a mobile phone, etc.
[0023] The network 106 may be configured to enable the exchange of data, values, instructions, messages, etc. between the provider system 102 and the user device 104. For example, in various embodiments, the network 106 includes any suitable wired or wireless network (e.g., a local area network (LAN), a wide area network (WAN), the Internet, and a cellular communications network).
[0024] The provider system 102 may monitor utilization of the resource devices 108 and determine costs associated with using the resource devices 108. For example, because different resource devices 108 may have different costs (e.g., monetary costs, carbon emission costs, and processing time costs) associated with the operation and maintenance of such resource devices 108, the provider system 102 may retain various telemetry data for each of the resource devices 108 to calculate costs associated with each of the resource devices 108. The provider system 102 may include a utilization data store 110 for storing the telemetry data. For example, in some embodiments, the telemetry data is sampled / collected at predefined time intervals (e.g., every 30 seconds or every minute) or upon the occurrence of a predefined event. The provider system 102 may use the telemetry data to calculate costs associated with a related (e.g., current) resource device (or devices) 108 being used by or assigned to a particular user. The telemetry data sampled may depend on the type or variety of resource device 108, but some examples of telemetry data that may be collected and / or maintained include CPU utilization, memory utilization, network traffic, disk space, etc.
[0025] 1, the provider system 102 may further include a recommendation service 112 and a personalization profile data store 114. The recommendation service 112 may generate and provide various personalized recommendations to users of the resource devices 108 based on the personalization profile parameters received from the users. The personalized recommendations may enable users to determine whether to modify their utilization of the resource devices 108 as needed or desired, such as to reduce unnecessary spending, consumption, and / or carbon emissions or to increase utilization of the associated resource devices 108.
[0026] For example, as described in more detail below, a user may operate the user device 104 to provide various personalization profile parameters (e.g., see FIG. 4) to the recommendation service 112, which may be stored in a personalization profile data store 114. The personalization profile parameters are used as inputs to generate one or more personalized recommendations.
[0027] For example, the personalization profile parameters may define how telemetry data corresponding to the associated resource devices 108 is aggregated to generate usage data for the associated resource devices 108, an appropriate representative usage of the associated resource devices 108 is calculated from the usage data, and personalized recommendations requested by a user are generated based on the representative usage of the associated resource devices 108. As used herein, a representative usage of a resource device refers to a value that represents an amount or percentage of operational usage of a resource device that is required to achieve a user-specified performance goal given the usage data generated for the resource device. Examples of representative usage include CPU usage, memory usage, and storage usage.
[0028] The personalized recommendations may include suitable recommendations to enable a particular user to identify and / or modify one or more under- or over-utilized resource devices 108 used by and / or assigned to a particular consumer. Such personalized recommendations may include, for example, a shutdown recommendation, a right-size recommendation, a burstable recommendation, etc. A shutdown recommendation is, for example, a recommendation to shut down an associated resource device 108 or put the resource device 108 into a low power / sleep state if the associated resource device 108 has not been used for a predefined period (e.g., seven days). A right-size recommendation is a recommendation to identify and / or use a more suitable resource device that may be used in place of (e.g., replace) the associated resource device 108. A burstable recommendation is, for example, a recommendation to change the size or capacity of an associated resource device 108 (e.g., if the associated resource device 108 has such capability) based on varying workload performance expectations for the associated resource device 108.
[0029] FIG. 2 is a block diagram illustrating a recommendation service according to one or more embodiments of the present disclosure.
[0030] In brief overview, the recommendation service 112 may receive personalization profile parameters from a user of an associated resource device (e.g., a current resource device) 108 and encode the personalization profile parameters as categorical features in one or more recommendation models to generate one or more personalized recommendations associated with the associated resource device 108. In some embodiments, the recommendation service 112 presents personalized recommendations (e.g., via a graphical user interface) in real time (or near real time), for example, when a user issues or modifies (e.g., in a graphical user interface) the value of a personalization profile parameter. In other embodiments, the recommendation service 112 may store the personalization profile parameters in a personalization profile data store 114 for later retrieval and send a notification to the user when one or more personalized recommendations become available.
[0031] For example, in some embodiments, the recommendation service 112 receives personalization profile parameters (e.g., via a graphical user interface) from a user (e.g., via the user device 104) and, in response, receives personalization profile parameters. In some embodiments, the recommendation service 112 generates usage data by aggregating telemetry data of associated resource devices 108 based on the received personalization profile parameters, which may be stored in the usage data store 110. In some embodiments, the recommendation service 112 calculates an appropriate representative usage of the associated resource devices 108 based on the usage data and the received personalization profile parameters. In some embodiments, the recommendation service 112 generates one or more personalized recommendations based on the calculated representative usage for the associated resource devices 108 and the received personalization profile parameters.
[0032] More specifically, with reference to FIG. 2, the recommendation service 112 includes a communication interface 202 for communicating with the user device 104. For example, in some embodiments, the recommendation service 112 may provide a graphical user interface (e.g., see FIG. 10A) to the user device 104 via the communication interface 202 to receive personalization profile parameters and provide one or more personalized recommendations to the user device 104 via the graphical user interface (e.g., see FIG. 10B). The communication interface 202 may be or include a wired or wireless communication interface (e.g., a jack, an antenna, a transmitter, a receiver, a transceiver, a wired terminal, etc.) for data communication with the user device 104. Communication via the interface 202 may be direct (e.g., local wired or wireless communication) or via the network 106.
[0033] For example, the interface 202 may include a Wi-Fi transceiver for communicating over a wireless communication network. In another example, the interface 202 includes an Ethernet card and port for transmitting and receiving data over an Ethernet-based communication link or network. In another example, the interface 202 includes a cellular or mobile phone communication transceiver. In various embodiments, the interface 202 supports various protocols (e.g., TCP / IP, User Datagram Protocol UDP, Hypertext Transfer Protocol HTTP, Internet Message Access Protocol IMAP, Simple Mail Transfer Protocol SMTP, etc.) and / or data communication interfaces (e.g., Application Program Interface API, Web Services, etc.) to facilitate data communication with the user device 104.
[0034] The recommendation service 112 may include one or more processing circuits 204 including one or more processors 206 and memory 208. The processing circuit 204 may be communicatively coupled to a communication interface 202, and the processing circuit 204 and its various components may transmit and receive data via the communication interface 202. The processor 206 may be implemented using a general-purpose processor, an application specific integrated circuit (ASIC), one or more field programmable gate arrays (FPGAs), a digital signal processor (DSP), a group of processing components, or other suitable electronic processing components. The processing circuit 204 and the processor 206 may be housed in a single geographic location or device, or may be distributed across various geographic locations or devices.
[0035] The memory 208 (e.g., one or more memory devices, storage devices, and / or memory units) may include tangible non-transitory volatile or non-volatile memory, such as random access memory (RAM), read only memory (ROM), non-volatile RAM (NVRAM), flash memory, hard disk storage, cloud storage, and / or other suitable electronic storage devices. The memory 208 may be communicatively connected to the processor 206 via the processing circuitry 204 and includes data and / or computer code for facilitating (e.g., by the processing circuitry 204 and / or the processor 206) at least a portion of the various processes described herein. For example, the memory 208 may include database components, object code components, script components, and / or any other type of information structure for supporting the various activities and information structures described in the present application. The memory 208 stores instructions or programming logic that, when executed by the processor 206, control the operation of the recommendation service 112.
[0036] In some embodiments, the memory 208 may include a profile parameterizer 210, a data aggregator 212, a utilization calculator 214, a recommendation selector 216, and multiple recommendation generators 218, 220, and 222. Each of the profile parameterizer 210, the data aggregator 212, the utilization calculator 214, the recommendation selector 216, and multiple recommendation generators 218, 220, and 222 may be included in the same memory 208 and executed by the same processor 206 or processing circuitry 204, or may be distributed across different memories 208 on various geographic locations or devices and executed by multiple different processors 206 or processing circuitry 204. The recommendation generators 218, 220, and 222 may include one or more suitable recommendation generators for generating appropriate personalized recommendations. As shown in FIG. 2, recommendation generators 218, 220, and 222 may include, for example, a shutdown recommendation generator 218 for generating shutdown recommendations, a right-size recommendation generator 220 for generating right-size recommendations, and a burstable recommendation generator 222 for generating burstable recommendations.
[0037] As described in more detail below, the profile parameterizer 210 may receive personalization profile parameters from a user of an associated resource device 108 and store the personalization profile parameters in the personalization profile data store 114. For example, as illustrated in FIG. 4, the personalization profile parameters may include a data aggregation parameter 402, a percentile parameter 404, a threshold parameter 406, and a recommendation priority parameter 408. The data aggregator 212 may generate utilization data for the associated resource device 108, for example, by aggregating telemetry data for the associated resource device 108 based on the data aggregation parameter 402. The utilization calculator 214 may calculate an appropriate representative utilization of the associated resource device 108 based on the utilization data and the percentile parameter 404. The recommendation selector 216 may generate a recommendation data structure based on the representative utilization, the threshold parameter 406, and the recommendation priority parameter 408. A recommendation data structure, as used herein, refers to a data management and storage format in which recommendation information related to resource devices and / or resource units is or can be entered. Examples of recommendation data structures include data frames, tables, arrays, lists, hashes, graphs, and trees (e.g., binary trees, multi-way trees, heaps). The recommendation selector 216 may also select / invoke an appropriate one or more of the recommendation generators 218, 220, and 222 to generate personalized recommendations for the associated resource devices 108 based on the recommendation data structure.
[0038] FIG. 3 is a flow diagram illustrating a method for providing personalized recommendations according to one or more embodiments of the present disclosure.
[0039] Although some exemplary representative operations of method 300 are described in more detail below, the present disclosure is not limited to the order or number of operations of method 300 illustrated in FIG. 3 and may be altered to any desired order or number of operations recognized by one of ordinary skill in the art. For example, the order may be changed or method 300 may include fewer or additional operations. Furthermore, the operations illustrated in method 300 may be performed by any suitable one or any suitable combination of components of one or more exemplary embodiments described above, and thus are not limited to the examples described below.
[0040] 3, in brief overview, method 300 begins with personalization profile parameters being received at block 305. Usage data for associated resource devices 108 are generated at block 310, and representative usage of associated resource devices 108 is calculated (or determined) at block 315. A recommendation data structure is generated at block 320, and one or more recommendation generators are selected at block 325. One or more personalized recommendations are generated at block 330, and the generated personalized recommendations are provided to the user at block 335 (see, e.g., FIG. 10B), whereupon method 300 ends.
[0041] FIG. 4 is a diagram illustrating personalization profile parameters in accordance with one or more embodiments of the present disclosure.
[0042] Referring to FIG. 4, in some embodiments, to receive the personalization profile parameters at block 305 (see, e.g., FIG. 3), the recommendation service 112 (e.g., profile parameterizer 210 of FIG. 2) presents various options 400 (e.g., via a graphical user interface) to the user (e.g., via user device 104 of FIG. 2) to allow the user to provide values for the personalization profile parameters. The options 400 may be presented via a selection menu (as illustrated in FIG. 4) or a free-form range (as illustrated in FIG. 10A). Thus, instead of generating recommendations using fixed values, the options 400 allow the user to select preferred values for the personalization profile parameters based on their needs.
[0043] Options 400 may enable a user to input any suitable parameters used by recommendation service 112 to generate one or more personalized recommendations. For example, as illustrated in FIG. 4, options 400 may request a user to provide preferred values for a data aggregation parameter 402, a percentile parameter 404, a threshold parameter 406, and / or a recommendation priority parameter 408.
[0044] The data aggregation parameters 402 may allow a user to specify how telemetry data of associated resource devices 108 is aggregated to generate usage data used to generate one or more personalized recommendations. For example, as discussed above, telemetry data may be sampled at predetermined time intervals (e.g., every 30 seconds, every minute, etc.). However, such sampling granularity may not be necessary to generate recommendations and may introduce or increase latency. Thus, the aggregation parameters 402 may allow a user to impose limitations on how telemetry data is aggregated to generate one or more personalized recommendations. The limitations may include, for example, a length or range of time, an average utilization rate over a period of time, a maximum utilization rate over a period of time, etc.
[0045] For example, values of aggregation parameters 402 that may be provided or defined by a user may include average / average (Avg / Avg), average / maximum (Avg / Max), and maximum / maximum (Max / Max). In other embodiments, other values or other formats of values may be provided (see, for example, FIG. 10A). In an embodiment, an average / average (Avg / Avg) value corresponds to an average utilization rate aggregated over a period of time, where the average utilization rates within the appropriate time range are aggregated again to define an average of the average utilization rates. An average / maximum (Avg / Max) value corresponds to an average utilization rate aggregated over a period of time, where the average utilization rates within the appropriate time range are aggregated again to define a maximum value of the average utilization rates. A maximum / maximum (Max / Max) value corresponds to a maximum utilization rate aggregated over a period of time, where the maximum utilization rates within the appropriate time range are aggregated again to define a maximum value of the maximum utilization rates. Thus, in this example, a conservative user primarily concerned with system stability might select the Max / Max value, while an aggressive user primarily concerned with cost reduction might select the Avg / Avg value.
[0046] The percentile parameters 404 allow a user to specify a percentage of usage data that may be used to calculate representative usage. For example, when usage data for associated resource devices 108 is generated, the utilization may be sorted (e.g., according to value). In this case, the percentile parameters 404 define a percentile (e.g., top percentile, bottom percentile, etc.) of the usage data that is used to calculate representative usage.
[0047] Thus, for example, a conservative user may select a higher percentile value, such as the 99th percentile (P99), and a higher percentile of the usage data may be considered as representative usage, while an aggressive user may select a lower percentile value, such as the 90th percentile (P90), and a lower percentile of the usage data may be considered as representative usage.
[0048] The threshold parameters 406 allow a user to specify a threshold utilization limit to be imposed when generating one or more personalized recommendations. For example, in the case of a shutdown recommendation, the threshold parameters 406 may allow a user to set a utilization limit for when proposing a shutdown of the associated resource device 108. As another example, in the case of a burstable recommendation, the threshold parameters 406 may allow a user to set a utilization limit for when proposing a burstable recommendation of the associated resource device 108. As another example, as discussed in more detail below with reference to FIG. 7B, in the case of a right-sized recommendation, the threshold parameters 406 may allow a user to set a threshold limit on the capacity or capabilities of potential candidate devices to determine whether at least one of the potential candidate devices is a sufficient replacement for the associated resource device 108. Thus, for example, a conservative user may select a lower threshold (e.g., 60%), while an aggressive user may select a higher threshold (e.g., 90%).
[0049] The recommendation priority parameter 408 allows the user to specify one or more of the recommendations that the user wants to receive. Thus, instead of generating all recommendations and presenting each of the generated recommendations to each of the users in a predefined order, which may waste resources and may not address different needs of different users, the recommendation service 112 generates only one or more recommendations specified by the user. For example, a user running a low usage generating service on a resource device 108 that needs to keep running for an infrequent event may receive constant shutdown recommendations. However, since the resource device 108 may not be shut down, the user may prefer to receive right-sized recommendations instead of shutdown recommendations. In this scenario, the user may select only the right-size recommendation option (or may deselect the shutdown recommendation option), and while right-size recommendations are generated and provided to the user, shutdown recommendations are effectively "turned off" (e.g., not generated and / or provided to the customer). Thus, by preventing the generation of unnecessary recommendations, user satisfaction may be improved and system resources may be reduced.
[0050] Further, in some embodiments, the selected recommendation(s) may be generated in parallel with each other, thus reducing the time to generate the one or more personalized recommendations. For example, recommendations may be generated continuously (e.g., in a waterfall fashion), instead of providing all recommendations to each of the users, the users may specify their preferred recommendations, so that only selected recommendation generators are invoked to generate the recommendations, and the selected recommendation generators may generate the recommendations concurrently with each other.
[0051] A recommendation generator that is not selected (or deselected) is effectively turned off, and corresponding recommendations are not generated by the "turned off" recommendation generator. Thus, a selected recommendation generator may generate a corresponding recommendation, but a recommendation generator that is not selected (or deselected) may not generate a corresponding recommendation.
[0052] Thus, in some embodiments, the user selects which recommendations should be generated (e.g., according to selected recommendation priority parameters 408), whereby unselected recommendations are not generated. In some embodiments, if the user selects multiple recommendations to be generated, the selected recommendations may be generated contemporaneously (e.g., simultaneously) with one another. In some embodiments, at least some of the selected recommendations are generated consecutively with one another.
[0053] 5A is a table illustrating exemplary usage calculated based on received personalization profile parameters and, by way of comparison, based on hard-coded values, in accordance with one or more embodiments of the present disclosure.
[0054] In some embodiments, the recommendation service 112 (e.g., data aggregator 212) generates usage data for the associated resource device 108 (e.g., at block 310 of FIG. 3 ) by aggregating and sorting the telemetry data stored in the usage data store 110 based on the data aggregation parameters 402 defined by the user. The recommendation service 112 (e.g., usage calculator 214) calculates (or determines) a representative usage for the associated resource device 108 (e.g., at block 315 of FIG. 3 ) based on the usage data and the percentile parameters 404 defined by the user. The representative usage is used to generate one or more personalized recommendations. Thus, unlike recommendations generated based on rule-based models and hard-coded values, which may result in the same representative usage regardless of the user's different needs, the representative usage calculated by the usage calculator 214 is tailored to the user's needs according to the personalization profile parameters defined by the user.
[0055] For example, Figure 5A illustrates a table 500 in which representative usage 502 is generated for four users (e.g., customers 1 through 4) with different recommendation profiles (e.g., from very conservative to very aggressive) based on received personalization profile parameters 402, 404, and 406 and usage data 504 in accordance with an embodiment of the present disclosure. Figure 5B illustrates, as a comparative example, a table 550 in which representative usage 552 is generated for four users (e.g., customers 1 through 4) with different recommendation profiles (e.g., from very conservative to very aggressive) based on hard-coded values 554 and usage data 556.
[0056] For comparison, the usage data 504 generated for each of the four users is identical to one another. In practice, it should be understood that the usage data 504 and 556 for each of the four users (e.g., customers 1 through 4) may be different.
[0057] As illustrated in FIG. 5A, once the representative usage 502 is generated based on the received personalization profile parameters 402, 404, and 406, a different representative usage 502 may be calculated (or determined) for each different user having a different recommendation profile even if the usage data 504 is the same. For example, for a very conservative user (e.g., Customer 1), the representative usage 502 may be calculated from the CPU / Max / Max usage data 504 based on the Max / Max data aggregation parameter 402 and the percentile parameter 404 received from the user. In this case, the representative CPU usage 502 may be 90% due to the 99th percentile (P99) of the CPU / Max / Max usage data 504 as illustrated in FIG. 5A. As another example, for an active user (e.g., Customer 3), a representative usage 502 may be calculated from the CPU / Avg / Max usage data 504 based on the Avg / Max data aggregation parameters 402 and percentile parameters 404 received from the user. In this case, as illustrated in FIG. 5A, the 90th percentile (P90) of the CPU / Ave / Max usage data 504 may be a representative CPU usage 502 of 59%. Thus, as discussed in more detail below with reference to FIG. 9A, if the representative usage 502 is generated based on personalization profile parameters, the resulting recommendations may be tailored according to the needs of the user.
[0058] In comparison, as illustrated in FIG. 5B, if the representative usage 552 is generated based on hard-coded values 554, the same representative usage 552 is calculated for different users, regardless of the user's needs. For example, if the data aggregation parameters are hard-coded (e.g., to Avg / Max) and the percentile parameters are hard-coded (e.g., to P95), the resulting representative CPU usage 552 is the same (e.g., 60%), regardless of the different needs of different users (e.g., customers 1 to 4). Thus, as discussed in more detail below with reference to FIG. 9B, if the representative usage 552 is generated based on hard-coded values 554, the resulting recommendations are the same, regardless of the user's needs.
[0059] For comparison, the same usage data 510 and 556 for each of the data aggregation parameters 402 for each of four users (e.g., customers 1 through 4) are illustrated in Figures 5A and 5B. In an embodiment, the telemetry data of the associated resource devices 108 may be aggregated based on the data aggregation parameters 402 defined by the user, so that the recommendation service 112 (e.g., data aggregator 212) may not generate usage data 504 for other data aggregation parameters 402 not selected by the user, or may only retrieve usage data 504 (e.g., stored in usage data store 110) for the associated resource devices 108 based on the selected data aggregation parameters 402.
[0060] FIG. 6 illustrates encoded features of a recommendation data structure in accordance with one or more embodiments of the present disclosure.
[0061] In some embodiments, the recommendation data structure is generated by the recommendation service 112 (e.g., by the recommendation selector 216 at block 320 of FIG. 3), which selects or invokes (e.g., at block 325 of FIG. 3) one or more of the recommendation generators 218, 220, and 222 (e.g., based on the recommendation priority parameter 408 of FIG. 4) to generate one or more personalized recommendations based on the recommendation data structure. For example, the recommendation data structure may be a data frame that includes the representative usage 502, the user-defined threshold parameter 406, and the user-defined recommendation priority parameter 408. The recommendation data structure may be compiled by the recommendation service 112 (eg, recommendation selector 216 ) to filter (eg, select / invoke) and prioritize the recommendations generated by the recommendation generators 218 , 220 , and 222 .
[0062] For example, as illustrated in FIG. 6, the recommendation service 112 (e.g., recommendation selector 216) may encode the values of recommendation priority parameters 408 selected by a user into a set of binary features representing the needs of the user. For example, each of the recommendation priority parameters 408 may be encoded as a binary variable 602 in a recommendation data structure and transformed with edges according to equation (1) to determine whether a user receives a particular recommendation. In equation (1), E represents a set of edges representing the user's preferred recommendations, df represents a data structure containing all users and the binary encodings, and c i represents the i-th user, and r jrepresents the jth recommendation. In this example, if the binary representation of a particular recommendation priority is equal to 1, then the particular recommendation is generated, otherwise the particular recommendation is not generated.
[0063] The recommendation data structure is then used to invoke one or more appropriate recommendation generators 218, 220, and 222 to generate personalized recommendations selected by the user.
[0064] As discussed in more detail below with reference to Figures 7A and 7B, the selected recommendation generators 218, 220, and 222 use the calculated representative usage 502 and threshold parameters 406 that may be defined by the user and encoded into the recommendation data structure to generate respective recommendations (e.g., at block 330 of Figure 3), and the generated personalized recommendations are provided to the user (e.g., at block 335 of Figure 3) (see, e.g., Figure 10B).
[0065] 7A-7B are flow diagrams illustrating a method for generating personalized recommendations according to one or more embodiments of the present disclosure. In some embodiments, the method 700 illustrated in FIG. 7A is performed by one or more of the selected recommendation generators 218, 220, and 222 to generate one or more personalized recommendations at block 330 of the method 300. For ease of illustration and explanation, the method 700 in FIG. 7A-7B illustrates a method for generating right-sized recommendations.
[0066] Shutdown and burstable recommendations may similarly be generated according to personalized profile parameters (eg, according to calculated representative utilization 502 and user-defined threshold parameters 406).
[0067] Although some exemplary representative operations of method 700 are described in more detail below, the present disclosure is not limited to the order or number of operations of method 700 illustrated in Figures 7A and 7B and may be altered to any desired order or number of operations as will be recognized by one of ordinary skill in the art. For example, the order may be changed or method 700 may include fewer or additional operations. Furthermore, the operations illustrated in method 700 are not limited to the examples described below, as they may be performed by any suitable component or any suitable combination of components of the exemplary embodiments described above.
[0068] In some embodiments, right-sized recommendations are provided to allow a user to identify a replacement resource device from among multiple potential candidate devices for the associated resource device 108. In some embodiments, right-sized recommendations are generated by considering an increase in the number of potential candidate devices available to a user to replace the associated resource device 108 while reducing the complexity of the search space. For example, there may typically be six potential candidate devices in a series. A series as used herein refers to a category of resource units, services, resource devices, or combinations thereof. In an example, each series may be configured to be implemented in a particular execution environment. As a specific example, an A-series SKU for a virtual machine (VM) may be configured to run on a first set of hardware and processor configurations (e.g., representing a high performance environment), and a B-series SKU for a VM may be configured to run on a second set of hardware and processor configurations (e.g., representing a medium to low performance environment).
[0069] If potential candidate devices across multiple series (e.g., across series) are further considered, the number of potential candidate devices may increase significantly (e.g., 3x, 6x, 10x, etc.), which may increase the likelihood of finding a suitable resource device 108 among potential candidate devices that are more suitable and provide greater cost savings (e.g., monetary cost savings, carbon emission cost savings, etc.) compared to the related resource device 108. Thus, when using fixed rules and brute force search methods to generate right-sized recommendations, an increase in the number of potential candidate devices may linearly increase the complexity of the search, and thus each of the potential devices that may need to be considered individually may also increase.
[0070] According to one or more embodiments of the present disclosure, rather than considering each potential candidate device individually to identify a match using a brute force search, a machine learning model may be used to identify a suitable resource device from among a set (e.g., a subset) of closest potential candidate devices that may be more compatible with the user's needs when compared to the associated resource device 108. For example, the right-size recommendation generator 220 may use a KNN (e.g., K-nearest neighbor) model to effectively organize the search space while identifying a suitable resource device 108 (e.g., host the user's virtual machine) based on the user's needs. Thus, rather than considering each potential device individually to see if it is more compatible, the right-size recommendation generator 220 considers a set (e.g., a subset) of closest potential candidate devices that have a similar workload profile as the desired resource device (e.g., a virtual resource device).
[0071] For example, with reference to FIG. 7A, method 700 begins, as discussed in more detail below, and a decision space is generated at block 705. The decision space is modified according to personalized thresholds at block 710, and workload profiles of desired resource devices (e.g., virtual resource devices) are added to the decision space at block 715. Potential candidate devices are searched and ranked at block 720, and the top ranked potential candidate devices are filtered at block 725. Recommendations are generated at block 730, and the recommendations are provided to a user (e.g., via a graphical user interface) at block 335 of FIG. 3.
[0072] As will be discussed in more detail below, with reference to FIG. 7B, in block 725 of method 700, one or more constraints are identified in block 740 to filter the top ranked potential candidate devices, and in block 745, the adjusted ranked candidate devices are compared to the identified constraints. In block 750, it is determined whether the currently considered candidate device satisfies the identified constraints, and if so ("Yes" in block 750), the currently considered candidate device is recommended in block 755. On the other hand, if the currently considered candidate device does not satisfy the identified constraints ("No" in block 750), a determination is made in block 760 as to whether there are more adjusted ranked candidate devices to be compared to the identified constraints. If it is determined that there are more candidate devices ("Yes" in block 760), in block 745, the other adjusted ranked candidate devices are compared to the identified constraints. If no more candidate devices are determined to exist ("No" at block 760), then no right-sized recommendation is generated at block 765. If suitable candidate devices are identified at block 755 or no right-sized recommendation is generated at block 765, then the method at block 725 ends and a recommendation is generated at block 730 illustrated in FIG. 7A (e.g., a recommended candidate device at block 755 or no right-sized recommendation at block 765), and the recommendation is provided to a user (e.g., via a graphical user interface) at block 335 of FIG.
[0073] 8A-8E illustrate various processes of the method 700 of FIGS. 7A-7B.
[0074] 8A, to initialize the decision space in block 705 of FIG. 7A, a set of potential candidate devices 802 (e.g., a set of SKU candidates) is initialized (e.g., included or identified) in a multi-dimensional decision space according to its design specifications (e.g., capacity or functionality). The example illustrated in FIG. 8A illustrates that 12 potential candidate devices are identified in a two-dimensional decision space, such as memory capacity (MemoryGB) and CPU (e.g., CoresACU). It should be understood that the decision space may include any suitable number of potential candidate devices, and the dimensions of the decision space may depend on the type or variety of the associated resource device 108 and the personalized recommendation to be generated. Thus, the decision space may include all potential candidate devices according to the associated specifications that may be considered when generating a right-sized recommendation for the associated resource device 108.
[0075] 8B, in block 710 of FIG. 7A, the adjusted CPU and memory capacity of each of the potential candidate devices 802 is calculated (e.g., reduced or "shrunk") according to the received threshold parameters 406 to change the decision space according to the personalized threshold. For example, for a user who defined a threshold of 80%, a potential candidate device 802 having a size of 10 cores and 100 GB of memory is reduced to 8 cores and 80 GB of memory to represent the upper limit that the user can tolerate. Thus, returning to the example illustrated in FIG. 8A and FIG. 8B, a potential candidate device 802 (e.g., F16s_v2) may be adjusted to a CoreACU size of about 2000 for a user who defined a threshold of 60%, whereas a CoreACU size of about 3000 for a user who defined a threshold of 90%.
[0076] 8C, to add the workload profile of the desired resource device (e.g., virtual resource device) 804 to the decision space in block 710 of FIG. 7A, in some embodiments, the recommendation service 112 (e.g., right-sized recommendation generator 220) modifies the current capacity or capability of the associated resource device 108 (e.g., current resource device) based on the representative utilization calculated for the associated resource device 108 (e.g., in block 315 of the method 300 of FIG. 3) to calculate the workload profile of the desired resource device 804. In this example, the CoreACU and memory of the associated resource device 108 may be modified based on the representative CPU and memory utilization calculated for the associated resource device 108. For example, if the CPU utilization of CoreACU of 1280 is 90%, the desired CoreACU becomes 1152. Thus, for an associated resource device (e.g., current SKU) with 1280 CoreACU and 32GB memory, with a representative CPU utilization of 60% and a representative memory utilization of 60%, the desired CoreACU would be 768 and the desired memory would be 19.2GB. Thus, as illustrated in FIG. 8C, which represents the decision space of a user (e.g., Customer 2) with a conservative profile, a desired resource device 804 with a desired CoreACU and memory is added to the associated decision space.
[0077] 8D, to search and rank potential candidate devices at block 720 of FIG. 7A, in some embodiments, potential candidate devices 802 closest (e.g., adjacent) to the desired resource device 804 are identified and ranked based on a distance metric from the desired resource device 804. In some embodiments, the right-sized recommendation generator 220 uses a KNN model that uses a ball tree algorithm, thereby reducing the complexity of the search. Additionally, the ball tree algorithm also represents the closest potential candidate devices by rank, allowing subsequent filtering (e.g., at block 725 of FIG. 7A) to be performed more quickly.
[0078] Referring to FIG. 8E, the top-ranked potential candidate devices 802 are filtered to identify suitable candidate devices that meet all constraints. As an illustrative example, one constraint may be that the desired utilization is less than (below) a threshold-adjusted capacity. In this case, as illustrated in FIG. 8D and FIG. 8E, the threshold-adjusted capacity of potential candidate devices D4s_v3, E4s_v3, and F4s_v2 among the ranked potential candidate devices 802 all have a CoreACU that is less than the desired CoreACU, and thus this constraint is not met. Meanwhile, the threshold-adjusted capacity of potential candidate device D8s_v3 among the ranked potential candidate devices 802 has a CoreACU that is greater than or equal to the desired CoreACU and a memory that is greater than or equal to the desired memory. Thus, potential candidate device D8s_v3 is identified as meeting this constraint.
[0079] More specifically, as discussed above, filtering the top-ranked potential candidate devices 802 at block 725 of FIG. 7A includes identifying one or more constraints at block 740 of FIG. 7B. The one or more constraints may depend on the type or variety of the associated resource device 108. In this example, the one or more constraints include a desired CPU utilization that is less than a threshold-adjusted CPU utilization of the potential candidate device under consideration and a desired memory utilization that is less than a threshold-adjusted memory utilization of the potential candidate device under consideration.
[0080] The threshold adjusted CPU utilization and threshold adjusted memory utilization of each of the top ranked potential candidate devices 802 identified in block 720 of Figure 7A is compared to the desired CPU utilization and desired memory utilization, respectively, of the desired resource device 804 in block 745 of Figure 7B. If a suitable candidate device 802 is identified in block 755 of Figure 7B or if no right-sized recommendation is generated in block 765 of Figure 7B, then a suitable recommendation is provided to the user (e.g., via a graphical user interface) in block 335 of Figure 3.
[0081] Thus, as discussed in more detail below with reference to Figures 9A and 9B, unlike recommendations generated based on rule-based models and hard-coded values, where the same recommendations may be provided regardless of different users' needs, personalized recommendations are generated based on user-defined personalization parameters such that the recommendations may be tailored to the needs of a variety of different users.
[0082] 9A is a table illustrating recommendations generated based on received personalized profile parameters in accordance with one or more embodiments of the present disclosure, and FIG. 9B is a table illustrating, by way of comparison, recommendations generated based on hard-coded values.
[0083] For example, FIG. 9A illustrates a table 900 in which right-sized recommendations 902 are generated for four users (e.g., customers 1 through 4) with different recommendation profiles (e.g., from very conservative to very aggressive) based on representative usage 502 and received personalization profile parameters 904 in accordance with an embodiment of the present disclosure.
[0084] 9B illustrates, by way of comparison, a table 950 in which right-sized recommendations 952 are generated for four users (e.g., customers 1 through 4) with different recommendation profiles (e.g., from very conservative to very aggressive) based on representative usage 552 and hard-coded values 954. For comparison, the usage data 504 and 556 (see, e.g., FIGS. 5A and 5B) used to generate the right-sized recommendations for each of the four users is the same. It should be understood that in practice, the usage data 504 and 556 for each of the four users (e.g., customers 1 through 4) may be different.
[0085] As illustrated in FIG. 9A, when right-sized recommendations are generated based on received personalization profile parameters 904 resulting in different representative usage 502, different users (e.g., customers 1 through 4) with different recommendation profiles (e.g., from very conservative to very aggressive) may receive different right-sized recommendations 902 even if the usage data for each of the different users is the same. In comparison, referring to FIG. 9B, when right-sized recommendations are generated based on hard-coded values 954 resulting in the same representative usage 552, different users (e.g., customers 1 through 4) with different recommendation profiles (e.g., from very conservative to very aggressive) may receive the same right-sized recommendations 952 regardless of the user's recommendation profile and needs.
[0086] 10A-10B illustrate schematic graphical user interfaces in accordance with one or more embodiments of the present disclosure.
[0087] 10A, to enable a level of personalization, as described above, a graphical user interface (GUI) 1000 (which may include one or more pages, views, or links) may be presented (e.g., displayed) to a user via a user device 102. The GUI 1000 may enable a user to create a user profile 1002 and provide various personalization profile parameter values 1004, 1006, and 1008. The user profile 1002 may include a scope of resources (e.g., all resource devices under a subscription, a resource group, or resource devices with a particular tag), and the personalization profile parameter values 1004, 1006, and 1008 may be applicable to the scope of resources. In the example illustrated in FIG. 10A, the personalization profile parameter values 1004, 1006, and 1008 may enable a user to define priorities for the types or kinds of potential candidate devices (e.g., devices having a target SKU configuration, etc.) 1004 that may be considered for recommendations (e.g., right-sizing recommendations), thresholds (e.g., target thresholds) 1006 that may be used to adjust the capacity or capabilities of the potential candidate devices 1004 as discussed above, time range parameters 1008 that may limit the amount of telemetry data that may be aggregated to associated resource devices 108, and the like.
[0088] Referring to FIG. 10B, based on the personalized profile parameter values defined by the user, one or more personalized recommendations may be generated and provided to the user device 102 of the user via the GUI 1000. The example illustrated in FIG. 10B illustrates a right-sizing recommendation that recommends to the user to right-size a VM from a Standard_D2_v3 to a Standard_D4s_v3 resource device. This recommendation is generated based on the personalization profile parameter values 1004, 1006, and 1008 received from the user and may be invoked in text on the GUI 1000 (e.g., in another area or on another page of the GUI 1000) as well as plotted in the utilization graph 1010. The user may also be provided with resource device alternative options 1012, which may result in less (or more) cost savings for resource devices that have comparable performance / reliability to the recommended resource device. In some embodiments, various action selectors (e.g., buttons) 1014 are provided that, when selected, may automatically act on the recommendations as needed or desired. For example, in some embodiments, the action selectors 1014 include a right size selector that, when selected, automatically implements the recommended device to replace the associated resource device 108. However, the GUI 1000 illustrated in Figures 10A and 10B is provided as an example and thus may be modified according to various embodiments.
[0089] According to one or more embodiments of the present disclosure described above, the provider system may generate and provide one or more personalized recommendations to a user of one or more resource devices of the provider system based on received personalized parameter values that allow the user to define how the recommendations are generated. For example, the user may provide values for a personalization parameter indicating how usage data of the associated resource device is generated, a parameter indicating how representative usage of the associated resource device is calculated from the generated usage data, and a parameter indicating a threshold limit for the recommendations generated by the provider system. Thus, one or more personalized recommendations may be provided that may address a variety of different needs of a variety of different users.
[0090] 11-14 and the associated description provide a discussion of various operating environments in which aspects of the disclosure may be implemented. However, the devices and systems depicted and discussed in connection with FIGURES 11-14 are for purposes of example and illustration, and it will be understood that a vast number of computing device configurations may be utilized to implement aspects of the disclosure described herein.
[0091] FIG. 11 is a block diagram illustrating example physical components (eg, hardware) of a computing device 1100 in accordance with one or more embodiments of the present disclosure.
[0092] The computing device components described below may be suitable for the computing devices and systems described above. In a basic configuration, the computing device 1100 includes a processing system with at least one processing unit 1102 and a system memory 1104.
[0093] Depending on the configuration and type of computing device, the system memory 1104 may comprise volatile storage (e.g., random access memory), non-volatile storage (e.g., read-only memory), flash memory, or any combination of such memory.
[0094] The system memory 1104 includes an operating system 1105 and one or more program modules 1106 suitable for executing software applications 1120, such as one or more components supported by the system described herein. The operating system 1105 may be suitable, for example, for controlling the operation of the computing device 1100.
[0095] Additionally, embodiments of the present disclosure may be implemented with graphics libraries, other operating systems, or any other application programs, and are not limited to any particular application or system. This basic configuration is illustrated in FIG. 11 by those components within dashed line 1108. Computing device 1100 may have additional features or functionality. For example, computing device 1100 may also include additional data storage devices (removable and / or non-removable), such as, for example, magnetic disks, optical disks, or tape. Such additional storage is illustrated in FIG. 11 by removable storage device 1107 and non-removable storage device 1110.
[0096] As previously mentioned, a number of program modules and data files may be stored in the system memory 1104. While executing on the processing unit 1102, the program modules 1106 (e.g., applications 1120) may perform processes including aspects as described herein. Other program modules that may be used in accordance with aspects of the present disclosure may include email and contact applications, word processing applications, spreadsheet applications, database applications, slide presentation applications, drawing or computer aided application programs, and the like.
[0097] Additionally, embodiments of the present disclosure may be implemented in electrical circuits comprising discrete electronic elements, packaged or integrated electronic chips including logic gates, circuits utilizing microprocessors, or in a single chip including electronic elements or a microprocessor. For example, embodiments of the present disclosure may be implemented via a system-on-chip (SOC), where each or many of the components illustrated in FIG. 11 may be integrated into a single integrated circuit. Such an SOC device may include one or more processing units, graphics units, communication units, system virtualization units, and various application functions, all of which are integrated (or "burned") as a single integrated circuit on a chip substrate. When operating via a SOC, the functionality described herein regarding the client's ability to switch protocols may operate via application-specific logic integrated with other components of the computing device 1100 on a single integrated circuit (chip). Embodiments of the present disclosure may also be implemented using other technologies capable of performing logical operations, such as, for example, AND, OR, and NOT, including mechanical, optical, fluidic, and quantum technologies. Additionally, embodiments of the present disclosure may be implemented within a general-purpose computer, or any other circuit or system.
[0098] The computing device 1100 may also have one or more input devices 1112, such as a keyboard, mouse, pen, sound or voice input device, touch or swipe input device, etc. Output devices 1114, such as a display, speakers, printer, etc. may also be included. The aforementioned devices are examples and others may be used. The computing device 1100 may include one or more communications connections 1116 that enable communication with other computing devices 1150. Examples of suitable communications connections 1116 include radio frequency (RF) transmitter, receiver, and / or transceiver circuitry, universal serial bus (USB), parallel, and / or serial ports.
[0099] As used herein, the term computer readable medium may include computer storage media. Computer storage media may include volatile and non-volatile, removable and non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, or program modules. The system memory 1104, the removable storage device 1107, and the non-removable storage device 1110 are all examples of computer storage media (e.g., memory storage). Computer storage media may include random access memory (RAM), read only memory (ROM), electrically erasable read only memory (EEPROM), flash memory or other memory technology, CD-ROM, digital versatile disk (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other article of manufacture that can be used to store information and that can be accessed by the computing device 1100. Any such computer storage media may be part of the computing device 1100. Computer storage media does not include carrier waves or other propagated or modulated data signals.
[0100] Communication media may be embodied by computer-readable instructions, data structures, program modules, or other data in a modulated data signal, such as a carrier wave or other transport mechanism, and includes any information delivery media. The term "modulated data signal" may describe a signal that has one or more characteristics set or changed in such a manner as to encode information in the signal. By way of example, communication media may include wired media, such as a wired network or direct-wired connection, and wireless media, such as acoustic, RF, infrared and other wireless media.
[0101] 12A and 12B are simplified block diagrams of an exemplary mobile computing device in accordance with one or more embodiments of the present disclosure.
[0102] 12A and 12B illustrate a mobile computing device 1200, such as a mobile phone, a smartphone, a wearable computer (such as a smart watch), a tablet computer, a laptop computer, and the like, on which embodiments of the present disclosure may be implemented. In some aspects, a client may be a mobile computing device. Referring to FIG. 12A, one aspect of a mobile computing device 1200 for implementing aspects is illustrated. In a basic configuration, the mobile computing device 1200 is a handheld computer having both input and output elements. The mobile computing device 1200 typically includes a display 1205 and one or more input buttons 1210 that allow a user to input information into the mobile computing device 1200.
[0103] The display 1205 of the mobile computing device 1200 may also function as an input device (e.g., a touchscreen display).
[0104] If included, optional side input elements 1215 allow for further user input. The side input elements 1215 may be rotary switches, buttons, or any other type of manual input element. In alternative aspects, the mobile computing device 1200 may incorporate more or fewer input elements. For example, in some embodiments, the display 1205 may not be a touch screen.
[0105] In yet another alternative embodiment, the mobile computing device 1200 is a portable phone system, such as a cellular phone. The mobile computing device 1200 may also include an optional keypad 1235. The optional keypad 1235 may be a physical keypad or a "soft" keypad generated on a touch screen display.
[0106] In various embodiments, the output elements include a display 1205 for presenting a graphical user interface (GUI), a visual indicator 1220 (e.g., a light emitting diode), and / or an audio transducer 1225 (e.g., a speaker). In some aspects, the mobile computing device 1200 incorporates a vibration transducer for providing haptic feedback to the user. In yet other aspects, the mobile computing device 1200 incorporates input and / or output ports, such as an audio input (e.g., a microphone jack), an audio output (e.g., a headphone jack), and a video output (e.g., an HDMI port), for sending signals to or receiving signals from external devices.
[0107] FIG. 12B is a block diagram illustrating the architecture of one aspect of a mobile computing device. That is, the mobile computing device 1200 can incorporate a system (e.g., architecture) 1202 to implement some aspects. In one embodiment, the system 1202 is implemented as a "smartphone" capable of running one or more applications (e.g., browser, email, calendar, contact manager, messaging client, games, media client / player). In some aspects, the system 1202 is integrated as a computing device such as an integrated personal digital assistant (PDA) and a wireless phone.
[0108] One or more application programs 1266 may be loaded into the memory 1262 and executed on or in association with the operating system 1264. Examples of application programs include phone dialer programs, e-mail programs, personal information management (PIM) programs, word processing programs, spreadsheet programs, Internet browser programs, messaging programs, etc. The system 1202 also includes a non-volatile storage area 1268 within the memory 1262.
[0109] The non-volatile storage area 1268 may be used to store persistent information that should not be lost if the system 1202 is powered down. The application programs 1266 may use and store information in the non-volatile storage area 1268, such as emails and other messages used by an email application. A synchronization application (not shown) also resides on the system 1202 and is programmed to interact with a corresponding synchronization application resident on a host computer to keep information stored in the non-volatile storage area 1268 synchronized with corresponding information stored on the host computer. It should be understood that other applications may be loaded into the memory 1262 and executed on the mobile computing device 1200 described herein (e.g., a search engine, an extractor module, a relevance ranking module, an answer scoring module).
[0110] The system 1202 has a power source 1270, which may be implemented as one or more batteries. The power source 1270 may further include an external power source, such as an AC adapter or a powered docking cradle, that supplements or recharges the batteries.
[0111] The system 1202 may also include a wireless interface layer 1272 that performs functions of transmitting and receiving radio frequency communications. The wireless interface layer 1272 facilitates wireless connectivity between the system 1202 and the “outside world” via a communications carrier or service provider. Transmissions to and from the wireless interface layer 1272 are performed under the control of the operating system 1264. In other words, communications received by the wireless interface layer 1272 may be disseminated to the application programs 1266 via the operating system 1264, and vice versa.
[0112] A visual indicator (e.g., light emitting diode (LED) 1220) may be used to provide a visual notification, and / or an audio interface 1274 may be used to generate an audible notification via an audio transducer 1225. In the illustrated embodiment, the visual indicator 1220 is a light emitting diode (LED) and the audio transducer 1225 is a speaker. These devices may be directly coupled to the power source 1270 such that, when activated, these devices will remain on for a duration dictated by the notification mechanism, even though the processor (e.g., processor 1260 and / or dedicated processor 1261) and other components may be shut down to conserve battery power.
[0113] The LED may be programmed to remain on indefinitely until a user takes action to indicate the power-on status of the device. Audio interface 1274 is used to provide audible signals to and receive audible signals from the user. For example, in addition to being coupled to audio transducer 1225, audio interface 1274 may also be coupled to a microphone to receive audible input, such as to facilitate a telephone conversation. According to an embodiment of the present disclosure, the microphone may also serve as an audio sensor to facilitate control of notifications, as described below. System 1202 may further include a video interface 1276 to enable operation of peripheral device port 1230 (e.g., an on-board camera) to record still images, video streams, and the like.
[0114] A mobile computing device 1200 implementing the system 1202 may have additional features or functionality. For example, the mobile computing device 1200 may also include additional data storage devices (removable and / or non-removable), such as magnetic disks, optical disks, or tape.
[0115] Such additional storage is illustrated in FIG. 12B by non-volatile storage area 1268.
[0116] The data / information generated or captured by the mobile computing device 1200 and stored via the system 1202 may be stored locally on the mobile computing device 1200 as described above, or the data may be stored on any number of storage media that may be accessed by the device via the wireless interface layer 1272 or via a wired connection between the mobile computing device 1200 and a separate computing device associated with the mobile computing device 1200, e.g., a server computer in a distributed computing network such as the Internet. It should be understood that such data / information may be accessed via the mobile computing device 1200, via the wireless interface layer 1272, or via a distributed computing network. Similarly, such data / information may be readily transferred between computing devices for storage and use in accordance with well-known data / information transfer and storage means, including electronic mail and collaborative data / information sharing systems.
[0117] FIG. 13 is a simplified block diagram of an exemplary distributed computing system in accordance with one or more embodiments of the present disclosure.
[0118] 13 illustrates one embodiment of an architecture of a system for processing data received at a computing system from a remote source, such as a personal computer 1304, a tablet computing device 1306, a mobile computing device 1308, as described above. Content displayed at the server device 1302 may be stored in different communication channels or other storage types. For example, various documents may be stored using a directory service 1322, a web portal 1324, a mailbox service 1326, an instant messaging store 1328, or a social networking site 1330.
[0119] The input evaluation service 1320 may be applied by a client in communication with the server device 1302 and / or the input evaluation service 1320 may be applied by the server device 1302. The server device 1302 may provide data to and from client computing devices, such as a personal computer 1304, a tablet computing device 1306, and / or a mobile computing device 1308 (e.g., a smartphone) over a network 1315. By way of example, the computer system described above may be embodied in a personal computer 1304, a tablet computing device 1306, and / or a mobile computing device 1308 (e.g., a smartphone). Any of these embodiments of a computing device may retrieve content from the store 1316 in addition to receiving graphical data available for pre-processing at a graphics originating system or post-processing at a receiving computing system.
[0120] FIG. 14 illustrates an exemplary tablet computing device 1400 for implementing one or more aspects of one or more embodiments of the present disclosure.
[0121] Additionally, aspects and functions described herein may operate via a distributed system (e.g., a cloud-based computing system) in which application functions, memory, data storage and retrieval, and various processing functions may be operated remotely from one another via a distributed computing network such as the Internet or an intranet. User interfaces and various types of information may be displayed via on-board computing device displays or via remote display units associated with one or more computing devices. For example, user interfaces and various types of information may be displayed on and interacted with a wall surface onto which the user interfaces and various types of information are projected. Interactions with multiple computing systems in which embodiments of the present disclosure may be implemented include keystroke input, touch screen input, voice or other audio input, gesture input, in which an associated computing device is equipped with detection (e.g., camera) capabilities to capture and interpret user gestures to control functions of the computing device, and the like.
[0122] As will be appreciated from the foregoing disclosure, one example of the technology relates to a system that includes a processor and a memory that includes instructions that, when executed by the processor, cause the processor to perform a method including receiving personalization profile parameters from a user of an associated resource device, calculating a representative usage of the associated resource device based on the personalization profile parameters, and generating recommendations based on the representative usage and the personalization profile parameters.
[0123] In another example, a technique relates to a computer-implemented method that includes receiving personalization profile parameters from a user of an associated resource device, receiving representative usage of the associated resource device based on percentiles of usage data for the associated resource device, and generating recommendations based on the representative usage and a selected value of a recommendation priority parameter of the personalization profile parameters.
[0124] In another example, a technique relates to a computer-readable medium including program instructions that, when executed by a processor, cause the processor to perform operations including receiving personalization profile parameters from a user via a user interface displayed on the user device, calculating representative utilization of associated resource devices accessible by the user based on the personalization profile parameters, generating recommendations based on the representative utilization and the personalization profile parameters, and transmitting the recommendations to the user device for display in the graphical user interface.
[0125] Aspects of the present disclosure are described above with reference to, for example, block diagrams and / or operational illustrations of methods, systems, and computer program products according to aspects of the present disclosure. The functions / acts noted in the blocks may occur out of the order shown in any flowchart. For example, two blocks shown in succession may in fact be executed substantially simultaneously, or the blocks may sometimes be executed in the reverse order, depending on the functions / acts involved.
[0126] The description and illustrations of one or more aspects provided in this application are not intended to limit or restrict the scope of the claimed disclosure in any way. The aspects, examples, and details provided in this application are believed to be sufficient to transfer ownership and enable others to make and use the best mode of the claimed disclosure. The claimed disclosure should not be construed as being limited to any aspects, examples, or details provided in this application.
[0127] Various features (both structural and methodological), whether shown and described in combination or separately, are intended to be selectively included or omitted to create an embodiment with a particular set of features. Those skilled in the art, given the description and illustrations of this application, may conceive variations, modifications, and alternative embodiments that are within the spirit of the broader aspects of the general inventive concepts embodied in this application without departing from the broader scope of the claimed disclosure.
Claims
1. A processor; A memory containing instructions; wherein the instructions, when executed by the processor, cause the processor to: receiving personalization profile parameters from a user of an associated resource device; calculating a representative utilization of the associated resource device based on the personalization profile parameters; generating recommendations based on the representative usage and the personalization profile parameters; A system that allows this.
2. 2. The system of claim 1, wherein a graphical user interface is transmitted to a user device of the user to receive the personalization profile parameters.
3. The system of claim 2 , wherein the recommendations to be displayed in the graphical user interface are transmitted to the user device.
4. 2. The system of claim 1, wherein the instructions for calculating the representative utilization include: generating usage data by aggregating telemetry data of the associated resource devices based on data aggregation parameters of the personalization profile parameters; calculating a percentile of the usage data as the representative usage of the associated resource device based on a percentile parameter of the personalization profile parameters; A system that further enhances this.
5. 2. The system of claim 1, wherein two recommendations are generated simultaneously, the two recommendations including the recommendation.
6. 2. The system of claim 1, wherein to determine the recommendation to generate, the instructions further cause the processor to encode a selected value of a recommendation priority parameter of the personalization profile parameters as a binary feature in a recommendation data structure.
7. 2. The system of claim 1, wherein to generate the recommendations, the instructions further comprise: Identifying a plurality of potential candidate devices; calculating an adjusted capacity for each of the plurality of potential candidate devices based on a threshold parameter of the personalization profile parameters; determining a workload profile according to a current capacity of said associated resource device as modified by said representative utilization of said associated resource device; calculating a distance metric between the workload profile and the capacity of adjacent devices of the plurality of potential candidate devices; A system that further enhances this.
8. 8. The system of claim 7, wherein the instructions cause the processor to: ranking each of the neighboring devices of the plurality of potential candidate devices based on the distance metric; comparing the threshold adjusted capacity of each ranked potential candidate device to said workload profile of a desired resource device; A system that further enhances this.
9. receiving, by a processor, personalization profile parameters from a user of an associated resource device; receiving a representative utilization of the associated resource devices based on percentiles of utilization data of the associated resource devices; generating, by the processor, recommendations based on the representative usage and a selected value of a recommendation priority parameter of the personalization profile parameters; The method includes:
10. 10. The method of claim 9, wherein a graphical user interface is transmitted to a user device of the user to receive the personalization profile parameters.
11. 11. The method of claim 10, further comprising the step of transmitting, by the processor, the recommendations to the user device for display in the graphical user interface.
12. 10. The method of claim 9, wherein the step of receiving the representative usage comprises: generating, by the processor, the usage data by aggregating telemetry data of the associated resource devices based on data aggregation parameters of the received personalization profile parameters; calculating, by the processor, the percentile of usage data as the representative usage of the associated resource device based on a percentile parameter of the personalization profile parameters; The method includes:
13. 10. The method of claim 9, identifying, by the processor, a first recommendation for generation based on a first selected value of a recommendation priority parameter of the personalization profile parameters; identifying, by the processor, a second recommendation for generation based on a second selected value of the recommendation priority parameter of the personalization profile parameters; generating, by the processor, the first recommendation and the second recommendation contemporaneously with respect to one another; The method further comprises:
14. 10. The method of claim 9, wherein generating the recommendation comprises encoding, by the processor, selected values of recommendation priority parameters of the personalization profile parameters as binary features in a recommendation data structure.
15. A computer-readable medium containing program instructions that, when executed by a processor, cause the processor to perform operations, including: receiving personalization profile parameters from a user via a user interface displayed on a user device; calculating a representative utilization of associated resource devices accessible by said user based on said personalization profile parameters; generating recommendations based on the representative usage and the personalization profile parameters; transmitting the recommendations to the user device for display on the graphical user interface; 13. A computer readable medium comprising: