[Pvfs2-developers] terminating state machines

Walter B. Ligon III walt at clemson.edu
Thu Jul 27 10:45:53 EDT 2006



Phil Carns wrote:
>> I think I'm getting voted down here, so I should probably just  
>> shutup, but I don't think in practice we're going to have that many  
>> child state machines that iterating through the list is at all  
>> costly.  I'm arguing for simpler mechanisms that fit in with the job  
>> subsystem over something more fancy and possibly slightly better  
>> performing.
> 
> 
> Well, as far as the number of SMs goes, I would rather not risk it.  I 
> still hope this is lightweight enough that we could eventually use it in 
> more places that would generate a lot of children (like a re-architected 
> sys-io implementation), though I don't know if that will pan out in 
> practice.  I got bitten by a similar assumption in the flow protocol- it 
> used to track all of its posted operations for testing rather than 
> relying on someone to notify it of completion.  Admittedly the flow 
> protocol is a more obvious case and I should have known better, but at 
> the time it seemed reasonable :)
> 
>>> I think that the way that you describe would work fine too, but it  
>>> would require a little more active work to check the status of the  
>>> array of child SMs and would require more code to keep track of them.
> 
> 
>> Probably a bit more code yes, but it seems cleaner than keeping  
>> around backpointers and checking for parents.  Instead of driving all  
>> state machines from one place, this event notification scheme  
>> essentially replaces the last child state machine with the parent,  
>> which seems like a bit of hack and harder to debug.
> 
> 
> I think I'm lost now.  What do you mean by replace?  The states are 
> still isolated, jobs trigger the transitions, only one state action gets 
> executed at a time, there still may be a time gap between completion of 
> any given child and when the parent picks up processing again, and there 
> are still frames.  I think both approaches will look the same when 
> running unless I missed something.  If Walt puts a longjmp() in there we 
> can both hit him over the head.

What? What?  How else would I do it?  ;-)

> 
> I think having a pointer to the parent actually improves debugability 
> (though I'm not sure this approach actually requires it, all you really 
> need is either a job descriptor or a pointer to a counter).  If I have a 
> state machine that does something bad or gets stuck it would be nice to 
> be able to work backwards to find out who invoked it, without having to 
> search for it in a seperate data structure.
> 
> I don't mean to keep struggling with this issue- I honestly think that 
> both approaches are pretty good, and if Walt implements it the way I 
> think he is going to, then 95% of developers won't notice the difference 
> anyway.  At this point I am mostly hammering away to make sure I am not 
> missing a larger issue...
> 
> -Phil

-- 
Dr. Walter B. Ligon III
Associate Professor
ECE Department
Clemson University


More information about the Pvfs2-developers mailing list