Energy-aware code offload for mobile devices
Abstract
A method described herein includes an act of, at a mobile computing device, receiving an indication that a portion of code of a program executing on the mobile computing device is to be offloaded to a second computing device for execution on the second computing device, wherein the indication is based at least in part upon an estimated energy savings of the mobile computing device by offloading the portion of the code for execution on the second computing device. The method also includes an act of transmitting data to the second computing device that causes the second computing device to execute the portion of the code.
Claims
exact text as granted — not AI-modifiedWhat is claimed is:
1 . A first computing device in network communication with a second computing device, the first computing device comprising:
a processor; and memory that comprises:
a program that is executable by the processor, wherein the program includes a portion of code; and
instructions that, when executed by the processor, cause the processor to perform acts comprising:
receiving an indication that the portion of code is to be offloaded to the second computing device for execution at the second computing device rather than at the first computing device, wherein the indication is based upon an estimate of energy savings for the first computing device by offloading the portion of code for execution at the second computing device rather than executing the portion of code at the first computing device; and
responsive to receiving the indication and prior to executing the portion of the code, transmitting data from the first computing device to the second computing device, wherein the data, when received by the second computing device, causes the second computing device to execute the portion of code.
2 . The first computing device of claim 1 , wherein the first computing device is a mobile telephone.
3 . The first computing device of claim 2 , wherein the second computing device is a server computing device.
4 . The first computing device of claim 1 , wherein the portion of code is written in a type-safe language.
5 . The first computing device of claim 1 , wherein the portion of code in the program is labeled as being offloadable in the program.
6 . The first computing device of claim 1 , wherein the portion of code is a method, and further wherein transmitting the data from the first computing device to the second computing device comprises transmitting a portion of a program state to the second computing device, wherein the second computing device executes the method using the portion of the program state.
7 . The first computing device of claim 6 , the acts further comprising:
subsequent to transmitting the data from the first computing device to the second computing device, receiving, from the second computing device, a second portion of the program state; and responsive to receiving the second portion of the program state, continuing to execute the program at the first client computing device based upon the second portion of the program state.
8 . The first computing device of claim 1 , wherein the processor executes a virtual machine, and further wherein the processor executes a portion of the program in the virtual machine.
9 . The first computing device of claim 1 , the acts further comprising:
prior to receiving the indication, transmitting the program to the second computing device.
10 . The first computing device of claim 1 , the acts further comprising:
generating an estimate of data throughput between the first computing device and the second computing device; and transmitting the estimate of data throughput to the second computing device, wherein the estimate of energy savings is based upon estimate of data throughput between the first computing device and the second computing device.
11 . A method performed at a first computing device that is in network communication with a second computing device, the method comprising:
prior to executing a portion of a computer program at the first computing device, receiving an indication that the portion of the computer program is to be executed at the second computing device rather than at the first computing device, wherein the indication is received due to an estimate that less energy will be consumed by the first computing device by offloading the portion of the computer program for execution at the second computing device rather than executing the portion of the computer program at the first computing device; and responsive to receiving the indication, transmitting data to the second computing device that causes the portion of the computer program to be executed at the second computing device, wherein the first computing device refrains from executing the portion of the computer program.
12 . The method of claim 11 , wherein the data transmitted to the second computing device comprises state information for the computer program, wherein the second computing device executes the portion of the program based upon the state information for the computer program.
13 . The method of claim 12 , further comprising:
subsequent to transmitting the data to the second computing device, receiving second state information from the second computing device; and responsive to receiving the second state information, continuing to execute the computer program at the first computing device using the second state information.
14 . The method of claim 12 , wherein the portion of the computer program is a method that is labeled in the computer program as being offloadable from the first computing device to the second computing device.
15 . The method of claim 11 , further comprising computing the estimate based upon an estimate of data throughput between the first computing device and the second computing device.
16 . The method of claim 11 , further comprising:
generating an estimate of data throughput between the first computing device and the second computing device, wherein the second computing device computes the estimate that less energy will be consumed by the first computing device by offloading the portion of the computer program for execution at the second computing device rather than executing the portion of the computer program at the first computing device based upon the estimate of data throughput.
17 . The method of claim 11 , wherein the first computing device and the second computing device are in communication with one another by way of one of a Bluetooth connection or a Wi-Fi connection.
18 . A computer-readable storage medium of a first computing device, wherein the computer-readable storage medium comprises:
a program that is to be executed by the first computing device; and instructions that, when executed by a processor of the first computing device, cause the processor to perform acts comprising:
receiving, from a second computing device that is in network communication with the first computing device, an indication that a portion of the program is to be offloaded from the first computing device for execution at the second computing device, wherein the indication is received prior to the first computing device executing the portion of the program, and further wherein the indication is received based upon an estimate of energy savings computed by the second computing device, wherein the estimate of energy savings is indicative of an amount of energy of the first computing device that is estimated to be saved by offloading the portion of the program for execution at the second computing device rather than executing the portion of the program at the first computing device; and
responsive to receiving the indication that the portion of the program is to be offloaded from the first computing device for execution at the second computing device, transmitting data to the second computing device that causes the second computing device to execute the portion of the program.
19 . The computer-readable storage medium of claim 18 , the acts further comprising:
executing the program until the portion of the program is reached; responsive to the portion of the program being reached, ceasing to execute the program; and responsive to receiving an indication that the second computing device has completed execution of the portion of the program, continuing to execute the program.
20 . The computer-readable storage medium of claim 19 , the acts further comprising:
when the portion of the program is reached, transmitting first state information of the computer program to the second computing device, wherein the second computing device executes the portion of the program using the first state information, and further wherein the second computing device transmits second state information of the program to the first computing device subsequent to the second computing device executing the portion of the program, wherein the indication that the second computing device has completed execution of the portion of the program comprises the second state information, and further when the first computing device continues to execute the program using the second state information.Join the waitlist — get patent alerts
Track US2018196493A1 — get alerts on status changes and closely related new filings.
We store only your email — no account needed. See our privacy policy.