There is a performance throttling code in mir_wput() associated
with the mir_hold_inbound field. When RPC is flow-controled downstream
it will hold incoming request until the flow opens up. With gigabit
networking and current tcp default parameters we observe a 20%
degradation to simple NFS throughput experiments described here:
http://www-icnc.france/~rbourbon/HERMES/Report_sinkfs.txt
(also in attachment)
David Robinson notes that
"the purpose of the RPC output throttling the input,
it is done solely to prevent a bad client from issuing too
many read requests without consuming the replies and
exhausting the server's kernel memory."
xxxxx@xxxxx.com 2005-1-12 15:41:09 GMT
Work Around
ndd -set /dev/tcp tcp_xmit_hiwat 2097152
ndd -set /dev/tcp tcp_xmit_lowat 1048576
This insure that the request would only be held once 2G
are in the xmit queue, and would be release when the xmit
queue drops below 1G. This leaves NFS plenty of time to form
response before the xmit queue fully drains.
xxxxx@xxxxx.com 2005-1-12 15:41:10 GMT