[Pvfs2-developers] concurrent sms

Rob Ross rross at mcs.anl.gov
Wed Aug 16 11:23:52 EDT 2006


Thanks for the update Walt. We eagerly await word that we should start 
playing!

Rob

Walter B. Ligon III wrote:
> Sam,  all of the code is "written" but I am debugging it as we speak.
> There will probably be some more interim checkins on the branch today,
> but until my testing is done I won't start merging with the main branch.
> Obviously I don't want to be too far from end end when I start that.
> 
> Here is some test code I wrote yesterday to start parallel children.  I
> have inserted it into the server's get_config SM and it doesn't do 
> anything but print some debug info, but it should be instructional.
> 
> Focus on state start_pjmp and the action functions start_pjmp_action
> and end_pjmp_action
> 
> /********************************************************************/
> 
> machine pvfs2_get_config_sm(prelude, init, final_response, cleanup
>         ,start_pjmp, end_pjmp)
> {
>         state prelude
>         {
>                 jump pvfs2_prelude_sm;
>                 success => start_pjmp;
>                 default => final_response;
>         }
> 
> 
>         state start_pjmp
>         {
>             pjmp start_pjmp_action
>             {
>                 1 => pvfs2_server_test_pjmp_sm;
>             }
>             default => end_pjmp;
>         }
> 
> 
>         state end_pjmp
>         {
>             run end_pjmp_action;
>             default => init;
>         }
> 
> 
>         state init
>         {
>                 run getconfig_init;
>                 default => final_response;
>         }
> 
> 
>         ... /* rest of get_config states are here */
> }
> 
> 
> machine pvfs2_server_test_pjmp_sm(st1, st2, st3)
> {
>     state st1
>     {
>         run st1_action;
>         default => st2;
>     }
> 
> 
>     state st2
>     {
>         run st2_action;
>         default => st3;
>     }
> 
> 
>     state st3
>     {
>         run st3_action;
>         default => terminate;
>     }
> 
> 
> }
> 
> 
> %%
> 
> 
> /*******************/
> static PINT_sm_action start_pjmp_action(
>     struct PINT_smcb *smcb, job_status_s *js_p)
> {
>     int i;
>     for (i = 0; i < 4; i++)
>     {
>         struct PINT_server_op *s_op = malloc(sizeof(struct 
> PINT_server_op));
>         s_op->op = i; /* used in print to ID task */
>         PINT_sm_push_frame(smcb, 1, s_op);
>     }
>     return SM_ACTION_DEFERRED;
> }
> 
> 
> static PINT_sm_action end_pjmp_action(
>     struct PINT_smcb *smcb, job_status_s *js_p)
> {
>     int i;
>     for (i = 0; i < 4; i++)
>     {
>         struct PINT_server_op *s_op = PINT_sm_pop_frame(smcb);
>         free(s_op);
>     }
>     return SM_ACTION_COMPLETE;
> }
> 
> 
> static PINT_sm_action st1_action(
>     struct PINT_smcb *smcb, job_status_s *js_p)
> {
>     struct PINT_server_op *s_op = PINT_sm_frame(smcb, PINT_FRAME_CURRENT);
>     fprintf("RUNNING ACTION: ST1 TASK: T%d\n", s_op->op);
>     return SM_ACTION_COMPLETE;
> }
> 
> ... /* st2_action and st3_action are the same */
> 
> /************************/
> 
> /* rest of get_config action functions are here */
> 
> /**************************************************************************/ 
> 
> 
> I'm sure you'll have questions, so take a look and fire away
> 
> Walt
> 
> Sam Lang wrote:
>>
>> Hi Walt,
>>
>> I've started looking at the concurrent state machine code in your  
>> branch, to see what it would be like to write a state machine that  
>> does some concurrent child state machines.  It looks like most of the  
>> framework is in place, but I couldn't find any examples of concurrent  
>> state machines in action.  Could you give a basic example of setting  
>> up a concurrent state machine?
>>
>> Also, I noticed that PINT_sm_start_child_frames has:
>>
>>     for(i = smcb->framebaseptr; i < smcb->framebaseptr; i++)
>>
>> I think this must be a bug preventing child state machines from  
>> actually starting.  Do you know at what point this stuff will be  
>> ready to be merged to the trunk?
>>
>> Thanks,
>>
>> -sam
>> _______________________________________________
>> 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