Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [ptp-dev] on moab integration

Greg
There is no support for a callback facility within the LoadLeveler API. 
The only mechanism supported is direct query for the needed information, 
where it is up to the API user to determine an appropriate query/polling 
mechanism to get the data.
Dave



Greg Watson <g.watson@xxxxxxxxxxxx> 
Sent by: ptp-dev-bounces@xxxxxxxxxxx
07/24/2007 06:13 PM
Please respond to
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>


To
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>
cc

Subject
Re: [ptp-dev] on moab integration






Dave,

Does that mean that the LoadLeveler API only supports polling, not 
callback? I guess this is going to be an issue with other job schedulers 
too.

Greg

On Jul 24, 2007, at 3:55 PM, Dave Wootton wrote:

Also, since the process state model for PE is so simple, we don't maintain 
any process state within the proxy to try to optimize the events sent to 
teh PTP gui.

We're also working on an implementation to support LoadLeveler (IBM batch 
job scheduler). In that model, LoadLeveler provides a C programming API 
which allows is to query many attributes of the cluster LoadLeveler is 
running on, including node state, job state, etc. as well as to submit 
jobs. Our implementation will use that API rather than using LoadLeveler 
commands to retrieve the data. For the LoadLeveler implementation, since 
the run enviroment and status tracking is more complex, we will be 
maintaining state within the proxy so we only send events for changes 
ratheer than sending complete state each time we want to update the GUI. 
We also need to be concerned with polling interval in that case, both due 
to concerns about CPU load on the proxy node as well as overloading the 
LoadLeveler daemons with status requests too frequently.
Dave
<graycol.gif>Dave Wootton/Poughkeepsie/IBM@IBMUS


Dave Wootton/Poughkeepsie/IBM@IBMUS 
Sent by: ptp-dev-bounces@xxxxxxxxxxx 
07/24/2007 05:45 PM 

Please respond to
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>



<ecblank.gif>
To
<ecblank.gif>
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>
<ecblank.gif>
cc
<ecblank.gif>
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>, 
ptp-dev-bounces@xxxxxxxxxxx, "Canon, Richard Shane" <canonrs@xxxxxxxx>
<ecblank.gif>
Subject
<ecblank.gif>
Re: [ptp-dev] on moab integration

<ecblank.gif>
<ecblank.gif>


The Parallel Environment (PE) case is pretty simple since there is no 
programming interface for invoking PE applications and no methods to query 
status. When a user invokes a PE application from PTP, the proxy is sent a 
run command with PE invocation parameters as arguments to the run command. 
The proxy issues a fork and sets up the application's environment 
variables using the arguments from the run command and then invokes poe 
via exec(). (poe is the master process which is responsible for setting up 
and invoking all the tasks of the parallel application). 

At the point the proxy invokes the poe executable, it does not know 
anything about the job other than the pid of the poe process. So the proxy 
starts a thread whose only purpose is to watch for a file generated by the 
poe process that has the mapping of application tasks to hostname/pid 
pairs. Once this thread has the mapping file, it sends events to the PTP 
gui notifying it of the existence of the processes (tasks) and also that 
the job is now running.

The proxy has a thread whose only purpose is to watch for process 
termination of any child process of the proxy by issuing waitpid() with 
the W_NOHANG flag set. The only processes detected by this polling loop 
are the poe processes started by the proxy. When a poe process terminates, 
the proxt sents a job terminated event to the PTP GUI.

In the PE execution model, any application output written to stdout or 
stderr is captured by the PE runtime and sent to te poe process. The poe 
process simply echoes that output to its stdout and stderr file 
descriptore. For PTP, since the poe process is fork/execed by the proxy, 
at the point where the fork is issued, I set up pipe pairs for stdout and 
stderr and capture poe stdio that way. I register the proxy's pipe handles 
to the select() listening loop set up at proxy startup, and as stdio data 
becomes available, the proxy generates the events to send that data to the 
PTP gui. I also have an option to redirect stdout/stderr to files avoiding 
sending data to the PTP gui.

In this model I have two polling loops. The first is within the thread 
watching for the poe process to generate the task map file, and is 
normally a short-lived polling loop. The second polling loop is in the 
thread watching for poe process termination. In both cases, I sleep a few 
seconds before iterating the loop. I don't consider either of these 
polling loops to be heavy CPU users since the processing within these 
loops is fairly simple.

That's the basic concept. Let me know if you have questions.

Dave
<graycol.gif>Greg Watson <g.watson@xxxxxxxxxxxx>

Greg Watson <g.watson@xxxxxxxxxxxx> 
Sent by: ptp-dev-bounces@xxxxxxxxxxx 
07/24/2007 02:35 PM 


Please respond to
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>


<ecblank.gif>
To
<ecblank.gif>
Parallel Tools Platform general developers <ptp-dev@xxxxxxxxxxx>
<ecblank.gif>
cc
<ecblank.gif>
"Canon, Richard Shane" <canonrs@xxxxxxxx>
<ecblank.gif>
Subject
<ecblank.gif>
Re: [ptp-dev] on moab integration

<ecblank.gif>
<ecblank.gif>


Feiyi,

On Jul 24, 2007, at 11:54 AM, Feiyi Wang wrote:

> hi, folks -
>
> Moab document says it can interface with both java and c, but  
> looking into the API, I have two concerns:
>
> - It doesn't have callback function to update node and job status,  
> meaning if I want to update eclipse front, I have to probe  
> periodically.
> Is orte actively updating the front? how does it handle this?

ORTE gets it's information via callbacks that are generated only when  
state changes occur, which is much more efficient than polling. I'm  
not sure what Dave is doing for the PE case, but he might want to  
comment also.

Polling would probably be ok as long as you keep the frequency fairly  
low. This is going to be a tradeoff with the responsiveness you want  
to deliver to the user. You should also keep a snapshot of the state  
internally in your proxy so that you only need to send differences to  
Eclipse. That way you'll be able to minimize the load on Eclipse.

Does Moab have a tool to monitor status? How does that work?

>
> - It is strange that I couldn't find API/structure to query system  
> resource. Most API documented there are job related. One Moab  
> developer suggested me to use their so-called "XML api", some C  
> function will take a XML string, and return XML result, the same as  
> you would get from their command line tool.
>
> The issue with getting XML string *not* C structure is, I need to  
> re-parse the result and set up the correct structure again. As a  
> side note, these returned xml string can be very very large:
>
> For example, on ORNL jaguar system with over 11000 nodes, to  
> implement get_node_attributes(), a query to system yields 6.8M XML  
> string, the worst of it is, *a single string* - so far it render  
> Eclipse, Emacs, Gedit not responsive anymore when trying to load  
> it. Even if I parse it right eventually, it feels so ugly, do you  
> folks see this is a long term solution?

It sounds like this will generate a lot of overhead just parsing the  
string every time. Is there any way to only generate differences or  
do you just get a full dump every time?

You're going to be restricted by whatever API Moab provides. If it  
proves unworkable, then getting Moab to add a better interface might  
be one option.

Greg

>

_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev
<2F090181.gif>_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev

<graycol.gif><pic09874.gif><ecblank.gif><2F090181.gif>_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev
_______________________________________________
ptp-dev mailing list
ptp-dev@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/ptp-dev




Back to the top