Kacheong Poon wrote:
 > Andrew Gallatin wrote:
 >> Is there any way, short of re-compiling tcp, to set SO_WROFF to zero
 >> (and thereby put the headers in a different mblk for TCP transmits)
 >> via some kind of ndd tunable or mdb procedure?
 >
 >
 > ndd -set /dev/tcp tcp_wroff_xtra 0

Thanks, that worked.

 >
 >> I *think* the offset left at the front of mblks may be causing
 >> a performance problem in my gldv3 driver, and a way to zero
 >> out this offset (so mp->b_rptr in payload segments is right at
 >> the front of dblk) would help me see if this is true.
 >
 >
 > What is your reason behind this guess?

I'm seeing some DMAs with ridiculously small sizes which I think might
be causing poor bus utilization in a scenerio where I'm debugging some
performance problems.  The traffic is TCP, written on a socket by
uperf or netperf.

For a large LSO'ed packet, I'd expect to see a DMA lengths of
something like this (and do, in linux & bsd): 54 (4096-epsilon) 4096
4096 4096 4096 4096 4096 <...> 4096-epsilon

What I actually see on solaris (b86, amd64), even after disabling
tcp_wroff_xtra is something like this: 54 2420 252 3908 4096 188 3908
4096 188 3844 3380

It is like the allocb_cred() used by mcopyinuio() is actually trying
to keep things horribly misaligned on purpose just to spite me :(
Is there anyway to get things more nicely aligned, other than using
sendfile (which works quite well, and produces the DMA pattern I
would expect)

Thanks,

Drew
_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to