Difference between revisions of "Cluster:LowLatency"
Jump to navigation
Jump to search
(30 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
− | ==Low | + | ==Internal Links== |
+ | * [[Cluster:LLK_Poster_Structure|Poster Structure]] (Moved to CVS/LaTeX) | ||
+ | * [[llk-packet-diagram|Packet Diagram]] | ||
+ | * [[Running Timer Code]] | ||
+ | * [[llk QA]] | ||
+ | |||
+ | ==The Plan (updated January 28, 2006)== | ||
+ | * Low-level benchmarks are netpipe (TCP) and pacgen (UDP). High level benchmark is MrBayes. Define run parameters for each set. Setup scripts for PBS/Maui to run defined sets. Run on cairo only. | ||
+ | |||
+ | * Formal literature search and review. Use/add to the keywords in llk/poster/abstract.tex. Places to look: | ||
+ | ** Beowulf archives | ||
+ | ** ACM | ||
+ | ** IEEE | ||
+ | ** Citeseer | ||
+ | ** Google Scholar | ||
+ | ** tp_timer | ||
+ | ** NIST | ||
+ | |||
+ | * Test tcp_low_latency - does it work? If so, what does it do _exactly_ | ||
+ | |||
+ | * Show that latency is in the network stack, either by reference or by test (preferrably the former since it will take less time). | ||
+ | |||
+ | ==Notes== | ||
+ | * BibTeX references are in /cluster/project/llk/llk.bib | ||
+ | |||
*Comparisons & Instrumentation | *Comparisons & Instrumentation | ||
Line 9: | Line 33: | ||
***http://user.informatik.uni-goettingen.de/~kperf/ | ***http://user.informatik.uni-goettingen.de/~kperf/ | ||
***http://user.informatik.uni-goettingen.de/~kperf/gaug-ifi-tb-2005-03.pdf | ***http://user.informatik.uni-goettingen.de/~kperf/gaug-ifi-tb-2005-03.pdf | ||
+ | ***http://christian-dickmann.de/telematik/presentation.pdf (their slideshow presentation) | ||
**Comparing while varying link delay times | **Comparing while varying link delay times | ||
Line 17: | Line 42: | ||
***Vegas | ***Vegas | ||
***Binary Increase Congestion Control (BIC) - Default for Linux 2.6 | ***Binary Increase Congestion Control (BIC) - Default for Linux 2.6 | ||
+ | |||
+ | **Lots of discussion | ||
+ | ***http://www.ggf.org/Public_Comment_Docs/Documents/May-2005/draft-ggf-dtrg-survey-1.pdf | ||
+ | ***HS-TCP | ||
+ | ***Scalable TCP | ||
+ | ***FAST TCP | ||
+ | ***BIC & CUBIC | ||
+ | ***Westwood | ||
+ | ***..... | ||
*Misc | *Misc | ||
Line 24: | Line 58: | ||
**Modifying buffer sizes manually | **Modifying buffer sizes manually | ||
***http://proj.sunet.se/E2E/tcptune.html | ***http://proj.sunet.se/E2E/tcptune.html | ||
+ | **Kernel options | ||
+ | ***http://www.lam-mpi.org/MailArchives/lam/2005/01/9529.php | ||
+ | **Default Linux TCP/IP options field contains: | ||
+ | ***Maximum Segment Size(MSS) http://rfc.activedomain.org/0500-0999/rfc0879.html | ||
+ | ***Selective Acknowledgement(Sack) ftp://ftp.isi.edu/in-notes/rfc2018.txt | ||
+ | ***Timestamping http://www.faqs.org/rfcs/rfc1323.html | ||
+ | **opensolaris code | ||
+ | ***http://cvs.opensolaris.org/source/xref/usr/src/uts/common/inet/ | ||
+ | |||
+ | *Low Latency Kernel Option | ||
+ | **net.ipv4.tcp_low_latency sysctl | ||
+ | ***/proc/sys/net/ipv4/tcp_low_latency | ||
+ | **From /usr/src/linux/Documentation/networking/ip-sysctl.txt | ||
+ | tcp_low_latency - BOOLEAN | ||
+ | If set, the TCP stack makes decisions that prefer lower | ||
+ | latency as opposed to higher throughput. By default, this | ||
+ | option is not set meaning that higher throughput is preferred. | ||
+ | An example of an application where this default should be | ||
+ | changed would be a Beowulf compute cluster. | ||
+ | Default: 0 | ||
+ | |||
+ | == Ideas == | ||
+ | |||
+ | * Reduce error checking to improve performance | ||
+ | * Reduce number of memory copies, maybe by not being fully TCP/IP-compliant? | ||
+ | * Look into STP (scheduled transfer protocol) | ||
+ | * Check out the TCP_NODELAY sockopt: | ||
+ | <pre> | ||
+ | if(setsockopt(sockfd, proto->p_proto, TCP_NODELAY, &one, sizeof(one)) < 0) | ||
+ | { | ||
+ | printf("NetPIPE: setsockopt: TCP_NODELAY failed! errno=%d\n", errno); | ||
+ | exit(556); | ||
+ | } | ||
+ | </pre> | ||
+ | http://www.openldap.org/lists/openldap-devel/199907/msg00079.html | ||
+ | |||
+ | ==Links== | ||
+ | *[http://cluster.earlham.edu/bugzilla/buglist.cgi?query_format=specific&order=relevance+desc&bug_status=__open__&product=llk Current LLK bug list] | ||
+ | |||
+ | *[http://www.faqs.org/docs/Linux-HOWTO/Kernel-HOWTO.html Linux Kernel Howto] | ||
+ | *[http://en.tldp.org/LDP/tlk/tlk.html The Linux Kernel Online Book] | ||
+ | *[http://plg.uwaterloo.ca/~itbowman/papers/CS746G-a1.html Conceptual Architecture of the Linux Kernel (paper)] | ||
+ | *[http://www.linuxhq.com/ The Linux Headquarters] | ||
+ | *[http://kernelnewbies.org/ Kernel Newbies] | ||
+ | *[http://www.ee.unimelb.edu.au/staff/lha/Linux_network_stack_walkthrough.html Walkthrough of the 2.4 network stack] | ||
+ | *[http://www.spine-group.org/papers/stack/stack2.6.html 2.6 stack (Italian)] | ||
+ | *[https://svn.gnumonks.org/trunk/doc/packet-journey-2.6.xml 2.6 packet journey (hard to read)] |
Latest revision as of 19:10, 28 January 2006
Internal Links
- Poster Structure (Moved to CVS/LaTeX)
- Packet Diagram
- Running Timer Code
- llk QA
The Plan (updated January 28, 2006)
- Low-level benchmarks are netpipe (TCP) and pacgen (UDP). High level benchmark is MrBayes. Define run parameters for each set. Setup scripts for PBS/Maui to run defined sets. Run on cairo only.
- Formal literature search and review. Use/add to the keywords in llk/poster/abstract.tex. Places to look:
- Beowulf archives
- ACM
- IEEE
- Citeseer
- Google Scholar
- tp_timer
- NIST
- Test tcp_low_latency - does it work? If so, what does it do _exactly_
- Show that latency is in the network stack, either by reference or by test (preferrably the former since it will take less time).
Notes
- BibTeX references are in /cluster/project/llk/llk.bib
- Comparisons & Instrumentation
- Comparison of time between layers in network stack. Patch only for 2.6.9.
- Comparing while varying link delay times
- http://developer.osdl.org/shemminger/LK2004_TCP.pdf
- http://developer.osdl.org/shemminger/LWE2005_TCP.pdf
- Reno - Linux 2.4
- Westwood - Wireless
- Vegas
- Binary Increase Congestion Control (BIC) - Default for Linux 2.6
- Comparing while varying link delay times
- Lots of discussion
- http://www.ggf.org/Public_Comment_Docs/Documents/May-2005/draft-ggf-dtrg-survey-1.pdf
- HS-TCP
- Scalable TCP
- FAST TCP
- BIC & CUBIC
- Westwood
- .....
- Lots of discussion
- Misc
- Dynamic Right Sizing (DRS)
- Window Scaling RFC
- Modifying buffer sizes manually
- Kernel options
- Default Linux TCP/IP options field contains:
- Maximum Segment Size(MSS) http://rfc.activedomain.org/0500-0999/rfc0879.html
- Selective Acknowledgement(Sack) ftp://ftp.isi.edu/in-notes/rfc2018.txt
- Timestamping http://www.faqs.org/rfcs/rfc1323.html
- opensolaris code
- Low Latency Kernel Option
- net.ipv4.tcp_low_latency sysctl
- /proc/sys/net/ipv4/tcp_low_latency
- From /usr/src/linux/Documentation/networking/ip-sysctl.txt
- net.ipv4.tcp_low_latency sysctl
tcp_low_latency - BOOLEAN If set, the TCP stack makes decisions that prefer lower latency as opposed to higher throughput. By default, this option is not set meaning that higher throughput is preferred. An example of an application where this default should be changed would be a Beowulf compute cluster. Default: 0
Ideas
- Reduce error checking to improve performance
- Reduce number of memory copies, maybe by not being fully TCP/IP-compliant?
- Look into STP (scheduled transfer protocol)
- Check out the TCP_NODELAY sockopt:
if(setsockopt(sockfd, proto->p_proto, TCP_NODELAY, &one, sizeof(one)) < 0) { printf("NetPIPE: setsockopt: TCP_NODELAY failed! errno=%d\n", errno); exit(556); }
http://www.openldap.org/lists/openldap-devel/199907/msg00079.html