The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein:
Referring to
For convenience, the term “connection” is used herein to refer to a connection that has been established between the computer client and a particular server or file source. Similarly, the term “connections” is used herein to refer to a number of connections that have been established between the computer client and each of a plurality of discrete servers or file sources.
In embodiments of the invention, a configurable number of such source connections are initially opened. It will be appreciated that the number of initial connections can be dependent on the size of the file being downloaded. The transfer rates of these initial connections are not checked to see if the configuration of initial connections provides saturation, as such term is described hereinafter.
After all the initial source connections have been started and given a time to stabilize, the over-all transfer speed of the initial connections is measured. Then, another connection is opened and given the same amount of time to stabilize. Thereupon, the new over-all transfer speed is measured, along with the individual transfer speed of the last added connection. The last connection is deemed necessary only if it is found to increase the over-all transfer rate by a transfer rate improvement factor, which comprises a certain percentage of the last connection transfer rate. This percentage or factor is used in an algorithm as described hereinafter. If the last connection is found to be necessary, another connection is opened, and the algorithm is again referred to. This process is continually repeated, with a new connection being added for each repetition, until adding another connection does not increase the over-all transfer rate by at least a specified percentage of the transfer rate of the last added connection.
Referring to
Referring further to
An operating system runs on processor 302 and is used to coordinate and provide control of various components within data processing system 300 shown in
In embodiments of the invention, a basic concept is to add a new connection to a client, to join a group of previous connections. The over-all transfer rate, including effects of the new connection, is then measured and an assessment is made to determine whether adding the new connection has significantly increased the over-all transfer rate. The assessment is carried out by using a saturation indicator value derived from an algorithm, as described hereinafter in connection with
On the other hand, if the assessment shows that the new connection has significantly increased the over-all transfer rate, another connection is added, and the over-all transfer rate with this connection is assessed. Generally, the process of adding a connection, and then assessing the over-all transfer rate with the added connection, continues until saturation is reached. The total number of connections when saturation occurs is taken to be the optimal number for the client and its associated servers, to use for the particular intended file transfer.
Referring to
Following the stabilization period, the over-all transfer rate M of the initial connections is measured, as indicated by step 406. The rate M could, for example, be 700 KB/s. As discussed above, over-all transfer rate is the rate at which file information is transferred by the collective operation of all the sources that are connected to the client, at a particular time. After the measurement of M, step 408 shows that an additional connection to the client is started, and this connection is allowed to stabilize during the pre-defined time period. Thereafter, over-all transfer rate T is measured, as shown by step 410, wherein T represents the collective transfer effects of the initial connections and the additional connection. At step 410 a transfer rate I is also measured, wherein I is the individual transfer rate of the additional connection.
Referring further to
As stated above, the saturation indicator value is used to assess the over-all transfer rate of the connections, following addition of a new connection. In accordance with such teaching, step 414 shows T being compared with SIV, to determine which is greater. If T is found to be greater than SIV, it is concluded that the last added connection did not saturate the network connection, and is thus benefiting the over-all transfer rate. Therefore, a new connection is added as shown by step 416, and the value of I for the new connection and the new over-all transfer rate of T are measured, as shown by step 418. These values are then used in repeating steps 412 and 414. Such process is continually repeated, with another connection being added for each repetition, until step 414 produces a negative decision.
Step 420 shows that the client connections are at saturation, when the over-all transfer rate for a particular number of connections is found to be less than the saturation indicator value therefor. The total number of connections in place when this occurs is determined to be the optimal number for the intended file transfer.
The invention can take the form of an entirely hardware embodiment, an entirely software embodiment or an embodiment containing both hardware and software elements. In a preferred embodiment, the invention is implemented in software, which includes but is not limited to firmware, resident software, microcode, etc.
Furthermore, the invention can take the form of a computer program product accessible from a computer-usable or computer-readable medium providing program code for use by or in connection with a computer or any instruction execution system. For the purposes of this description, a computer-usable or computer readable medium can be any tangible apparatus that can contain, store, communicate, propagate, or transport the program for use by or in connection with the instruction execution system, apparatus, or device.
The medium can be an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system (or apparatus or device) or a propagation medium. Examples of a computer-readable medium include a semiconductor or solid state memory, magnetic tape, a removable computer diskette, a random access memory (RAM), a read-only memory (ROM), a rigid magnetic disk and an optical disk. Current examples of optical disks include compact disk—read only memory (CD-ROM), compact disk—read/write (CD-R/W) and DVD.
A data processing system suitable for storing and/or executing program code will include at least one processor coupled directly or indirectly to memory elements through a system bus. The memory elements can include local memory employed during actual execution of the program code, bulk storage, and cache memories which provide temporary storage of at least some program code in order to reduce the number of times code must be retrieved from bulk storage during execution.
Input/output or I/O devices (including but not limited to keyboards, displays, pointing devices, etc.) can be coupled to the system either directly or through intervening I/O controllers.
Network adapters may also be coupled to the system to enable the data processing system to become coupled to other data processing systems or remote printers or storage devices through intervening private or public networks. Modems, cable modem and Ethernet cards are just a few of the currently available types of network adapters.
The description of the present invention has been presented for purposes of illustration and description, and is not intended to be exhaustive or limited to the invention in the form disclosed. Many modifications and variations will be apparent to those of ordinary skill in the art. The embodiment was chosen and described in order to best explain the principles of the invention, the practical application, and to enable others of ordinary skill in the art to understand the invention for various embodiments with various modifications as are suited to the particular use contemplated.