HomeFreeBSD

MFC 295740,295741,295742

Description

MFC 295740,295741,295742

295740

hyperv/hn: Set the TCP ACK/data segment aggregation limit

Set TCP ACK append limit to 1, i.e. aggregate 2 ACKs at most.  Aggregating
anything more than 2 hurts TCP sending performance in hyperv.  This
significantly improves the TCP sending performance when the number of
concurrent connetion is low (2~8).  And it greatly stabilizes the TCP
sending performance in other cases.

Set TCP data segments aggregation length limit to 37500.  Without this
limitation, hn(4) could aggregate ~45 TCP data segments for each
connection (even at 64 or more connections) before dispatching them to
socket code; large aggregation slows down ACK sending and eventually
hurts/destabilizes TCP reception performance.  This setting stabilizes
and improves TCP reception performance for >4 concurrent connections
significantly.

Make them sysctls so they could be adjusted.

Reviewed by:        adrian, gallatin (previous version), hselasky (previous version)
Approved by:        adrian (mentor)
MFC after:  1 week
Sponsored by:       Microsoft OSTC
Differential Revision:      https://reviews.freebsd.org/D5185

295741

hyperv/hn: Add option to allow sharing TX taskq between hn instances

It is off by default.  This eases further experimenting on this driver.

Reviewed by:        adrian
Approved by:        adrian (mentor)
MFC after:  1 week
Sponsored by:       Microsoft OSTC
Differential Revision:      https://reviews.freebsd.org/D5272

295742

hyperv/hn: Always do transmission scheduling.

This one gives the best performance so far.

Reviewed by:        adrian
Approved by:        adrian (mentor)
MFC after:  1 week
Sponsored by:       Microsoft OSTC
Differential Revision:      https://reviews.freebsd.org/D5273

Details

Provenance
sepheAuthored on
Parents
rS301859: MFC 295307,295308,295309,295606
Branches
Unknown
Tags
Unknown