John-Mark,

I'm going to rearrange the conversation a bit in the quotes below:


On 8/26/15 3:32 PM, John-Mark Gurney wrote:
So, I looked at what getsockopt SO_RCVBUF returns, and it returns:
                 case SO_RCVBUF:
                         optval = so->so_rcv.sb_hiwat;

Which is NOT S-BMAX, so it looks like OpenSSH only ever gets 66052 bytes
for the buffer...

I believe that explains everything we are seeing. HPN developers thought SO_RCVBUF would return S-BMAX but it instead returns S-HIWA.

If it's decided to base it's waiting for ack on SO_RCVBUF, then this
is probably where the issue is...

Try setting HPNBufferSize to something resonably large, like 1MB, or
above your bandwidth-delay product to see if this will make a difference..
Per:
   Conditions: HPNBufferSize SET, TCPRcvBufPoll enabled, TCPRcvBuf NOT Set
   Result: HPN Buffer Size = grows to HPNBufferSize
     The buffer will grow up to the maximum size specified here.


Setting HPNBufferSize to 1 MB does not change S-BCNT which remains stuck at ~60KB. Although I might not necessarily expect a change. From README.hpn:

HPNBufferSize: This is the default buffer size the HPN functionality uses when interacting with non-HPN SSH installations.

It would be interesting to know how long from the read of stdin (and is
it really reading stdin in 4k blocks?  If so, that should be fixed)
to the write out the socket... Basicly, how long does it take to encrypt
the data...

Note in the above the blocking call to select at time 6.592065 that
takes ~0.1 second.  This is the reason my connection is slow.  The
content appears to be encrypted... I presume it's an application-level
ssh ack.

I posted the in-context kdump at:
 https://www.stankevitz.com/ssh-ktrace.txt

stdin is read in 4k blocks... but each "cycle" reads 3 of these blocks. I define as "cycle" as the period beginning and ending at a 0.1 second select(2) sleep.

Looks like encryption of a 4KB block takes 10 microseconds, which means: for every 0.1 seconds in select(2), .000030 seconds are encrypting.

net.inet.tcp.sendspace: 32768
net.inet.tcp.recvspace: 65536

Try increasing these and reporting back...  the buf_auto should override
those, but this may be limiting it...

Okay.  Now we're getting somewhere.

Increase sendspace on "sending client": no change

Increase recvspace on "sending client": no change

Increase sendspace on "receiving server": no change

Increase recvspace on "receiving server": sending client's S-BCNT increases proportionally!

I'm going to try Kurts parameters now...

Chris
_______________________________________________
freebsd-net@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to