UTILIZING VERSION VECTORS ACROSS SERVER AND CLIENT CHANGES TO DETERMINE DEVICE USAGE BY TYPE, APP, AND TIME OF DAY
Technology is disclosed for utilizing version vector data of computing devices to optimize performance of the computing devices and/or other computer systems that provide various services to the computing devices (“the technology”). One embodiment includes analyzing version vectors of the computing devices to determining a user's usage pattern, such as the type of computing device used, the computer applications used on the computing device, and the time of day of usage. This information about usage pattern and other information that can be determined using the version vectors can enable system optimizations on both individual user level and a group of users level. For example, on the individual user level, knowing user's usage pattern may enable automatic file synchronization between multiple devices without user intervention. On the group level, a service provider may allocate resources (servers, bandwidth, etc.) to accommodate the group's usage pattern.
1 . A computer-implemented method of optimizing system performance, the method comprising:
generating a version vector, the version vector including a plurality of attributes associated with a computing device;
analyzing the attributes from the version vector to determine a usage pattern of a user of the computing device; and
adjusting a configuration of the computing device based on the usage pattern.
2 . The computer-implemented method of claim 1 , wherein the version vector is generated by one or more of the computing device, a server, or a decentralized operating system (“DCOS”) in a communication network.
3 . The computer-implemented method of claim 1 , wherein the attributes associated with the computing device include one or more of a type of the computing device, one or more computer applications being used by the user, a time of day when the user used the computer applications, and a location where the user used the computer applications.
4 . The computer-implemented method of claim 1 , wherein the usage pattern of the user includes one or more of a type of computing device used by the user, one or more computer applications being used by the user, a time of day when the user used the computer applications, and a location where the user used the computer applications.
5 . The computer-implemented method of claim 1 , wherein the adjusting includes adjusting one or more of a power consumption, a CPU running time, a network component running time, a network bandwidth, an amount of data to be downloaded, and a determination of when to push data, according to the usage pattern.
6 . The computer-implemented method of claim 1 , wherein the adjusting includes compressing a plurality of applications on a plurality of computing devices when the usage pattern indicates that the user is unlikely to use said applications on said computing devices.
7 . The computer-implemented method of claim 1 , wherein the adjusting includes downloading low resolution images for a computer application, if the usage pattern indicates that the user uses the computer application on a mobile computing device, including one or more of smartphones and tablets.
8 . The computer-implemented method of claim 1 , wherein the adjusting includes, when the computing device is low on battery, prioritizing a plurality of tasks according to the usage pattern, wherein the prioritizing comprises:
performing a backup process to save data and a state of a plurality of computer applications;
disabling a set of the computer applications whose usage is less than a specific threshold; and
notifying, to the user, when to switch to another computing device.
9 . The computer-implemented method of claim 1 , wherein the adjusting includes synchronizing data between a plurality of computing devices, the synchronizing comprising:
generating a first version vector, the first version vector corresponding to updates to a file occurred on a first computing device of the computing devices;
generating a second version vector, the second version vector corresponding to updates to the file occurred on the second computing device of the computing devices;
when the updates corresponding to the first computing device and the updates corresponding to the second computing device occurred concurrently, selecting, by the user, which of the updates are applied to the file in order to synchronize the file on the first and second computing devices;
analyzing the first version vector and the second version vector to determine a usage pattern of the user's selection of updates, based on a synchronization attribute, the synchronization attributes including one or more of a computing device on which the update was selected, a time of day the update is selected, or a location of the computing device on which the update is selected; and
automatically select updates to the file when synchronization is needed in the future, according to the usage pattern and without the user's intervention.
10 . The computer-implemented method of claim 1 , wherein the usage pattern is determined for a group of users.
11 . The computer-implemented method of claim 10 , further comprising: adjusting a server based on the usage pattern, the server providing a service to the computing device.
12 . The computer-implemented method of claim 10 , wherein the adjusting includes recommending a computer application to be downloaded on the computing device, according to the usage pattern.
13 . An apparatus comprising:
a version vector module for generating a plurality of version vectors corresponding to a plurality of attributes of the apparatus, the attributes including a computing device on which a user accessed particular application, a time of the day the user accessed the computing device or the application, and a location of the computing device at which the user accessed the computing device or the application;
a storage system for storing a plurality of data files related to the version vectors;
a processor for running an operating system and the version vector module, and analyzing the attributes from the version vectors to determine a usage pattern of a user of the computing device; and
an adjusting module for adjusting a configuration of the computing device based on the usage pattern.
14 . The apparatus of claim 13 , wherein the apparatus is a personal computing device or a server connected to a communication network.
15 . The apparatus of claim 13 , wherein the adjusting module is further configured to adjust one or more of power consumption of the apparatus, a CPU running time of the apparatus, a network component running time of the apparatus, a network bandwidth, an amount of data to be downloaded to the apparatus, and a determination of when to push data from the apparatus, according to the usage pattern.
16 . The apparatus of claim 13 , wherein the processor is further configured to determine the usage pattern for a group of users.
17 . The apparatus of claim 13 , wherein the adjusting module is further configured to compress a plurality of applications on a plurality of computing devices, when the usage pattern indicates that the user is unlikely to use said applications on said computing devices.
18 . The apparatus of claim 13 , wherein the adjusting module is further configured to download low resolution pictures for a computer application, if the usage pattern indicates that the user uses the computer application on a mobile computing device, including one or more of smartphones and tablets.
19 . The apparatus of claim 13 , wherein the adjusting module is further configured to, when the computing device is low on battery, prioritizing a plurality of tasks according to the usage pattern, wherein the prioritizing comprises:
performing a backup process to save data and a state of a plurality of computer applications;
disabling a set of the computer applications whose usage is less than a specific threshold; and
notifying, to the user, when to switch to another computing device.
20 . A computer-implemented method for synchronizing data between a plurality of computing devices, the method comprising:
generating a first version vector, the first version vector corresponding to updates to a file occurred on a first computing device of the computing devices;
generating a second version vector, the second version vector corresponding to updates to the file occurred on a second computing device of the computing devices;
when the updates corresponding to the first computing device and the updates corresponding to the second computing device occurred concurrently, selecting, by the user, which of the updates are applied to the file in order to synchronize the file on the first and second computing devices;
analyzing the first version vector and the second version vector to determine a usage pattern of the user's selection of the updates, based on a synchronization attribute, the synchronization attribute including one or more of a computing device on which the update applied to file is selected by the user, a time of the day the update is selected, a location of the computing device when the update is selected; and
automatically select an update to the file when synchronization is needed in the future, according to the usage pattern and without the user's intervention.