Different computer models associated with different computer configurations may vary greatly in performance capabilities and price. Various factors associated with a given user, such as the user's budget and intended uses for a computer, may affect which particular configuration may be best suited for the user.
Due to the large number of available configuration options for a computer, it may be challenging for a particular user (an enterprise, a business unit of an enterprise, or an individual, as examples) to select a computer to adequately meet the user's usage criteria for the computer. In this context, a “configuration option” for a computer refers to an option that may define one or multiple characteristics of the computer, such as any of a number of the foregoing characteristics as well as other characteristics: a number of central processing units (CPUs), a number of CPU processing cores, a CPU technology, a volatile memory capacity, a memory technology, a storage capacity, a storage technology, the storage bandwidth, a storage latency, a memory latency, and so forth. As examples, a particular computer configuration may refer to a particular computer model; a particular computer model having one or multiple selected options; a computer provided by a certain manufacturer and having a set of one or multiple configuration options, with no association with a particular model; a computer with certain configuration options and no affiliation with a particular manufacturer, and so forth.
In the context of this application, the “computer” may be, in general, any processor-based platform, such as, as examples, a desktop computer, a laptop computer, a tablet computer, a smartphone, a wearable device (a watch, for example), a client, a server, a thin client, and so forth.
Due to the wide range of options and uses for a computer, it is entirely possible that a user may select a computer configuration that is not optimally utilized for the user's purposes. For example, the user may select a computer configuration that, when used by user, may have a CPU usage that is consistently high (over 70 percent, for example), which may indicate that the computer is underpowered and may result in the user experiencing significant delays in the computer's responses to input, as well as other challenges. Conversely, the user may select a computer configuration that may have under-utilized resources, which may mean, for example, that the purchase of the computer was not economically efficient.
In accordance with example implementations that are disclosed herein, a computer system selects a computer configuration based on application usage-based clustering and an application profile. As described herein, the “application profile” refers to an input that may be provided by a user to define the user's application use for the computer. As an example, in accordance with some implementations, the application profile may include a list of applications to be executed on the computer; and in accordance with example implementations, the application profile may indicate a rank, or order, of the applications to indicate preferences for the applications (one application may be designated as being the top priority application, meaning the application may be used more or may be more important to the user than the other applications, for example; another application may be designated as being the second application in terms of priority; and so forth).
The “application usage-based clustering” refers to the grouping of a relatively large set of candidate applications (i.e., a set of applications larger than the list of applications of a given application profile) based on usage metrics that are observed when the candidate applications execute on a set of candidate computer configurations (candidate computer models, for example). Due to this grouping, applications that are associated with similar usage metrics are grouped together. For example, candidate applications that have relatively high memory and relatively high CPU usage may be grouped together in one cluster; candidate applications that have relatively high memory usage and relatively lower CPU usage may be grouped together in another cluster; candidate applications that have a relatively larger storage usage may be grouped together in another cluster; and so forth.
A given candidate application may be executed on one or multiple candidate computer configurations; and a given candidate computer configuration may execute one or multiple candidate applications. As described herein, in accordance with example implementations, when a candidate computer configuration executes a certain percentage of applications of a given application cluster, then the candidate computer configuration represents the cluster. Accordingly, each application cluster may be represented by one or multiple candidate computer configurations. In accordance with example implementations, the candidate computer configurations that represent each application clusters are ranked based on a “fit” between the configurations and the cluster. For example, a statistical distribution of a particular usage metric for a candidate computer configuration may be compared to the statistical distribution of the same usage metric for the application cluster for purposes of assessing the fit. Accordingly, in accordance with example implementations, the computer system may determine a ranking of computer configurations for each application cluster. Thus, in accordance with example implementations, each application cluster is a group of candidate applications that have similar observed usage metrics; each application cluster may be represented by one or multiple candidate computer configurations; and for each application cluster, the candidate computer configurations representing the application cluster may be ranked.
In accordance with example implementations that are described herein, the application profile controls a selection of application clusters and the merging of the rankings associated with the selected application clusters to provide a first merged ranking of computer configurations. In accordance with some implementations, the highest ranked computer configuration of the first merged computer ranking may be the configuration that is selected, or recommended, for the user. However, in accordance with further example implementations, the computer configuration selection may also take into account a budget, or price range that is provided by the user. In this manner, in accordance with some implementations, a budget-based ranking of the computer configurations listed in the application profile may be determined; and then, the budget-based computer configuration ranking may be merged with the above-described first merged computer ranking to produce a second, merged computer ranking. Accordingly, the second merged computer ranking may provide in an ordered list of computer configurations, with the highest ranked computer configuration having a reasonable utility within an allocated budget, in accordance with example implementations.
As a more specific example,
In accordance with further example implementations, the computer system 100 may be formed partially or in whole from one or multiple circuits that do not execute machine executable instructions. In accordance with further example implementations, such circuits may include, as examples, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), and so forth.
It is noted that the computer system 100 may be disposed at a single geographical location or may be formed form networked components that are located at multiple geographical locations.
In accordance with example implementations, the computer system 100 provides an output 160 that represents a selected computer configuration for a user based on application usage-based clustering and input from the user. The user input may include data representing an application profile 150 and a budget 152 for the to-be-selected computer configuration. A computer configuration recommendation engine 140 of the computer system 100, as described herein, may take into account the application profile 150, the budget 152 and computer configuration rankings 136 for purposes of providing the output 160 representing the selected computer configuration.
The computer configuration rankings 136, in accordance with example implementations, are rankings of a relatively large set of candidate computer configurations; and these rankings 136 are determined by an application usage-based clustering engine 120 of the computer system 100 based on application usage metrics. More specifically, in accordance with example implementations, the computer system 100 includes a data repository 110, which contains application snapshot data 114 that represents various application usage metrics. In this regard, in accordance with example implementations, the snapshot data 114 represents observed snapshots of candidate applications that execute on a set of computers that are associated with the set of candidate computer configurations, and the snapshot data 114 may be collected by snapshot collection programs. A given application snapshot, in general, is associated with a candidate computer configuration and a candidate application (i.e., derived due to the candidate application executing on the candidate computer configuration); and the snapshot data 114 for the snapshot may include, an application identification; the identification of the computer configuration executing the application (an identification of a computer model number assigned by the computer system 100, for example); and various usage metrics associated with the application execution. As examples, the usage metrics may belong to one or more of the following categories: CPU usage; memory usage; storage usage, and so forth. In accordance with example implementations, the snapshot data 114 may be acquired on multiple machines that belong to different users and are disposed at different geographical locations; and the snapshot data 114 may be sanitized so that the application snapshot data 114 does not contain any identifiable personal information.
The application usage-based clustering engine 120 analyzes the application snapshot data 114 for purposes of generating, or providing, the computer configuration rankings 136. More specifically, in accordance with example implementations, the application usage-based clustering engine 120 performs application clustering 128 to group, or cluster, the candidate applications based on the usage metrics so that the candidate applications of a particular cluster have at least some similar usage metrics (from a statistical standpoint); and in accordance with example implementations, the application usage-based clustering engine 120 may aggregate the candidate applications based on the usage metrics (as represented by the application snapshot data 114) before the clustering, using a statistical analysis. For example, in accordance with example implementations, the application usage-based clustering engine 120 may determine a mean and a standard deviation for each usage metric category for each candidate application; or, as another example, the application usage-based clustering engine 120 may determine a median and mean absolute deviation for each usage metric category for each candidate application. This aggregation is performed so that the particular variations that may arise from different circumstances may be controlled as per the Central Limit Theorem (in other words, in accordance with some implementations, the usage metrics for a given usage metric category may be assumed to have a normal, or Gaussian distribution). The application usage-based clustering engine 120 may then use the aggregated application usage metrics as features for a clustering algorithm (a K-means clustering algorithm, a self organizing map (SOM) clustering algorithm, and so forth) to generate application clusters 129.
Referring to
Referring back to
Thus, the application usage-based clustering engine 120 determines, for each application cluster 129, a set of computer configurations that are represented by the application cluster 210.
After determining which computer configurations are represented by the application clusters 210, in accordance with example implementations, the application usage-based clustering engine 120 determines dissimilarity scores, as indicated at reference numeral 132 of
As a more specific example, in accordance with some implementations, the dissimilarity score may be based on z-test statistics. The z-test statistic is a measure of the similarity of the distribution of a particular usage metric for an application cluster to the distribution of the usage metric for a computer configuration. More specifically, the z-test statistic may take into account the mean and standard deviation of the data collected:
where “Z” represents the z-statistic for a particular usage metric category, “
represents the sum of the squares of the standard deviations.
The dissimilarity score, in accordance with example implementations, is the weighted sum of the absolute values of the z statistic for each aggregated usage metric, as described below:
where “F” represents the dissimilarity score; “k” represents an index; “n” represents the number of usage metric categories; “m” represents the usage metric distribution comparison value, such as the z-test statistic; and “wk” represents a weight assigned to the given metric category.
Referring to an illustration 300 of
In accordance with example implementations, the application usage-based clustering engine 120 determines each computer configuration ranking 136 for each application cluster 129 based on the dissimilarity scores for the computer configurations that are represented by the cluster 129. In this manner, in
Referring back to
More specifically, in accordance with example implementations, the computer configuration recommendation engine 140 receives data representing the application profile 150 and budget 152 (provided via a graphical user interface (GUI) 149, for example); and based on the application profile 150, the computer configuration recommendation engine 140 selects and assigns weights to the appropriate computer configuration rankings 136. For example, in accordance with example implementations, the computer configuration recommendation engine 140 may select the configuration rankings 136 that are associated with the applications listed in the application profile 150, and the engine 140 may assign weights to the selected rankings 136 that reflect the application ordering, as set forth in the profile 150.
In accordance with example implementations, the assigned weights may be based on a linear profile that is a function of the number of applications listed in the profile 150. For example, if the application profile 150 lists four applications, the computer configuration recommendation engine 140 may assign the weights using a linear spread from 1 to 0.25, resulting in weights of 1.00, 0.75, 0.50 and 0.25 being assigned to the associated computer rankings 136 in descending order.
As a more specific example, referring to
In accordance with some implementations, the first merged computer configuration ranking may be the final ranking, which then may be used by the computer configuration recommendation engine 140 to recommend a selected computer configuration (i.e., the highest ranked computer configuration) for the user. However, in accordance with further example implementations, the computer configuration recommendation engine 140 also considers the budget 152. More specifically, in accordance with some implementations, the user may provide a budget range. For example, there may be five candidate computer configurations having prices of $400, $500, $600, $700 and $800, respectively; and the budget specified by the user may be a budget in the range of $500 to $700, thereby excluding the $400 and $800 computer configurations from consideration.
In accordance with example implementations, the computer configuration recommendation engine 140 may apply a price score curve (called a “budget filter” herein) based on the budget 152. More specifically, in accordance with some implementations, the computer configuration recommendation engine 140 may apply a budget filter 500, which is illustrated in
The computer configuration recommendation engine 140 may then, as indicated at reference numeral 158 of
For example, in accordance with some implementations, as illustrated in
As illustrated in
Referring to
The GUI 700 further includes, in accordance with example implementations, a fitness section 740 that lists the percentages of performance metrics and budget, such as here, performance metrics pertaining to the budget, CPU, memory and disk. In accordance with some implementations, these percentages may be the same used by the computer model recommendation engine 140 to measure the dissimilarity between the selected computer model and the corresponding application cluster for the usage metric categories. Moreover, a percentage more than 100 percent (such as the disk fitness of 120 percent
In accordance with further example implementations, the computer configuration recommendation engine 140 may provide an alternative result for a computer configuration regardless of budget so that the user may have an idea about what the ideal computer configuration may be and perhaps opt to purchase that model.
Among the potential advantages of the techniques and systems that are disclosed herein, computer configurations that are suitable to user needs may be determined; the profiles may avoid underperforming or over performing computer purchases. The use of the budget allows recommended computer configurations to fit user's needs. The fitness percentage allows the user to understand why the particular computer configuration was chosen.
Thus, in accordance with example implementations, a technique 800 that is depicted in
Referring to
Referring to
Other implementations are contemplated, which are within the scope of the appended claims. For example, in accordance with further implementations, the computer configuration recommendation engine 140 may apply a price score curve that does not eliminate computer configurations that are outside of a budget from consideration. In this manner, referring back to
Therefore, in accordance with example implementations, all computer configurations listed in the application profile may appear in the budget-based computer configuration ranking. However, the order in which the computer configurations appear is a function of the budget. This allows, for example, a computer configuration that has a price below the budget to appear in the final ranking and depending on its application usage metrics, may possibly appear within the top ranked configurations. In a similar manner, a computer configuration that has a price above the budget may appear in the final ranking as one of the top-ranked configurations. Thus, in accordance with example implementations, the user can consider computer configurations that meet the usage criteria set forth in the application profile 150 but fall outside of the user-provided budget.
While the present disclosure has been described with respect to a limited number of implementations, those skilled in the art, having the benefit of this disclosure, will appreciate numerous modifications and variations therefrom. It is intended that the appended claims cover all such modifications and variations
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US2017/055275 | 10/5/2017 | WO | 00 |