Paul Durrant wrote: > Kacheong Poon wrote: >> Andrew Gallatin wrote: >> >>> 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 >> > > The DMA segment sizes (which is what I assume this list is showing) are
Yes. > going to pretty arbitrary I would have thought since they will depend on > the write sizes issued by the app., the alignment of the data block the > copyin() goes to (because of page boundaries) and the ack intervals from > the other end of the link. > > Paul Allocb ends up with buffers of somewhat random physical size/aligment. On other OSes, (freebsd, linux) transmits are copied into buffers which are nicely aligned to page boundaries, and the DMA descriptor chains may have tiny segments at the front or rear, but never in the middle, as seems to be the case in Solaris. I'm not sure what the problem really is. Perhaps it is because allocb allocates things with a general purpose allocator which does not care about physical alignment. BTW, could somebody explain the rationale for the allocb dblk_sizes[]? For example, why 3856 and not 4096? Drew _______________________________________________ networking-discuss mailing list [email protected]
