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 purposes 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 figures, wherein:
Referring now to the figures, and in particular, referring to
Those skilled in the art will appreciate that network 100 can include many additional components not specifically illustrated in
Data processing system 200 couples to Internet 204 to connect to remote computers (e.g., servers 106a-n and/or other clients 102a-n) via network adapter 206. Network adapter 206 is preferably implemented as an Ethernet adapter, but those with skill in the art will appreciate that a wireless adapter utilizing IEEE 802.11x, telephone modem, or any other system utilized for accessing a network may be utilized. Hard disk drive 208 is utilized for high-capacity, non-volatile storage.
Preferably, system memory 112 may be implemented as a collection of dynamic random access memory (DRAM) modules. As illustrated, system memory 210 includes operating system 212, which further includes shell 216 for providing transparent user access to resources such as application programs 220. Generally, shell 216 is a program that provides an interpreter and an interface between the user and the operating system. More specifically, shell 216 executes commands that are entered into a command line user interface or a file. Thus, shell 216 (as it is called in UNIX®), also called a command processor in Windows®, is generally the highest level of the operating system software hierarchy and servers as a command interpreter. The shell provides a system prompt, interprets commands entered by keyboard, mouse, or other user input media, and sends the interpreted command(s) to the appropriate lower levels of the operating system (e.g., kernel 214) for processing. Note that while shell 216 is a text-based, line-oriented user interface, the present invention will support other user interface modes, such as graphical, voice, gestural, etc. equally well.
As illustrated, operating system 212 also includes kernel 214, which includes lower levels of functionality for operating system 212, including providing essential services required by other parts of operating system 212 and application programs 220, including memory management, process and task management, disk management, and mouse and keyboard management. Application programs 220 may include word processors, spreadsheets, and other application programs. Download manager 218 requests and manages multi-connection downloads, as discussed herein in more detail in conjunction with
Those skilled in the art will appreciate that data processing system 200 can include many additional components not specifically illustrated in
The process continues to step 312, which illustrates download manager 218 determining if the overall transfer rate is less than the ideal number of connections times the minimum threshold transfer rate. If the overall transfer rate is not less than the ideal number of connections times the minimum threshold transfer rate, the process continues to step 318, which illustrates download manager 218 maintaining all the current connections (i.e., does not drop any connections). The process returns to step 310 and proceeds in an iterative fashion.
Returning to step 312, if the overall transfer rate is less than the ideal number of connections times the minimum threshold transfer rate, the process continues to step 314, which illustrates download manager 218 starting an additional connection to gauge the client's overall bandwidth. If the bandwidth is determined to be saturated (i.e., the additional connection does not take up substantial additional bandwidth), the process continues to step 318 and proceeds in an iterative fashion. If the bandwidth is not saturated, the process returns to step 310 and proceeds in an iterative fashion.
For example, assume that download manager 218 determines three connections is the ideal number of initial connections. Download manager 218 starts three connections, and after their transfer rates stabilize, the individual transfer rates are gauged. Assume that the minimum threshold data transfer rate is set to 30 KB/s.
Also, assume that the individual transfer rates are:
connection 1: 800 KB/s
connection 2: 750 KB/s
connection 3: 20 KB/s
total transfer rate: 1570 KB/s
Since the total transfer rate (1570 KB/s) is greater than 3 (the initial number of connections) times 30 KB/s (the minimum threshold data transfer rate), any connection transferring at less than 30 KB/s is dropped by download manager 218. In this case, connection 3 (20 KB/s) is dropped.
However, in another example, assume that the transfer rates are:
connection 1: 28 KB/s
connection 2: 35 KB/s
connection 3: 20 KB/s
total transfer rate: 83 KB/s
Since the total transfer rate (83 KB/s) is less than 3 (number of initial connections) times 30 KB/s (the minimum threshold data transfer rate), no connection is dropped by download manager 218 regardless of the fact that some of the connections are transferring data at less than the minimum threshold.
As discussed, the present invention includes a method, system, and computer-usable medium for dropping slow connections during a multi-connection download. In a preferred embodiment of the present invention, a download manager establishes a predetermined number of connections between a client and a predetermined number of servers. The download manager sets a minimum threshold data transfer rate for the client for a particular connection and drops a first connection that is transferring data at a rate below the minimum threshold if an overall transfer rate of a download after dropping the first connection is greater than the predetermined number of connections times the minimum threshold data transfer rate.
It should be understood that at least some aspects of the present invention may alternatively be implemented in a computer-usable medium that contains a program product. Programs defining functions in the present invention can be delivered to a data storage system or a computer system via a variety of signal-bearing media, which include, without limitation, non-writable storage media (e.g., CD-ROM), writable storage media (e.g., hard disk drive, read/write CD-ROM, optical media), system memory such as, but not limited to Random Access Memory (RAM), and communication media, such as computer and telephone networks, including Ethernet, the Internet, wireless networks, and like network systems. It should be understood, therefore, that such signal-bearing media when carrying or encoding computer readable instructions that direct method functions in the present invention represent alternative embodiments of the present invention. Further, it is understood that the present invention may be implemented by as a system having means in the form of hardware, software, or a combination of software and hardware as described herein or their equivalent.
While the present invention has been particularly shown and described with reference to a preferred embodiment, it will be understood by those skilled in the art that various changes in form and detail may be made therein without departing from the spirit and scope of the invention. Furthermore, as utilized in the specification and the appended claims, the term “computer” or “system” or “computer system” or “computing device” includes any data processing system including, but not limited to, personal computers, servers, workstations, network computers, main frame computers, routers, switches, personal digital assistants (PDAs), telephones, and any other system capable of processing, transmitting, receiving, capturing, and/or storing data.
The present application is related to the following co-pending U.S. patent applications: U.S. patent application Ser. No. 11/256,261 (Docket No. AUS920050797US1) filed on Oct. 21, 2005; U.S. patent application Ser. No. 11/256,260 (Docket No. AUS920050798US1) filed on Oct. 21, 2005; and U.S. patent application Ser. No. 11/256,259 (Docket No. AUS920050799US1) filed on Oct. 21, 2005. The above-mentioned patent applications are assigned to the assignee of the present invention and are incorporated herein by reference in their entirety.