[Bloat] SO_SNDBUF and SO_RCVBUF

Rick Jones rick.jones2 at hp.com
Wed Apr 22 12:26:48 PDT 2015


> So it looks like the number you feed it turns into the window size.
>
> A few quick tests with netperf confirm that it is doing something close to
> what I expect but I haven't fired up tcpdump to verify that the window size
> is what I asked for.  netperf does print out values that are 2x what I asked
> for.

It will do that until you start asking for (2x?) more than 
net.core.[rw]mem_max.  At that point they will be clipped.

> Yuck.  (That's Yuck at Linux, not netperf.)

No worries :)

That bit of behaviour frustrated me and my BSD-stack upbringing for 
years, along with the auto-tuning.  Finally I ended-up adding support 
for reporting three different socket buffer values via the "omni" output 
selectors:

1) the size requested by the user via the command line
2) the size initially after the data socket was created (and any 
setsockopts triggered by the command line)
3) the size at the end of the test

The classic netperf tests have always reported 2.  If you use the omni 
tests directly (-t omni) they will report 3.  You can always use the 
test-specific -o, -O or -k option to emit each specifically.  For both 
SO_[SND|RCV]BUF locally and remote:


raj at tardy:~/netperf2_trunk$ netperf -- -O \? | grep SIZE
LSS_SIZE_REQ
LSS_SIZE
LSS_SIZE_END
LSR_SIZE_REQ
LSR_SIZE
LSR_SIZE_END
RSS_SIZE_REQ
RSS_SIZE
RSS_SIZE_END
RSR_SIZE_REQ
RSR_SIZE
RSR_SIZE_END
...

happy benchmarking,

rick jones


More information about the Bloat mailing list