- RADIANT Lab @LANL
http://public.lanl.gov/radiant/pubs.html
- Optimizing GridFTP Through Dynamic Right-Sizing.
S. Thulasidasan, W. Feng, and M. Gardner
IEEE Symposium on High-Performance Distributed Computing. (HPDC-12/2003), Seattle WA, June 2003.
[LA-UR 03-2486] (8 pages - postscript, 339K; PDF, 267K)
- Routing and Scheduling Large File Transfers over Lambda Grids.
A. Banerjee, W. Feng, D. Ghosal, and B. Mukherjee
The 3rd International Workshop on Protocols for Fast Long-Distance Networks (PFLDnet'05), Lyon, France, February 2005.
[LA-UR 05-7911] (5 pages - PDF, 576K) - Scheduling and Transport for File Transfers on High-Speed Optical Circuits.
M. Veeraraghavan, X. Zheng, W. Feng, H. Lee, E. Chong, and H. Li
Journal of Grid Computing, Vol. 1, No. 4, June 2004.
[LA-UR 04-2008] (18 pages - PDF,195K)
Dynamic Right-Sizing (DRS) Software Distribution
This is the official distribution site for DRS.
Dynamic Right-Sizing provides automatic tuning of TCP flow control windows to support high bandwidth over high-latency (WAN) links. It improves TCP throughput by orders of magnitude over high delay-bandwidth links. It also keeps windows small for low-bandwidth and low-latency connections so they don't consume unnecessary amounts of memory.
There are two versions of DRS. The first is implemented in the Linux kernel and the second is implemented in user-space applications.
DRS Kernel-Space Implementation
The modifications to the Linux kernel are being distributed as a patch file under the GNU General Public License. If the GPL is too restrictive, please contact us.
Once you have the source for correct version of the Linux kernel, download and apply the appropriate DRS patch file for your kernel. (The patch may also be applied against a different version of the kernel, but you may have to patch some of the kernel files by hand.) For a synopsis of how to install the DRS kernel patch and rebuild you kernel, see the DRS Installation Instructions for help. We regret that we are unable to assist with DRS installation questions. However, we would like to know if you find (and fix) a bug or make enhancements so they can be incorporated into future releases.
DRS User-Space Applications
For some, installing DRS in the kernel can be a little daunting. As an interim solution until vendors install DRS by default, we are also providing DRS in user-space applications.
Unlike the kernel version of DRS, the information necessary to implement DRS is not directly available to user-space applications and hence must be synthesized. As a result, DRS in kernel-space performs better than DRS in user-space. Even so, DRS in user-space provides dramatic performance improvement over traditional applications.
The next disadvantage of DRS in user-space is that each application (or set of related applications) require modification to implement the DRS algorithm. The following applications have been modified to support DRS.
- FTP client and server (Coming soon.)
Besides the applications themselves, the maximum buffer space Linux allows will need to be increased so DRS has room to work.
DRS Kernel-Space Installation Instructions
- Download an official kernel release from www.kernel.org or your favorite mirror. (Source packages from some Linux distributions, such as Debian, also work.)
- Uncompress and untar the kernel source in an appropriate location (usually /usr/src).
- Download the appropriate DRS patch.
- Patch the kernel by entering the kernel source directory and typing the command
patch -p1 < [path to DRS
.
patch] - Configure, build and install the kernel in the usual way. (For an example, see the MAGNET distribution page.)
- Increase the maximum buffer limits so DRS has room to work.
Tuning Linux Buffer Limits
Besides installing DRS, you'll want to tune the maximum buffer sizes. (Do not change the minimum and default sizes.) This is done by writing to the /proc file system as root:
echo 6553500 > /proc/sys/net/core/wmem_max
echo 6553500 > /proc/sys/net/core/rmem_max
echo 4096 16384 6553500 > /proc/sys/net/ipv4/tcp_wmem
echo 8192 87380 6553500 > /proc/sys/net/ipv4/tcp_rmem
echo 6553500 6653500 6753500 > /proc/sys/net/ipv4/tcp_mem