David S. Miller wrote:
From: Anton Blanchard <anton@xxxxxxxxx>
Date: Sat, 14 Jun 2003 08:38:41 +1000
This is only worth it if most packets will have the same sized header.
Networking guys: is this a valid assumption?
Not really... one retransmit and the TCP header size grows
due to the SACK options.
Yep, but it really doesn't have too many options (sic pun ;))..
i.e. The max the options can add are 40 bytes, speaking
strictly TCP, not IP. This really should fit into one extra
cacheline for most architectures, at most, right?
[The TCP options have to end and the data start on a 32
bit boundary. For established connections, we're
principally talking SACK options and v. likely timestamp.
(Ignoring those egregious benchmark guys who turn everything
useful off ;)). SYNs wont have data in any case.
So its going to grow by (SACK = 8*n + 2)+ (TS = 10) bytes,
with n = number of sack options, with a max of n = 3
if timestamps are enabled. Adding that to the standard
length of 20 bytes, the total len of a TCP header is thus
very likely one of:
20 + [ 0 | 20 |32 | 36] bytes
= 20 | 40 | 52 | 56 bytes.
If cachelines were 64 bytes, we wouldnt be wasting a
whole lot of space if we aligned data start or some
other scheme as was suggested. Even given the larger
cachelines, it might be worth it, or is this totally
not an option (cough,sic ;))?
I find it truly bletcherous what you're trying to do here.