Increasing TCP TSO size support
- Reply: Drew Gallatin: "Re: Increasing TCP TSO size support"
- Reply: Rick Macklem : "Re: Increasing TCP TSO size support"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Fri, 02 Feb 2024 09:21:46 UTC
Hi, We have run a test for a RPC workload with 1MB IO sizes, and collected the tcp_default_output() len(gth) during the first pass in the output loop. In such a scenario, where the application frequently introduces small pauses (since the next large IO is only sent after the corresponding request from the client has been received and processed) between sending additional data, the current TSO limit of 64kB TSO maximum (45*1448 in effect) requires multiple passes in the output routine to send all the allowable (cwnd limited) data. I'll try to get a data collection with better granulariy above 90 000 bytes - but even here the average strongly indicates that a majority of transmission opportunities are in the 512 kB area - probably also having to do with LRO and ACK thinning effects by the client. With other words, the tcp output has to run about 9 times with TSO, to transmit all elegible data - increasing the FreeBSD supported maximum TSO size to what current hardware could handle (256kB..1MB) would reduce the CPU burden here. Is increasing the sofware supported TSO size to allow for what the NICs could nowadays do something anyone apart from us would be interested in (in particular, those who work with the drivers)? Best regards, Richard tso size (transmissions < 1448 would not be accounted here at all) # count <1000 0 <2000 23 <3000 111 <4000 40 <5000 30 <7000 14 <8000 134 <9000 442 <10000 9396 <20000 46227 <30000 25646 <40000 33060 <60000 23162 <70000 24368 <80000 19772 <90000 40101 >=90000 75384169 Average: 578844.44