On Tue, 21 Feb 2012, Rolf vandeVaart wrote:

I think I am OK with this.

Alternatively, you could have done something like is done in the TCP BTL where 
the payload and header are added together for the frag size?
To state more clearly, I was trying to say you could do something similar to 
what is done at line 1015 in btl_tcp_component.c and ended up with the same 
results?

That will more or less work for my current use case (I found those examples 
this morning). I would have to pad my fragments to ensure cache line alignment 
(if that ends up being faster for SMSG).

This is just making the payload buffer a different chunk of memory than the 
headers?

Yes.

I am just trying to understand the motivation for the change.

The motivation is to allow the payload to be aligned separately from the 
header. Currently, if I want payload alignment I have to pad the header to get 
the correct alignment on the data.

I think the way you have it is more correct so we can support the case where 
someone specifies the header size and the payload size differently and expects 
the free list code to do the right thing.

This is one of my motivations. When writing the uGNI BTL I expected the free list to do 
the "right thing" and allocate a payload buffer even if I didn't specify an 
mpool.

-Nathan

Reply via email to