Mechanism for automatic network data compression on a network connection
First Claim
1. A method comprising:
- prior to sending data from a first device to a second device over a network connection, performing the steps of;
performing a compression operation on at least one sample that has a first size;
determining a first amount of time that was required to perform the compression operation;
determining a second size of compressed data produced by the compression operation;
based, at least in part, on the first size and an achievable rate of the network connection, determining a first value that estimates a cost of transmitting the data over the network connection without compression;
based, at least in part, on the second size, the first amount of time, and the achievable rate of the network connection, determining a second value that estimates a cost of transmitting the data over the network connection with pre-transmission compression; and
determining whether to perform pre-transmission compression on at least a portion of the data based, at least in part, on whether the second value is less than the first value;
responsive to determining to perform pre-transmission compression on the at least a portion of the data, causing the first device to compress the at least a portion of the data prior to transmitting the at least a portion of the data to the second device; and
responsive to determining to not perform pre-transmission compression on the at least a portion of the data, causing the first device to send the at least a portion of the data to the second device without compression;
wherein the compression operation is a first compression operation using a first technique;
wherein the at least a portion of the data is a first flight of a plurality of flights of the data;
wherein the first flight is compressed using the first technique prior to being transmitted across the network connection;
while the first flight is being transmitted, tracking compression times and sizes produced by compressing the first flight using the first technique; and
based, at least in part on the compression times and sizes produced by compressing the first flight using the first technique, determining whether to compress a second flight of the data using the first technique prior to transmitting the second flight across the network connection;
after transmission of the first flight has been initiated, and before transmission of a second flight of the data is initiated, performing the steps of;
performing a second compression operation that uses a second technique to compress at least one sample from the first flight;
determining a second amount of time that was required to perform the second compression operation;
determining a third size of compressed data produced by the second compression operation; and
based, at least in part, on the third size, the second amount of time, and the achievable rate of the network connection, determining a third value that estimates a cost of transmitting the data over the network connection with pre-transmission compression using the second technique; and
based, at least in part on the third value, determining whether to send the second flight with pre-transmission compression using the first technique, with pre-transmission compression using the second technique, or with no pre-transmission compressionwherein the method is performed by one or more computing devices.
1 Assignment
0 Petitions
Accused Products
Abstract
The techniques are provided automatically detecting when performing pre-transmission compression on data to be sent over a network connection will be preferable to sending the data uncompressed, and for automatically performing pre-transmission compression only when doing so is determined to be beneficial. The techniques involve performing compression on sample data. The time it takes to perform the compression on the sample data, along with the reduction in size achieved by the compression, are factors used to automatically determine whether compressing data before sending the data over a network connection will achieve better results that sending the data uncompressed. In some embodiments, multiple compression algorithm/compression level combinations are tested at different points in the transmission. At each point, the sending device may switch to the algorithm/level combination that is producing the best results on the current sample.
-
Citations
14 Claims
-
1. A method comprising:
-
prior to sending data from a first device to a second device over a network connection, performing the steps of; performing a compression operation on at least one sample that has a first size; determining a first amount of time that was required to perform the compression operation; determining a second size of compressed data produced by the compression operation; based, at least in part, on the first size and an achievable rate of the network connection, determining a first value that estimates a cost of transmitting the data over the network connection without compression; based, at least in part, on the second size, the first amount of time, and the achievable rate of the network connection, determining a second value that estimates a cost of transmitting the data over the network connection with pre-transmission compression; and determining whether to perform pre-transmission compression on at least a portion of the data based, at least in part, on whether the second value is less than the first value; responsive to determining to perform pre-transmission compression on the at least a portion of the data, causing the first device to compress the at least a portion of the data prior to transmitting the at least a portion of the data to the second device; and responsive to determining to not perform pre-transmission compression on the at least a portion of the data, causing the first device to send the at least a portion of the data to the second device without compression; wherein the compression operation is a first compression operation using a first technique; wherein the at least a portion of the data is a first flight of a plurality of flights of the data; wherein the first flight is compressed using the first technique prior to being transmitted across the network connection; while the first flight is being transmitted, tracking compression times and sizes produced by compressing the first flight using the first technique; and based, at least in part on the compression times and sizes produced by compressing the first flight using the first technique, determining whether to compress a second flight of the data using the first technique prior to transmitting the second flight across the network connection; after transmission of the first flight has been initiated, and before transmission of a second flight of the data is initiated, performing the steps of; performing a second compression operation that uses a second technique to compress at least one sample from the first flight; determining a second amount of time that was required to perform the second compression operation; determining a third size of compressed data produced by the second compression operation; and based, at least in part, on the third size, the second amount of time, and the achievable rate of the network connection, determining a third value that estimates a cost of transmitting the data over the network connection with pre-transmission compression using the second technique; and based, at least in part on the third value, determining whether to send the second flight with pre-transmission compression using the first technique, with pre-transmission compression using the second technique, or with no pre-transmission compression wherein the method is performed by one or more computing devices. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. One or more non-transitory storage media storing instructions which, when executed by one or more computing devices, cause performance of a method comprising:
-
prior to sending data from a first device to a second device over a network connection, performing the steps of; performing a compression operation on at least one sample that has a first size; determining a first amount of time that was required to perform the compression operation; determining a second size of compressed data produced by the compression operation; based, at least in part, on the first size and an achievable rate of the network connection, determining a first value that estimates a cost of transmitting the data over the network connection without compression; based, at least in part, on the second size, the first amount of time, and the achievable rate of the network connection, determining a second value that estimates a cost of transmitting the data over the network connection with pre-transmission compression; and determining whether to perform pre-transmission compression on at least a portion of the data based, at least in part, on whether the second value is less than the first value; responsive to determining to perform pre-transmission compression on the at least a portion of the data, causing the first device to compress the at least a portion of the data prior to transmitting the at least a portion of the data to the second device; and responsive to determining to not perform pre-transmission compression on the at least a portion of the data, causing the first device to send the at least a portion of the data to the second device without compression; wherein the compression operation is a first compression operation using a first technique; wherein the at least a portion of the data is a first flight of a plurality of flights of the data; wherein the first flight is compressed using the first technique prior to being transmitted across the network connection; while the first flight is being transmitted, tracking compression times and sizes produced by compressing the first flight using the first technique; and based, at least in part on the compression times and sizes produced by compressing the first flight using the first technique, determining whether to compress a second flight of the data using the first technique prior to transmitting the second flight across the network connection; after transmission of the first flight has been initiated, and before transmission of a second flight of the data is initiated, performing the steps of; performing a second compression operation that uses a second technique to compress at least one sample from the first flight; determining a second amount of time that was required to perform the second compression operation; determining a third size of compressed data produced by the second compression operation; and based, at least in part, on the third size, the second amount of time, and the achievable rate of the network connection, determining a third value that estimates a cost of transmitting the data over the network connection with pre-transmission compression using the second technique; and based, at least in part on the third value, determining whether to send the second flight with pre-transmission compression using the first technique, with pre-transmission compression using the second technique, or with no pre-transmission compression. - View Dependent Claims (9, 10, 11, 12, 13, 14)
-
Specification