[Pvfs2-developers] dist_setparam and the lost thread

Sam Lang slang at mcs.anl.gov
Wed Mar 21 18:26:19 EST 2007


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


More information about the Pvfs2-developers mailing list