# US 9,519,490 B2 · Adaptive data synchronization

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 9,519,490 B2
- Document ID: US9519490B2
- Status: Granted
- Kind: B2
- Application number: 13/788,684
- Filed: 2013-03-07
- Published: 2014-09-11
- Granted: 2016-12-13
- Earliest claimed: 2013-03-07
- Assignees: Microsoft Technology Licensing, LLC
- Applicants: Microsoft Corporation
- Inventors: Jeroen Vanturennout; Jason Wadsworth; Yuanquan Zhang; Ranjib Singh Badh; Hari Pulapaka; Alain Gefflaut; Eyal Axelrod
- Web page: https://patentgrep.com/patent/US9519490B2

## CPC

- G06F 9/4887: {involving deadlines, e.g. rate based, periodic}
- G06F 9/4406: {Loading of operating system}
- G06F 9/4893: {taking into account power or heat criteria (power management in computers in general G06F1/3203; thermal management in computers in general G06F1/206)}
- G06F 9/5011: {the resources being hardware resources other than CPUs, Servers and Terminals}
- H04L 47/70: Admission control; Resource allocation
- H04L 67/60: Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources (admission control or resource allocation H04L47/70)
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

In one embodiment, an application module 114 may adjust a synchronization scheme 306 based on the operational state of a computing device 110. An operating system 112 may determine an operational state for a computing device 110. The operating system 112 may assign a synchronization allotment 304 to the application module 114 based on the operational state. A synchronization engine 116 of the application module 114 may implement a synchronization scheme 306 based on the synchronization allotment 304.

## Claims

### Claim 1

A method implemented by a computing device having a display screen and a processor executing instructions to provide an operating system, comprising:
determining an operational state of the computing device using the operating system, the operational state representing an amount of synchronization resources available at the computing device based on a combination of one or more of a power state describing a source of power provided to the computing device, a screen state describing a brightness level of the display screen, a network state describing connectivity type of the computing device to a data network, or a processing state describing usage of a processing power of the computing device;
mapping first and second portions of the amount of synchronization resources into a first synchronization allotment and a second synchronization allotment that is different than the first synchronization allotment; and
assigning the first and second synchronization allotments to first and second application modules based on first and second priority levels associated with the first and second application modules, respectively, the assigned first and second synchronization allotments alerting the first and second application modules as to the first and second portions of the amount of synchronization resources available for use by the first and second application modules, respectively.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
setting the first and second priority levels for the first and second application modules.

### Claim 3 (depends on 1)

The method of claim 1, further comprising:
determining an application state for each of the first and second application modules.

### Claim 4 (depends on 1)

The method of claim 1, further comprising:
determining an application state for each of the first and second application modules;
and determining the operational state includes determining the operational state based on the determined application states associated with the first and second application modules.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
communicating the first and second synchronization allotments to the first and second application modules, respectively.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
identifying a state change for the determined operational state.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
identifying a state change for the determined operational state; and
adjusting at least one of the first or second synchronization allotment based on the identified state change for the operational state.

### Claim 8 (depends on 1)

The method of claim 1, further comprising:
differentiating the first and second synchronization allotments for the first and second application modules based on a corresponding execution characteristic of the first and second application modules.

### Claim 9 (depends on 1)

The method of claim 1, wherein determining the operational state includes:
determining the operational state based on at least two of the power state, the screen state, the network state, or the processing state.

### Claim 10 (depends on 1)

The method of claim 1, further comprising:
presenting the first or second synchronization allotment as at least one of a high level allotment or a low level allotment.

### Claim 11

A computing device, comprising:
a processor;
a display screen operatively coupled to the processor; and
a memory containing instructions executable by the processor to cause the processor to perform a process including:
monitoring one or more of a power state describing a source of power provided to the computing device, a screen state describing a brightness level of the display screen, a network state describing connectivity type of the computing device to a data network, or a processing state describing usage of a processing power of the computing device;
determining an amount of synchronization resources available at the computing device based on the monitored one or more of the power state, the screen state, the network state, or the processing state of the computing device;
dividing the determined amount of synchronization resources into a first synchronization allotment and a second synchronization allotment that is different than the first synchronization allotment; and
assigning the first and second synchronization allotments to first and second application modules based on first and second priority levels associated with the first and second application modules, respectively, the assigned first and second synchronization allotments allowing the first and second application modules to consume a corresponding portion of the amount of synchronization resources available at the computing device.

### Claim 12 (depends on 11)

The computing device of claim 11 wherein monitoring one or more of the power state includes determining whether the computing device is on battery power or is connected to a power grid.

### Claim 13 (depends on 11)

The computing device of claim 11 wherein the process further includes:
determining an application state for each of the first and second application modules, the application state includes under active use, executing in background, or dormant; and
determining the amount of synchronization resources includes determining the amount of synchronization resources based on the determined application states associated with the first and second application modules.

### Claim 14 (depends on 11)

The computing device of claim 11 wherein the process further includes:
identifying a change in one or more of the monitored power state, screen state, network state, or processing state; and
updating the amount of synchronization resources available at the computing device based on the identified change.

### Claim 15 (depends on 11)

The computing device of claim 11 wherein the process further includes:
identifying a change in one or more of the monitored power state, screen state, network state, or processing state;
updating the amount of synchronization resources available at the computing device based on the identified change; and
adjusting at least one of the first or second synchronization allotment based on the updated amount of synchronization resources available at the computing device.

### Claim 16 (depends on 11)

The computing device of claim 11 wherein the process further includes:
identifying a change in one or more of the monitored power state, screen state, network state, or processing state;
updating the amount of synchronization resources available at the computing device based on the identified change; and
increasing at least one of the first or second synchronization allotment based on the updated amount of synchronization resources available at the computing device.

### Claim 17

A method implemented by a computing device having a display screen and a processor executing instructions to provide an operating system, comprising:
receiving, from the operating system, a synchronization allotment indicating an amount of synchronization resources allowed to be consumed by an application module, the amount of synchronization resources being a portion of a total amount of synchronization resources available at the computing device based on a combination of one or more of a power state describing a source of power provided to the computing device, a screen state describing a brightness level of the display screen, a network state describing connectivity type of the computing device to a data network, or a processing state describing usage of a processing power of the computing device;
scaling a synchronization protocol associated with the application module in accordance with the received synchronization allotment, the synchronization protocol including one or more of a synchronization scope, a synchronization schedule, a synchronization duration, or a synchronization data quota; and
synchronizing, with the application module, data at the computing device with data located in a remote server via a computer network based on the scale synchronization protocol, wherein;
the application module includes a first sub-module and a second sub-module; the method further includes:
assigning a first portion of the received synchronization allotment to the first submodule;
assigning a second portion of the received synchronization allotment to the second sub-module; and wherein the first portion is different than the second portion.

### Claim 18 (depends on 17)

The method of claim 17, further comprising:
receiving an updated synchronization allotment; and in response to receiving the updated synchronization allotment, dynamically adjusting the synchronization protocol based on the received updated synchronization allotment.

### Claim 19 (depends on 17)

The method of claim 17 wherein scaling the synchronization protocol includes one or more of:
a timing of synchronization;
a frequency of synchronization;
a scope of synchronization; or
a duration of synchronization of the data at the computing device with the data located in a remote server.
