I started making the changes to the distribution code and PVFS_sys_dist_setparam call that I described here:

http://www.beowulf-underground.org/pipermail/pvfs2-developers/2007- March/003223.html

But remembered that we had talked about getting this interface right in the first place back in October of 2006. There was a long thread about distributions and server mappings and interfaces:

http://www.beowulf-underground.org/pipermail/pvfs2-developers/2006- October/002715.html

I think we came to some conclusions and consensus, but nothing ever happened with it.

I'll try to summarize:

* Heidelberg has a need to be able to specify the exact IO servers in a distribution (for migration IIRC). As I understand it, they are currently doing this with hints, but Julian can correct me. They would prefer a hint structure that is essentially a string blob in a well known format.

* Most (all?) of us agree that adding a hint parameter to the system interfaces is a good idea, but the distribution should continue to remain separate, since invalid dist parameter values can't just be ignored.

* Specific server lists should be allowed to be set on a distribution as a parameter. Distributions can choose to accept or reject the parameter, but the name of the parameter should be consistent over all distributions. This conflicts with that more recent thread where I suggested the setparam key/value arguments be replaced with a big setparams void pointer that takes the struct of parameters for that specific distribution. So essentially, instead of:

uint64_t strip_size;
PVFS_dist_server_map server_map;

server_map.length = 4;
server_map.servers = ...;

PVFS_sys_dist_setparam(dist, "io-server-mapping", &server_map);

strip_size = 1024;

PVFS_sys_dist_setparam(dist, "strip_size", &strip_size);


we would have:

struct PVFS_simple_stripe_params_s ss_params;
PVFS_sys_dist_getparam(dist, &ss_params);

ss_params.server_map.length = 4;
ss_params.server_map.servers = ....;
ss_params.strip_size = 1024;

PVFS_sys_dist_setparam(dist, &ss_params);

The problem I see here is that we were beginning to define distribution parameters that were generic over all distributions, and the same code that set the param for different distributions would just happened to work because of our run-time reflection. We remove the laziness with this new interface, since the specific distribution param struct must be declared and its fields accessed. Does that matter to anyone?

Thoughts on this?

-sam
_______________________________________________
Pvfs2-developers mailing list
[email protected]
http://www.beowulf-underground.org/mailman/listinfo/pvfs2-developers

Reply via email to