Hi Julian,

First off, I'm sorry for not responding to this sooner. I know you guys want to use the request id and other hints in your work, and having to deal with a separate branch all the time can be a pain. That being said, we would like to merge in this code to the trunk, and hope to do that soon. I still want to iterate on a few things though:

* After some discussion with RobR, I think we'd prefer a little different hint structure:

typedef struct
{
        char * type; /* null terminated */
        char * hint;
        int length;
} PVFS_hint;

This essentially replaces the type with a string, allowing us to keep the external interfaces (and types) relatively simple and static (not changing). With an enum for the types, the external interfaces (namely the enum) changes everytime someone adds a new hint.

Internally, having the enum of hints is fine, and converting to that format seems appropriate for sending the hints over the wire.

Also, I would prefer to see each of the system interfaces take an array of hints (pointer to PVFS_hint and length) instead of the linked list structure it is now. That would mean that the caller has to allocate the array himself instead of calling _add_hint, but I'm ok with that, esp. since for just one hint (most likely case) we can keep it on the stack instead of the heap.

* All the PINT_* functions should be moved to internal headers or remove altogether. In fact, with just the type definition in the hints header, it probably makes sense to move that to pvfs2-types.h.

* I don't like the PINT_hint_add_environment_hints function. I can't think of any reasonable use cases where someone would want to set hints with environment variables, and it seems like adding it as a feature will allow users to shoot themselves in the foot.

In order to limit the length of the hints in the server request, can we only add the "well known" hints to the request? Well known hints would be the ones defined in the internal enum.

* The request id format you're using seems rather inefficient. I'd prefer to see it be a 64 or 128 bit value, and have client-core just generate something like a uuid. It might be nice to have a util function that would generate the id that could be passed to the different system interfaces:

PVFS_hint_generate(const char * type, PVFS_hint * hint);

It seems like the server should be able to treat the request id as completely opaque, allowing us to change it later if necessary. Are you adding the hostname and pid to the event logs? Would it be possible/difficult to extract that info from the id in the logfile at display time? I'm on the fence on this though...maybe we should pick a format and stick with it?

* The code in your branch adds hint parameters to all the job, trove, bmi and flow calls. I'm still in favor of associating the hint with the job/trove/bmi ids in separate event calls. Actually it looks like none of the bmi stuff uses the hints at all (only trove and flow)?

-sam

On Sep 7, 2006, at 2:06 PM, Julian Martin Kunkel wrote:

Hi guys,
I want to bother you again with the hint stuff ;-)
As I regard only Pete said something to the hints so far. So I have no idea if
you like it or not. Propably you want (me) to modify it...

Pete mentioned that it is not good to add the hints to all operations, e.g.
the pvfs2 nope operation. I think it is good to have a hint for all
operations to provide the same mechanism to all ops, because we do not know
what researchers intend to do with it.
With the request ID I think I proved that such a mechanism could be used to
provide a new optional functionality.

Summary of the outstanding questions:
-Should all operations provide a hint ? If no, which should provide it ? -Should the hint be given to the job / flow / trove layer. As a general
mechanism, which most people wanted to have, I think yes.
It might not be so interesting for BMI, also there are multiple
implementations already available.
-Is the hint mechanism provided ok ?

Have a nice day,
julian

---
Darth Vader:
        The force is with you young Skywalker, but you are
        not a Jedi yet.
_______________________________________________
Pvfs2-developers mailing list
Pvfs2-developers@beowulf-underground.org
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers


_______________________________________________
Pvfs2-developers mailing list
Pvfs2-developers@beowulf-underground.org
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

Reply via email to