mds@gbnet.net (mark) writes:
These two do what?
ndd -set /dev/ge adv_pauseTX 0 ndd -set /dev/ge adv_pauseRX 0
Disable Link Level Flow Control. According to the docs, you shouldn't need to muck with them (TX defaults to 0, RX to 1) unless you're silly and aren't using your Gb card in the 66Mhz slot. I think the concept is of LLFC is silly when you're using only TCP like we are, hence the forcibly disabling.
Much bigger buffers than I got for 100Mb/s networks, makes sense. Have you found these value by experiment or otherwise?
ndd -set /dev/tcp tcp_recv_hiwat 262144 ndd -set /dev/tcp tcp_xmit_hiwat 262144
Honest truth is, I can't remember. I think it was a combination of chats with sun, and our own experimenting.
How come this is set so low?
ndd -set /dev/tcp tcp_xmit_lowat 2048
That's actually the default on 2.6, maybe it's a hold over from earlier OS revs?
How do each of these three things affect things?
ndd -set /dev/tcp tcp_wscale_always 1
This enables the wscale option. ;) Essentially it allows the window size to exceed the original TCP default of 64k. I suspect it also puts a minimum size of 64k on the window size as a side effect.
ndd -set /dev/tcp tcp_tstamp_always 1
This places a (sender determined) timestamp in each packet, which is simply returned to it by the receiver in the ACK. The result of this is that you get more accurate RTT calculations. This means fewer unnecessary retransmits, and better congestion control in fat pipes.
ndd -set /dev/tcp tcp_rexmit_interval_max 60000
I'm not sure why this is set to what it is (it's 1/4 of the default), we put it in at Sun's recommendation.
Docs say:
If you are running your Solaris 2.6 system with a large TCP window and you experience slowdowns during high network traffic, you should decrease the TCP default maximum retransmission timeout interval variable
Which doesn't help much. :)
Darrell