Getting/Forcing Greater than 4KB Buffer Allocations

Scott Long scottl at samsco.org
Sun Jul 22 02:14:50 UTC 2007


John-Mark Gurney wrote:

> Scott Long wrote this message on Thu, Jul 19, 2007 at 00:56 -0400:
> 
>>1Gb and 10Gb adapters.  The question I have is whether this new back-end
>>should be accessible directly through yet another bus_dmamap_load_foo
>>variant that the drivers need to know specifically about, or indirectly
>>and automatically via the existing bus_dmamap_load_foo variants.  The
>>tradeoff is further API pollution vs the opportunity for even more
>>efficiency through no indirect function calls and no cache misses from
>>accessing the busdma tag.  I don't like API pollution since it makes it
>>harder to maintain code, but the opportunity for the best performance
>>possible is also appealing.
> 
> 
> My vote would be to keep the existing api, and add a flag to the tag
> to select which backend to use...
> 

The potential is to avoid cache line misses by disregarding the tag 
entirely.  Drew has a prototype that shows a very good improvement from
this.  The alternative approach requires tag accesses, but can easily 
select an appropriate back-end automatically.  The tag fields can 
probably be rearranged so that only a single cache line is needed.  If 
it were possible to give a prefetching hint, it would be a moot point, 
but I don't think that it is in this case.

Scott



More information about the freebsd-current mailing list