[Pvfs2-developers] Hint patch

Sam Lang slang at mcs.anl.gov
Fri Sep 14 20:30:35 EDT 2007


Woops.  Forgot the attachment.

-sam

-------------- next part --------------
A non-text attachment was scrubbed...
Name: hints.patch
Type: application/octet-stream
Size: 501778 bytes
Desc: not available
Url : http://www.beowulf-underground.org/pipermail/pvfs2-developers/attachments/20070914/dcb83556/hints-0001.obj
-------------- next part --------------

On Jun 26, 2007, at 10:27 AM, Sam Lang wrote:

>
> Hi Julian,
>
> Thanks for the patch!  I had a chance to look at it and have some  
> comments.  Overall I think its great.  It provides functionality  
> we've been needing for a while now -- the hints may become a good  
> way to 'stage' parameters that we can make more permanent later  
> on.  I would like to see this added to the tree quickly, and so  
> while my comments may seem nit-picky and anal, I want to make sure  
> it fits in well with the rest of the code.
>
> I think we may need to copy the hint structure within the  
> PVFS_isys_* calls.  We can't guarantee that the caller won't  
> destroy his hints structure after the non-blocking call completes.
>
> I would like to see the encoding and decoding for the  
> 'transfer_to_server' hints be done in binary instead of a string.   
> I'm thinking of something along the lines where a static struct  
> would define encode/decode functions for a request-id hint, that  
> would encode it into a 32bit value, instead of a string.  The  
> decoding could also just be to a 32bit int.  This would require an  
> internal representation of a hint, different from the exposed  
> string form, but would save us shipping a bunch of bytes just  
> because the integer value is large.
>
> Related to that, the hint struct in pvfs2-hint.h doesn't have to be  
> exposed.  Since we're adding hints to the hint list with functions,  
> we could keep the actual fields of the struct internal.  This would  
> allow us to convert a known hint immediately to some internal form.
>
> Your calculating the size of the hints for each request encode,  
> which goes against the pre-calculated request size stuff.  Maybe it  
> makes sense at this point to get rid of that pre-calculated request  
> sizes code, but since its there right now, we should probably  
> follow that model.  That means the max_size_array needs to account  
> for the maximum number of hints possible, and in lebf_initialize  
> you'll have to fill in the hints struct with the maximum possible  
> hints so the size is calculated correctly.  Alternatively, if the  
> hint struct is internal, it could keep track of the number of hints  
> with a separate field, and you could just set that to the max for  
> the initial max size calculation.
>
> The PINT_hint_encode/decode calls and  
> PINT_hint_add_environment_hints should be in an internal header.   
> PINT_hint_calc_size as well.
>
> pvfs2_hint_type should be PVFS_hint_type.
>
> Separate from the patch -- the way MPI hints are converted to PVFS  
> hints seems kludgy.  I would rather move the PVFS_hint_get_type  
> call into the PVFS_add_hint call.  If PVFS doesn't recognize the  
> hint, the PVFS_add_hint call can return an error -PVFS_ENOENT or  
> something, which the MPI code would probably just ignore.  Maybe  
> the ROMIO folks have better ideas for that though.
>
> Thanks again,
>
> -sam
>
> On Jun 19, 2007, at 4:11 PM, Julian Martin Kunkel wrote:
>
>> Hi,
>> I attached a patch which implements the hint mechanism for PVFS2  
>> the way we
>> use it right now.
>> For people not reading all the messages from the mailing list: We  
>> had a
>> discussion about hints a couple of month ago. A hint allows to  
>> transfer a
>> string through the layers to the server and down to Flow/Trove and  
>> parly BMI
>> (where it makes sense).
>>
>> I had to stripe quite some functionality to reduce the patch to  
>> its core just
>> providing the hints (and a handful of really small modifications)  
>> and to
>> merge the functionality to the recent CVS version (with concurrent
>> statemachines).
>> Therefore, I hope I did not break something, basic operations
>> seem to work. Most the time the patch is really straightforward.
>> I left the "Request ID" hint and the kernel code modifications to  
>> transfer it.
>> However, the patch contains a handful redundant variables....
>> Well, I sent it even if it is not perfect to reopen a potential  
>> discussion
>> about the future (and hopefully final) implementation ;-)
>>
>> Best regards,
>> Julian
>> <hint.patch>
>> _______________________________________________
>> Pvfs2-developers mailing list
>> Pvfs2-developers at beowulf-underground.org
>> http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers
>



More information about the Pvfs2-developers mailing list