I'm developing an application where, to satisfy the performance requirements, tuning of low-level network stuff (such as TCP window size etc) seems to be required.
I found the magnitude of my knowledge to be a bit better than "there's TCP and there's UDP", which is far from enough for this task.
开发者_如何学JAVAWhat resources might I study to get a better knowledge of which aspects of TCP influence which performance characteristics in which usage scenarios (for example, how to decrease latency while transmitting 100kb packets to 1000 clients simultaneously on a 10gbit LAN), etc.?
What tools might help me? (I already know about Wireshark, but most probably I am not using it to its full potential)
First understand what you're doing:
- http://en.wikipedia.org/wiki/Transmission_Control_Protocol
- http://www.tcpipguide.com/free/t_TCPWindowSizeAdjustmentandFlowControl.htm
Then understand how to look at what you're about to change:
- http://www.wireshark.org/
- http://wiki.wireshark.org/TCP_Analyze_Sequence_Numbers
- http://www.microsoft.com/downloads/details.aspx?familyid=983b941d-06cb-4658-b7f6-3088333d062f&displaylang=en
Then understand how to change things:
- http://msdn.microsoft.com/en-us/library/ms819736.aspx
- http://blogs.msdn.com/b/wndp/archive/2007/07/05/receive-window-auto-tuning-on-vista.aspx
Since you're currently on a windows platform and you mention that you're "developing an application"... You probably also want to know about I/O Completion Ports and how you maximise data flow whilst conserving server resources using write completion driven flow control. I've written about these quite a bit and the last link is a link to my free high performance C++ client/server framework which may give you some pointers as to how to use IOCP efficiently.
- http://www.lenholgate.com/blog/2005/11/windows-tcpip-server-performance.html
- http://www.lenholgate.com/blog/2008/07/write-completion-flow-control.html
- http://www.serverframework.com/products---the-free-framework.html
And google is your friend...
精彩评论